[BPM] BPM 11g - Dynamic Task Assignment with Multi-level Organization Units

原文はこちら。
https://blogs.oracle.com/ateamsoab2b/entry/bpm_11g_dynamic_task_assignment

プロセスに渡されたデータのある値に基づいて、BPM11gのタスク割り当てに対し細かいレベルを持たせるという要件を何度か見てきました。通常、パラメトリック·ロールをまず使って、この要件を満たそうとするのですが、このエントリでは、より簡単な実装で柔軟な組織単位を使い、多くのユースケースを満足する方法をご紹介します。

ユースケース

タスク割当ては複数ユーザーを含む承認グループに実施します。ランタイムでは、入力データ中の場所を示す値を使って、タスクを最終的に割り当てるユーザーを決定します。
このケースでは、SOA管理ガイドのDemo Community、特に"szweig"、"mmitch"、"fkafka"の3名をメンバーとする"LoanAnalyticGroup"を使います。このシナリオでは、タスクを割当てます。入力データの場所が"JapanCentral"の場合は"szweig"に、"JapanNorth"の場合は"fkafka"に、"JapanSouth"の場合は"mmitch"にそれぞれタスクを、場所が"Japan"の場合は全員にタスク割り当てます。つまり、下図のような感じです。

プロセス

ヒューマンタスクが1個ある簡単なプロセスです。

Startアクティビティの出力データのアソシエーションでは、入力データに基づいて組織単位の事前定義変数を設定する必要があります(事前定義変数は出力データのアソシエーションでのみ設定できます)。
[訳注]
BPMの用語に合わせ、アソシエーションという言葉を使用しています。

そして、ヒューマンアクティビティの出力データのアソシエーションでは、組織単位の値をリセットして空にし、組織単位を必要としない後続のヒューマンアクティビティのために組織単位を使わないようにしておきます。

組織単位の設定

BPM Workspaceに管理者ユーザーとしてログイン(今回はweblogic/welcome1)し、[管理]オプションを選択します。
[ロール]で、プロセスのスイムレーン"ProcessOwner"に"LoanAnalyticGroup"を割り当てます。

[組織単位]で、組織をモデリングできます。[ルート組織単位] として"Japan"を、[子組織単位]として"Central"、"South"、"North"と図のように設定します。前述の通り、ユーザー"szweig"を"Central"に、"mmitch"を"South"に、"fkafka"を"North"に割り当てます。

プロセスのテスト

無効なデータ

まず、無効なデータでテストし、どんな結果になるかを確認しましょう。ここでは"X"を入力値とします。

インスタンスを確認すると、エラーの発生を確認できます。

組織単位のルートレベルを割り当てる

では、"Japan"を入力データとして指定した場合にどうなるか確認しましょう。

フロートレースを確認すると、タスクが割り当てられていることがわかります。

しかし、誰にタスクが割り当てられたのでしょうか。ユーザー"szweig"のBPM Workspaceを見てみましょう。

次は、"mmitch"

そして、"fkafka"も確認してみます。

ルートレベルの組織単位を使うと全てのユーザーにタスクが割り当てられていることがわかります。

組織単位の子レベルに割り当てる

では、入力データとして"Japan/North"を使ってテストしましょう。

"fkafka"のワークスペースを見てみると、タスクが割り当てられていることがわかります。彼は"JapanNorth"と関連づけられているからです。

 では、"szweig"のワークスペースはどうでしょうか。

タスクは割り当てられていません。"mmitch"も同様です。これは予想通りです。

まとめ

このエントリで、簡単に組織単位を使い多階層の動的なタスクルーティングを、パラメトリックロールに比べて一般的なユースケースで、より単純なソリューションで簡単に実装する方法をご紹介しました。

0 件のコメント:

コメントを投稿