第7章 ケースロール
ケースロールは、ユーザーがケース処理に参加する追加の抽象層を提供します。ロール、ユーザー、グループは、ケース管理の別の目的に使用されます。
- ロール
- ロールは、ケースインスタンスの認証や、ユーザーアクティビティーの割り当てを可能にします。所有者ロールには、ユーザーまたは 1 つ以上のグループを割り当てることができます。ケースが所属するユーザーが所有者です。ケースの定義では、ロールの割り当てはユーザーまたはグループ 1 つだけに制限されません。特定のユーザーまたはグループにタスクを割り当てる代わりに、ロールを使用してタスクの割り当てを指定することで、ケースを動的に保ちます。
- Groups
- グループとは、特定のタスクを実行できるユーザー、または指定の責任が割り当てられたユーザーの集合です。グループには何人でも割り当てることができ、ロールにはどのグループでも割り当てることができます。グループのメンバーは、いつでも追加または変更できるので、特定のタスクにグループをハードコード化しないでください。
- Users
- ユーザーとは、ロールに割り当てたり、グループに追加したりして、特定のタスクを割り当てることができる個人を指します。
以下の例では、前述のケース管理の概念をホテル予約にどのように適用するかを説明します。
-
ロール =
Guest -
グループ =
Receptionist、Maid -
ユーザー =
Marilyn
Guest のロールを割り当てると、関連ケースの特定の作業に影響があり、ケースインスタンスごとに固有です。ロールに割り当てることができるユーザーまたはグループの数は Case Cardinality で制限されています。Case Cardinality は、プロセスデザイナーのロール作成時に設定されます (例: ホテル予約ケースではゲストロールが 1 つ、IT_Orders サンプルプロジェクトでは IT ハードウェア業者ロールが 2 つです)。
ロールが定義されている場合には、ロールがケース定義の一部としてユーザー 1 人またはグループ 1 つにハードコードされておらず、ケースインスタンスごとに違うものを指定できるようにする必要があります。ケースのロール割り当てが重要なのは、このような理由からです。
ロールは、ケースの開始時や、ケースがアクテイブになった時点で割り当てまたは割り当ての解除ができます。ロールはオプションですが、ケース定義でロールを使用して、整理されたワークフローを維持します。
タスク割り当てに実際のユーザーまたはグループ名を使用する代わりに、ロールを使用します。これにより、必要に応じて、ユーザーまたはグループを実際に動的に割り当てるタイミングを遅らせることができます。
ロールはユーザーまたはグループに割り当てられ、ケースインスタンスの起動時にタスクを実行する権限があります。
7.1. ケースロールの作成 リンクのコピーリンクがクリップボードにコピーされました!
プロセスデザイナーでケースの設計時に、ケース定義でケースのロールを作成して、定義できます。ケースのロールは、ケースの定義レベルで設定して、ケースインスタンスを処理するアクターと分離させることができます。また、ロールは、ユーザータスクに割り当てるか、ケースのライフサイクル全体で問い合わせの参照として使用することができますが。固有のユーザーまたはユーザーのグループとして、ケースには定義されていません。
ケースインスタンスには、ケースの作業を実際に処理する個人が含まれます。新規ケースインスタンスを開始する場合にはロールを割り当ててください。ケースのランタイム中に、ケースのロール割り当てを変更して、ケースの柔軟性を保つことができますが、以前のロール割り当てをもとにすでに作成されているタスクには効果がありません。ロールに割り当てられたアクターには柔軟性がありますが、ロール自体はどのケースも同じままです。
前提条件
- ケース定義が含まれるケースプロジェクトが Business Central に存在する。
- プロセスデザイナーでケース定義アセットが開いている。
手順
-
ケースに関連するロールを定義するには、エディターのキャンバスの空いているスペースをクリックします。
をクリックして Properties メニューをクリックします。
Case Management を展開してケースロールを追加します。
ケースのロールには、ロールの名前とケースカーディナリティーが必要です。ケースカーディナリティーとは、ケースインスタンスでロールに割り当てられたアクターの数です。たとえば、IT_Orders サンプルのケース管理プロジェクトには、以下のロールが含まれます。
図7.1 ITOrders ケースロール
この例では、ケースの
ownerにアクター (ユーザーまたはグループ) 1 つのみを、managerロールには 1 つのアクターのみを割り当てることができます。supplierロールには、アクターを 2 つ割り当てることができます。ケースによっては、ロールに設定済みのケースカーディナリティーをもとに、特定のロールにいくつでもアクターを割り当てることができます。
7.2. ロールの認証 リンクのコピーリンクがクリップボードにコピーされました!
ロールには、Showcase アプリケーションまたは REST API を使用して新しいケースインスタンスを開始するときに、特定のケース管理タスクを実行する権限があります。
以下の手順では、REST API を使用して新しい IT 発注ケースを開始します。
前提条件
- IT_Orders サンプルプロジェクトが Business Central にインポートされており、KIE Server にデプロイされている。
手順
以下のエンドポイントで
POSTREST API コールを作成します。-
itorders: KIE Server でデプロイしているコンテナーエイリアス。 -
itorders.orderhardware: ケース定義の名前。
-
要求の本文に以下のロール設定を追加します。
{ "case-data" : { }, "case-user-assignments" : { "owner" : "cami", "manager" : "cami" }, "case-group-assignments" : { "supplier" : "IT" } }
これにより、定義したロールと、自動的に開始するアクティビティーを持つ新しいケースが開始します。これは開始して、処理できるようになります。ロールのうち 2 つがユーザーへの割り当て (owner および manager) で、3 つ目はグループへの割り当て (supplier) です。
ケースインスタンスが正常に開始されると、IT-0000000001 ケース ID を返します。
Showcase アプリケーションを使用して新規ケースインスタンスを開始する方法は、『ケース管理への Showcase アプリケーションの使用』を参照してください。
7.3. ロールへのタスクの割り当て リンクのコピーリンクがクリップボードにコピーされました!
ケース管理プロセスは、新しいケースインスタンス、またはアクティブなケースのユーザー割り当てを変更するなど、ランタイム時に動的に発生する変更に対応するために、できるだけ柔軟である必要があります。このため、ケース定義にあるユーザーまたはグループの単一セットにハードコードしないようにしてください。代わりに、ケース作成時にロールにユーザーまたはグループが割り当てられ、ロール割り当てをケース定義のタスクノードに定義できます。
Red Hat Process Automation Manager には、ビジネスプロセスの作成を簡略化する、事前定義済みのノードタイプが各種含まれます。事前定義済みのノードパネルは、ダイアグラムエディターの左側に置かれます。
前提条件
- ケース定義が、ケース設定レベルに設定したケースロールで作成されている。ケースロールの作成方法は「ケースロールの作成」を参照してください。
手順
- Tasks 一覧を開き、プロセス設定パレットにケース定義を追加するユーザーまたはサービスタスクをドラッグします。
-
タスクノードを選択して、
をクリックし、デザイナーの右側の Properties パネルを開きます。
Implementation/Execution を展開し、Actors プロパティーの下にある Add をクリックして、タスクを割り当てるロール名を選択するか、入力します。グループの割当も同じように、Groups プロパティーを使用します。
たとえば、IT_Orders のサンプルプロジェクトでは、
Manager approvalユーザータスクがmanagerロールに割り当てられています。
この例では、
Prepare hardware specユーザータスクが完了すると、managerロールに割り当てられているユーザーは、Business Central の Task Inbox でManager approvalを受け取ります。
ロールに割り当てられているユーザーはケースのランタイム時に変更できますが、タスクそのものには引き続き同じロールが割り当てられます。たとえば、manager ロールに最初に割り当てられたユーザーが (病気などで) 時間休をとる場合、または予定外に退職する場合などが考えられます。そのような状況でこの変更に応えるには、manager ロールの割り当てを編集して、そのロールに関連付けられているタスクに他のユーザーを割り当てることができます。
ランタイム時にロール割り当てを変更する方法は「Showcase を使用してランタイム時にケースのロール割り当ての修正」または「REST API を使用してランタイム時にケースのロール割り当ての修正」を参照してください。
7.4. Showcase を使用してランタイム時にケースのロール割り当ての修正 リンクのコピーリンクがクリップボードにコピーされました!
Showcase アプリケーションを使用して、ランタイム時にケースインスタンスのロール割り当てを変更できます。ロールはケース定義に定義され、ケースのライフサイクルでタスクに割り当てます。ロールは事前に定義されるためランタイム時に変更できませんが、ロールに割り当てたアクターを、ケースタスクを実行するユーザーに変更できます。
前提条件
- アクティブなケースインスタンスがあり、その中ですでにユーザーまたはグループが最低でも 1 つのケースロールに割り当てられている。
手順
- Showcase アプリケーションで、Case list から作業するケースをクリックし、ケースの概要を開きます。
ページの右下の Roles ボックスで、変更するロール割り当てを探します。
-
ロールの割り当てからユーザまたはグループを削除するには、対象のロール割り当ての横にある
をクリックします。確認ウィンドウで、Remove をクリックして、ロールからユーザーまたはグループを削除します。
-
ロールからロール割り当てすべてを削除するには、ロールの横にある
をクリックして、Remove all assignments オプションを選択します。確認ウィンドウで、Remove をクリックして、ロールからユーザーとグループ割り当てすべてを削除します。
-
ロール割り当てを別のユーザーやグループに変更するには、ロールの横にある
をクリックして、Edit オプションを選択します。
Edit role assignment ウィンドウで、ロール割り当てから削除する割り当て先の名前を削除します。ロールに割り当てるユーザーの名前を User フィールドに入力するか、割り当てるグループを Group フィールドに追加します。
ロール割り当ての編集時に、1 つ以上のユーザーまたはグループが割り当てられている必要があります。
- Assign をクリックしてルールの割り当てを完了します。
7.5. REST API を使用してランタイム時にケースのロール割り当ての修正 リンクのコピーリンクがクリップボードにコピーされました!
REST API または Swagger アプリケーションを使用して、ランタイム時にケースインスタンスのロール割り当てを変更できます。ロールはケース定義に定義され、ケースのライフサイクルでタスクに割り当てます。ロールは事前に定義されるためランタイム時に変更できませんが、ロールに割り当てたアクターを、ケースタスクを実行するユーザーに変更できます。
以下の手順には、IT_Orders サンプルプロジェクトをもとにした例が含まれます。Swagger アプリケーション、または他の REST API クライアントと同じ REST API エンドポイントを使用するか、Curl を使用します。
前提条件
-
IT 発注ケースインスタンスを、
owner、manager、およびsupplierのロールがアクターにすでに割り当てられている状態で開始している。
手順
以下のエンドポイントで
GETリクエストを使用して現在のロール割り当ての一覧を取得します。/http://localhost:8080/kie-server/services/rest/server/containers/{id}/cases/instances/{caseId}/rolesExpand 表7.1 パラメーター 名前 説明 iditorderscaseIdIT-0000000001これにより、以下の応答が返されます。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <case-role-assignment-list> <role-assignments> <name>owner</name> <users>Aimee</users> </role-assignments> <role-assignments> <name>manager</name> <users>Katy</users> </role-assignments> <role-assignments> <name>supplier</name> <groups>Lenovo</groups> </role-assignments> </case-role-assignment-list>managerロールに割り当てられているユーザーを変更する場合は、最初にDELETEを使用して、ユーザーKatyからロール割り当てを削除する必要があります。/server/containers/{id}/cases/instances/{caseId}/roles/{caseRoleName}Swagger クライアントリクエストに以下の情報を追加します。
Expand 表7.2 パラメーター 名前 説明 iditorderscaseIdIT-0000000001caseRoleNamemanageruserKatyExecute をクリックします。
最初の手順の
GETリクエストを再実行し、managerロールがユーザーに割り当てられなくなったことを確認します。<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <case-role-assignment-list> <role-assignments> <name>owner</name> <users>Aimee</users> </role-assignments> <role-assignments> <name>manager</name> </role-assignments> <role-assignments> <name>supplier</name> <groups>Lenovo</groups> </role-assignments> </case-role-assignment-list>以下のエンドポイントで
PUTリクエストを使用して、Camiユーザーをmanagerロールに割り当てます。/server/containers/{id}/cases/instances/{caseId}/roles/{caseRoleName}Swagger クライアントリクエストに以下の情報を追加します。
Expand 表7.3 パラメーター 名前 説明 iditorderscaseIdIT-0000000001caseRoleNamemanageruserCamiExecute をクリックします。
最初の手順の
GETリクエストを再実行し、managerロールがCamiに割り当てられていることを確認します。<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <case-role-assignment-list> <role-assignments> <name>owner</name> <users>Aimee</users> </role-assignments> <role-assignments> <name>manager</name> <users>Cami</users> </role-assignments> <role-assignments> <name>supplier</name> <groups>Lenovo</groups> </role-assignments> </case-role-assignment-list>