[jbpm]jbpm-examples その2

Evaluation

最初のチュートリアルと同じサンプル。Human Task と Gateway を使ったシンプルなプロセス。

EvaluationExampleはプロセスをスタートするだけで、あとはタスククライアントとして使える「Human Task View」を操作してタスク実行します。 http://d.hatena.ne.jp/tokobayashi/20120409 を参考。

EvaluationExample2のほうはAPIでタスクの処理を行います。

まず TaskClient で Human Task Service へ接続。これは MinaTaskClientConnector だが、HornetQTaskClientConnector もある。

TaskClient taskClient = new TaskClient(new MinaTaskClientConnector("MinaConnector", new MinaTaskClientHandler(SystemEventListenerFactory.getSystemEventListener())));
taskClient.connect("127.0.0.1", 9123);

TaskClient から処理を行うときは ResponseHandler を渡して結果をもらう。処理によって ResponseHandler の実装クラスは違う。

BlockingTaskSummaryResponseHandler taskSummaryHandler = new BlockingTaskSummaryResponseHandler();
taskClient.getTasksAssignedAsPotentialOwner("krisv", "en-UK", taskSummaryHandler);
TaskSummary task1 = taskSummaryHandler.getResults().get(0);
BlockingTaskOperationResponseHandler taskOperationHandler = new BlockingTaskOperationResponseHandler();
taskClient.start(task1.getId(), "krisv", taskOperationHandler);
taskOperationHandler.waitTillDone(1000);

あとなぜか Mary が タスクを Krisv に delegate して、 Administrator がそれを Mary に付け直すという小芝居が入る。

Krisv executing task Performance Evaluation(7: Please perform a self-evalutation.)
John executing task Performance Evaluation(8: You need to evaluate krisv.)
Mary delegating task Performance Evaluation(9: You need to evaluate krisv.) to krisv
Administrator delegating task back to mary
Mary executing task Performance Evaluation(9: You need to evaluate krisv.)