Workflow

Материал из Intermech Wiki
Перейти к навигации Перейти к поиску

Общие рекомендации

  • После того, как основные шаблоны процессов в соответствии с требованиями вашего предприятия разработаны, можно добавить наиболее часто используемые шаблоны в меню для быстрого запуска всеми пользователями. Данный список шаблонов процессов всегда будет отображаться в подменю "Запустить процесс". Для настройки запустите "Редактор шаблонов процессов" (wfeditor.exe) под SYSDBA и используйте команду в меню "Вид" - "Настройки" - "Меню быстрого запуска процессов".
  • При проектировании условий при помощи множественно-условного перехода рекомендуется использовать переход по ИНАЧЕ, в целях предотвращения "зависания" процесса, если ни одно из условий не выполнится.
  • При задании пользовательской формы на действии "Утверждение", учтите, что такие действия выполняются автоматически, если прикрепленные документы уже подписаны (или, например, ни одного документа не прикреплено). В случае, если на форме нет полей, обязательных для заполнения, она будет пропущена.
  • При возникновении вопросов с процессом иногда целесообразно делать экспорт процесса (для отправки по почте), а не шаблона. В таком случае в файле экспорта будет записана вся история выполнения этого процесса, значения переменных на каждом шаге и т.д.

Сценарии маршрутизатора

Примеры сценариев маршрутизатора

Основная информация и примеры сценариев маршрутизатора находится в разделе Примеры сценариев маршрутизатора. Также могут быть полезны Типовые сценарии отдела внедрения.

Показ окна запуска процесса

Пример показа окна запуска процесса через Search API (vbScript), S4App - интерфейс ITS4App:

'Пример показа окна "Запуск процесса" с уже прикрепленными документами

'function LaunchProcess(SchemeID: Integer; Attachs: OleVariant): Integer; safecall;
'SchemeID - идентификатор шаблона, 0, если требуется выбор пользователя
'Attachs - массив массивов (variant array) с информацией о вложениях
'возвращает идентификатор процесса

'информация о вложении = Array(Kind,ID,VersionID),
'где Kind: 0 - раб.копия, 1 - архивная копия, 4 - изделие
'VersionID требуется только для прикрепления раб. копий

Doc1 = Array(1,56) 'архивная копия, DocID=56
Doc2 = Array(0,92,0) 'рабочая копия, DocID=92, VersionID=0

Attachs = Array(Doc1, Doc2)

SchemeID = 0 'идентификатор шаблона
S4App.LaunchProcess SchemeID, Attachs

Запуск процесса без диалога с пользователем

Данный сценарий VBScript запускает процесс по заданному шаблону, прикрепляет к нему архивную копию заданного документа. Для успешного выполнения примера в шаблоне должна быть определена переменная типа список пользователей "Получатель", Search должен быть запущен до выполнения сценария.

schemeid = 123 'идентификатор шаблона процесса
docid = 30 'идентификатор документа, который нужно прикрепить

Set s4Ap = CreateObject("S4.TS4App")
s4Ap.Login 'Search должен быть запущен!

set router = S4Ap.GetSbServer.GetRouter
set process = router.CreateProcess(schemeid)
process.StartActivity.Attachments.AddLink(docid)

'ищем переменную типа список пользователей и записываем в значение идентификатор "Системного администратора"
'(к переменным с названием латиницей можно обращаться по имени: Uservar.AsString)
set userVar = process.StartActivity.Variables.GetVariableByName("Получатель")

'Формат переменных типа список пользователей: всё хранится в виде
'строки, в формате: в каждой строке (если значений несколько, разделяются переводом каретки #13#10)
'записываются пары чисел через '=' :
'ID=Kind, где ID идентификатор пользователя или группы,
'Kind : 0, если это пользователь, 1 - если это группа.
'Т.е. -1=0 - это Системный администратор.
userVar.asString = "-1=0"

process.Start
process.Name = "Test process name"
msgbox "Процесс запущен (PID=" & process.ID & ")"

Tips & Tricks

  • Если вам нужно, чтобы после сценария выполнение вернулось назад, присвойте
Activity.ExecResult = -1
  • Прикрепить к процессу документ можно при помощи следующих функций интерфейса IAttachmentList (Activity.Attachments):
    • Прикрепить рабочую копию документа - function AddDocumentVersion(aDocID: Integer; aVersionID: Integer): Integer; safecall;
    • Прикрепить архивную (актуальную) копию - function AddLink(aDocID: Integer): Integer; safecall;
Эти функции возвращают индекс добавленного вложения в списке, или -1, если неудачно (например, документ уже прикреплен).
  • Можно изменить глобальные значения по умолчанию "Запрашивать подтверждение при возврате назад" / "Запрашивать подтверждение при отправке дальше" (могут быть перекрыты пользовательской настройкой) Для этого в Search4.ini нужно записать 0/1 в секции:
[Common]
WFDefConfirmSendBack=1
WFDefConfirmSendNext=1
  • Макроподстановки

В полях "Описание" и "Текст сообщения" действий процесса возможно использование макроподстановок вида %ИмяПеременной%. Соответственно, во время выполнения процесса макроподстановка будет заменена значением переменной.

Системные переменные маршрутизатора

Описание системных переменных маршрутизатора