[BPM] Withdrawing Tasks

Oracle BPMには事前定義ずみのアクションがあります(システムアクションと呼ばれるもの)。これを使うと、ユーザがタスクを取り消すことができます。この記事では、BPMNプロセスがどうやってタスクを取り消すかを簡単にまとめてみました。.

コンセプト
BPMNプロセスはタスクが取り消されたことを知るため。タスクの状態(出力結果ではありません)をチェックしています。

開始タスクの取り消し
開始タスク(initiate task)を取り消す場合、他のタスクを取り消す場合と同じように取り扱うことができますが、注意頂きたいのは、開始タスクのパターンでは、プロセスはフォームを起動する前に生成されるということです。このことはフォームデータを初期化する上で役立ちます。タスクを放棄することが特定の関心事だとすると、開始タスクのパターンを使わずに、プロセス外のUIを使ってサービスやイベントインターフェース経由でプロセスを起動すべきでしょう。

詳細
状態に基づくビジネスオブジェクト
タスクの状態結果を保持するため、値を割り当てることができるプロセスデータオブジェクトが必要です。これにより、Task.StateEnum型のビジネスオブジェクトを作成する必要があります。ビジネスオブジェクト作成ウィザードで「外部スキーマに基づく」オプションを選択し、省略記号をクリックして、以下に示すようにStateEnum型を選択すれば、簡単に作成することができます。


プロセスの例
プロセスでは、処理したいタスクの取り消しのあとに、ゲートウェイを使って状態をテストし、それに従って分岐します。ちょっとした例を以下に示します。この例ではタスクが取り消された場合に.プロセスが終了します。

状態値の割り当て
タスクの出力データのアソシエーションでは、execData.systemAttributes.stateをプロセスデータオブジェクトに定義したデータ保持変数に割当てます。この例ではtaskStateというデータオブジェクトを使っています。

取り消しのテスト
取り消しのテストは"taskState == State.WITHDRAWN" の形式になります。ビジネスオブジェクトStateは列挙型なので、正確な値を知る必要はなく、式ビルダで"State."をタイプすると様々な列挙値が現れます。


原文はこちら。
https://blogs.oracle.com/bpmtech/entry/withdrawing_tasks

0 件のコメント:

コメントを投稿