一、TransitionImpl
1) 觸發Transition事件;
2) 將到達節點作爲當前執行上下文節點;
3) 達到節點接受令牌(執行節點的acceptToken)。
二、DecisionImpl
1) 觸發DECISION_ENTER事件;
2) 調用DecisionHandler得到要執行的轉換(Transition);
3) 觸發DECISION_LEAVE事件;
4) 轉換接受令牌(執行節點的acceptToken)。
三、Fork
1) 觸發FORK_ENTER事件;
2) 將運行上下文中令牌的State和ActorId置null;
3) 調用ForkHander;
缺省的ForkHander,對於每一個它的轉換按順序執行以下操作:
l 觸發FORK_EVERY_LEAVE事件;
l 創建令牌,上下文中的令牌與新建令牌爲父子關係;
l 子令牌數據庫持久化;
l 將上下文中的令牌置爲子令牌,上下文的當前節點備份;
l 當前轉換接受令牌;
l 將上下文中的令牌置爲父令牌,節點還原;
l 子令牌reactiveJoin屬性設定爲將父令牌中的correspondingJoin。
四、Join
1) 如果當前上下文中的令牌沒有結束,結束令牌(包括該令牌的所有子令牌);
2) 觸發JOIN_EVERY_ENTER事件;
3) 清楚上下文中的臨時變量;
4) 將令牌、當前Join節點置爲當前運行上下文中的令牌和節點;
5) 執行JoinHander。
缺省的JoinHander在所有兄弟令牌都到達該Join節點後,激活父令牌,執行Join的轉換。父令牌激活時會觸發JOIN_LEAVE事件。
五、StateImpl、StartStateImpl
1) 將上下文中令牌的狀態設定爲當前狀態;
2) 觸發STATE_ENTER事件;
3) 如果狀態設定了swimlane屬性,從swimlane中取出actorId值設定爲上下文中令牌的actorId值;
4) 如果State要求必須assignment但actorId爲null,則報錯;
5) 記錄StateLog在令牌中;
6) 觸發STATE_AFTER_ASSIGNMENT事件。
六、EndStateImpl
1) 將lastLog置空;
2) 上下文中的令牌置爲當前令牌;
3) 結束令牌(會觸發PROCESS_END事件)。
七、MilestoneImpl
1) 將上下文中令牌的狀態設定爲當前狀態;
2) 觸發MILESTONE_ENTER事件;
3) 從上下文中取出名稱爲Milestone名稱的變量;
4) 如果變量存在(不爲null),觸發MILESTONE_LEAVE事件,執行Milestone轉換(進入下一個狀態);否則,將令牌中的actorId值置空,在令牌中記錄日誌(等待)。
八、ProcessStateImpl
1) 在上下文令牌中記錄狀態日誌;
2) 取得ProcessInvocationHandler,啓動子工作流程;
3) 工作流啓動成功後,將上下文中令牌actorId置空,當前狀態設定爲令牌當前狀態,令牌子進程實例設定爲已經啓動成功的子工作流程;否則報錯。