Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

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

Щелкните для увеличения изображения

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
.navbar > a:hover { background: #FFD73B; }