ノート冊

554現在のオンライン
171今日の読書
41今日のシェア
多言語ディスプレイ

アクティブイベント(2)バウンダリータイマイベント

2018-05-14 14:24:30

境界イベントには、メッセージ(Message)境界イベント、タイマー(Timer)境界イベント、エスカレーション(Escalation)境界イベント、エラー(Error)境界イベント、キャンセル(Cancel)境界イベント、補償(Compensation)境界イベント、条件(Conditional)境界イベント、信号(Signal)境界イベント、結合(Multiple)境界イベント、および並列結合(Parallel Multiple)境界イベントです。

工具/原料です
1

コンピュータです

2

intelliJ idea, jdk1.8, mysqlです

方法/手順です
1

この編はただその中のタイマの境界のイベントを言って、タイマのイベントがちょうど話し終わったため、タイマの境界のイベントを言って少しよく理解します。

2

説明:タイマー境界イベントストップウォッチと目覚まし時計として働きます。追加の境界イベントに到達するアクティビティが実行されると、タイマーが起動されます。タイマがトリガされると(例えば、指定された間隔の後)、アクティビティは中断され、境界イベントに従います。

3

ビジネスシーン:一時的な業務プロセスに適しています。

4

配置の流れのファイルの主な内容は次のとおりです。[cdata [pt20s]] >フローチャート次図。

5

テスト手順は、2つのフローのインスタンスを作成して比較します。インスタンス1がタイムアウトしていない場合は、フローの流れがtask1-」task3になるかどうか、インスタンス2がタイムアウトしている場合は、フローの流れがtask1-」task2-」task3になるかどうか。テストコード= @ test public void emanuel.exeで(){repositoryservice repositoryservice =あと. getrepositoryservice ();/ /手続きファイル配置repositoryservice . createdeployment (). addclasspathresource (' processes / timerboundary . bpmn ') . deploy ();あと. getprocessengineconfiguration () . getasyncexecutor () . start ();//この話に注意してタイマーをオンにします。必ず加/ /稼動手続きprocessinstance processinstance = runtimeservice . startprocessinstancebykey (' process_1 ');/ /照会の初任務task task = taskservice . createtaskquery () . processinstanceid (processinstance . getid () . singleresult ();       system.out.println('第1のインスタンス、現在のノード名' + task.getname ());//最初のタスクtaskService.complete(task.getid())を完了します。task = taskservice . createtaskquery () . processinstanceid (processinstance . getid () . singleresult ();system.out.println('最初のインスタンス、最初のタスク完了後:' + task);/ /エンドフェイズtaskservice.com plete (task . getid ();// 2番目のフローのインスタンスを起働して、1番目のタスクを実行しないなどの境界タイマーイベントをトリガした後、タスクノードを見ます。そして见て任務を遂行するノードprocessinstance = runtimeservice . startprocessinstancebykey (' process_1 ');task = taskservice . createtaskquery () . processinstanceid (processinstance . getid () . singleresult ();system.out.println('第2のインスタンス、現在ノード名' + task.getname ());/ /ストップ・ウォッチをあっちは20秒、こっちの設置眠って30秒try {thread . sleep(1000×70);} catch (InterruptedException e) {e.rintstacktrace ();} task = taskservice . createtaskquery () . processinstanceid (processinstance . getid () . singleresult ();system.out.println('第2のインスタンス、タイムアウト後の現在ノード名' + task.getname ());//最初のタスクtaskService.complete(task.getid())を完了します。task = taskservice . createtaskquery () . processinstanceid (processinstance . getid () . singleresult ();system.out.println('第2インスタンス、タスク完了後:' + task);//終了フローtaskService.complete(task.getid ());}結果は次の通りです:第1のインスタンス、現在ノード名User Task 1第1のインスタンス、第1のタスク完了後:Task[id=57509, name=User Task 3]第2のインスタンス、現在のノード名User Task 1第2のインスタンス、タイムアウト後の現在のノード名User Task 2第2のインスタンス、タスク完了後:Task[id=57522, name=User Task 3]はテスト前に考えた通りです。

推奨情報