Eltern-Kind-Prozess synchronisieren
Dieses Thema liefert ein Beispiel für den Synchronisierungs-Robot-Knoten, wie er auf eine Änderung des Aktivitätsstatus des Ereignisses wartet, das den Eltern-Workflow-Prozess erzeugt hat.
Referenzierter Workflow
SynchronizationOnParentChildProcess.xml
SynchronizeChildProcess.xml
Beschreibung
Der nachfolgende Ausdruck ist für einen Robot, der auf ein von einem zugewiesenen Aktivitätsknoten ausgegebenes Ereignis AKTIVITÄTSSTATUS_GEÄNDERT wartet. Der Ausdruck überprüft, ob die Aktivität, die das Ereignis ausgegeben hat, zu einem Prozess gehört, von dem der Eltern-Prozess des Robots abstammt. Falls ja, wird abhängig von dem Status der Aktivität das entsprechende Routing-Ereignis ausgelöst.
Anweisungen
In diesem Fall wartet der Robot auf das Ereignis AKTIVITÄTSSTATUS_GEÄNDERT, und die entscheidende Windchill Klasse ist wt.workflow.work.WfAssignedActivity.
Dieses Beispiel geht davon aus, dass der Robot zu einem Prozess der ersten Ebene gehört, d.h., er befindet sich nicht in einem verschachtelten Unterprozess. Um Zugriff auf den äußersten Prozess in der Workflow-Vorlage zu erhalten, muss der Robot die Struktur der Unterprozesse kennen.
Kopieren Sie den folgenden Code:
//Get the Activity that triggered the State_change event.
wt.workflow.engine.WfActivity activity = (( wt.workflow.engine.WfActivity ) (((wt.events.KeyedEvent)event).getEventTarget()));
//get the process that the Activity belongs to
wt.workflow.engine.WfProcess activityParentProcess = activity.getParentProcess();
//Get the Parent of that sub process
wt.fc.ObjectReference activityParentRef = activity.getParentProcessRef( );
//Get the parent process for the Synch Robot
wt.workflow.engine.WfProcess mySubProcess = ( wt.workflow.engine.WfProcess ) self.getObject( );
/Get the parent process that spawns this sub process
wt.workflow.engine.WfActivity myRequestorActivity = (( wt.workflow.engine.WfActivity ) mySubProcess.getRequester( ));
wt.workflow.engine.WfProcess myParentProcess = myRequestorActivity.getParentProcess( );
//Check if the parent of the activity and the parent process of the subprocess that the Synch robot belongs to are the same.
if ( wt.fc.PersistenceHelper.isEquivalent(activityParentProcess , myParentProcess )){
//If the state of the Activity in the ParentProcess is executed, set result to "completed" and ifterminated, set result to "terminated". Else check again
if ( wt.workflow.engine.WfState.CLOSED_COMPLETED_EXECUTED.equals(activity.getState( ))){
result= "completed";
}
else if ( wt.workflow.engine.WfState.CLOSED_TERMINATED.equals(activity.getState( ))){
result= "terminated";
}
}
War dies hilfreich?