После того как входящий документ рассмотрен руководителем или согласован протокол совещания, выносится резолюция. Она может быть отправлена на исполнение в дочерние организации. Работы по поручению начинаются с его отправки по типовому маршруту Исполнение поручений.
1. | В типовой маршрут добавьте блок «Сценарий». В блоке задайте вычисления по созданию межсистемного процесса. Межсистемный процесс создается, если автор поручения и хотя бы один из исполнителей относятся. Для этого вычисляется наша организация автора поручения и исполнителей. Если организации разные, то необходимо создать межсистемный процесс. Получите организацию исполнителя и с помощью функции DCIGetReceiverForOrganization определите системы, в которые будут отправлены сообщения. |
Примечание
Если одновременно есть исполнители из связанных систем и из системы, в которой создается поручение, отправьте им задания в системе-отправителе.
Запишите глобальный ИД созданного процесса в параметры типового маршрута. Это позволяет обратиться к процессу на любом событии типового маршрута.
ProcessFactory = DCIGetFactory()
Process = ProcessFactory.CreateProcess("AssignmentsExecute")
// Заполнить параметры процесса.
ProcessParams = Process.Params
// Записать в параметры процесса ИД поручения, по которому ведутся работы.
ProcessParams.SetVar("AssignmentID"; ToString(AssignmentInfo.ID))
Process.Save
2. | В типовой маршрут добавьте блок «Пауза». В событии блока задайте вычисления по отправке сообщения в другую систему. Когда приходит ответ из связанной системы, задача снимается с паузы. |
WorkflowParams = Object.WorkflowParams
// Получить глобальный ИД межсистемного процесса из параметров ТМ.
ProcessGlobalID = WorkflowParams.FindItem("ProcessGlobalID").Value
// Вычислить получателей.
Receivers = CreateStringList()
Receivers.Delimiter = "|"
Receivers.DelimitedText = WorkflowParams.FindItem("RemoteSystems").Value
// Отправить сообщение.
DCISendProcessMessage(ProcessGlobalID; "SendToExecute"; Receivers; TRUE)
3. | Чтобы завершить межсистемный процесс, в конце типового маршрута добавьте блок «Сценарий». |
/* Отправить сообщение о завершении исполнения поручения в случае,
если есть межсистемный процесс */
Params = Object.WorkflowParams
ProcessGlobalID = Params.FindItem("ProcessGlobalID").Value
if Assigned(ProcessGlobalID)
ProcessFactory = DCIGetFactory()
Process = ProcessFactory.GetProcessByGlobalID(ProcessGlobalID)
Process.Stop()
DCIWriteLog("INFO"; "Межсистемный процесс завершен"; Process)
DCIWriteProcessEvent(ProcessGlobalID; "Исполнение поручения завершено")
endif
4. | Чтобы прекратить исполнение поручения, нужно отправить сообщение в связанную систему о прекращении работ с указанием причины. Для этого в событии «Возможность прекращения» типового маршрута добавьте вычисления: |
// Отправить в связанную систему сообщение о прекращении поручения
ProcessGlobalID = Params.ValueByName('ProcessGlobalID').Value
if Assigned(ProcessGlobalID)
// Вычислить получателей
Receivers = CreateStringList()
Receivers.DelimitedText = Params.FindItem("RemoteSystems").Value
AdditionalParams = CreateList()
AdditionalParams.Add('ReasonAbort'; Reason)
DCISendProcessMessage(ProcessGlobalID; "AbortExecute"; Receivers; FALSE; AdditionalParams)
endif
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |