Базовое администрирование > Поддержка совместной работы > Администрирование рабочих процессов > Инструменты рабочего процесса > Администрирование шаблонов рабочего процесса > Примеры кодов рабочего процесса > Примеры синхронизации робота > Синхронизация всех экземпляров процесса
  
Синхронизация всех экземпляров процесса
В этом разделе приведен пример узла робота синхронизации, отслеживающего изменение в состоянии задачи.
Рабочие процессы для справки
SynchronizationAccrossProcessInstances.xml
SynchronizeProcessInstance.xml
Описание
Синхронизация этого типа очень похожа на синхронизацию независимых процессов; единственное отличие состоит в том, что в этом случае роботом отслеживается событие ACTIVITY_STATE_CHANGED процесса wt.workflow.engine.WfProcess, а не задачи WfAssignedActivity. В приведенном ниже выражении робот проверяет, является ли процесс, выдавший событие State_Changed, искомым. Если это так, выполняется маршрутизация в зависимости от состояния процесса.
Инструкции
Переменная processName определена в родительском процессе робота. Она представляет собой имя процесса, который нужен роботу.
* 
Наименование "processName" могут иметь несколько процессов.
Скопируйте следующий код:
//get the process that emitted the event
wt.workflow.engine.WfProcess processInstance = ( wt.workflow.engine.WfProcess ) ((wt.events.KeyedEvent)event).getEventTarget();
//Check if the process that triggered the event is the same one we are interested in.
if ( processInstance.getName( ).equals(processName)){
//If so, check for the state of the process. Set result to "completed" if the process has been successfully completed
// and to "terminated" if the process has been terminated. In all other cases, check again.
if ( wt.workflow.engine.WfState.CLOSED_COMPLETED_EXECUTED.equals(processInstance.getState( ))){
result= "completed";
}
else if ( wt.workflow.engine.WfState.CLOSED_TERMINATED.equals(processInstance.getState( ))){
result= "terminated";
}
}