第45章 ケース管理のルール
ケースは、シーケンスフローには従わず、データ駆動型です。ケースを解決するために必要な手順は、ケースに関係する人によって提供されるデータに依存します。または、利用可能なデータに基づいてさらにアクションを発生させるようにシステムを設定できます。後者の場合、ビジネスルールを使用して、ケースを続行または解決するために必要な追加のアクションを決定できます。
データは、ケース内のどの時点でも、ケースファイルに挿入できます。デシジョンエンジンは常に、ケースファイルデータをモニターリングしているため、ケースファイルに含まれるデータに、ルールが反応します。ルールを使用してケースファイルデータの変更を監視および応答することで、ある程度自動的にケースが前に進むようにします。
45.1. ルールを使用したケースの前進
Business Central のケース管理に関する IT_Orders サンプルプロジェクトを参照します。
業者が入力した特定のハードウェア明細書に誤りがあるか無効だったとしましょう。ケースを続行させるためには、業者が、有効な注文を新たに行う必要があります。マネージャーが無効な明細書を却下して、業者に対して新しい要求を作成する代わりに、入力した明細書が無効であることをケースデータが示したらすぐに応答するビジネスルールを作成できます。このルールは、業者に新しいハードウェア明細書の要求を作成できます。
以下の手順は、このシナリオを実行するビジネスルールを作成して使用する方法を実演します。
前提条件
- IT_Orders サンプルプロジェクトが Business Central で開いているが、KIE Server にデプロイされていない。
ServiceRegistry
はjbpm-services-api
モジュールの一部で、クラスパスで利用できるようにする必要があります。注記Business Central 外でプロジェクトをビルドする場合は、以下の依存関係をプロジェクトに追加する必要があります。
-
org.jbpm:jbpm-services-api
-
org.jbpm:jbpm-case-mgmt-api
-
手順
validate-document.drl
という名前で、以下のビジネスルールファイルを作成します。package defaultPackage; import java.util.Map; import java.util.HashMap; import org.jbpm.casemgmt.api.CaseService; import org.jbpm.casemgmt.api.model.instance.CaseFileInstance; import org.jbpm.document.Document; import org.jbpm.services.api.service.ServiceRegistry; rule "Invalid document name - reupload" when $caseData : CaseFileInstance() Document(name == "invalid.pdf") from $caseData.getData("hwSpec") then System.out.println("Hardware specification is invalid"); $caseData.remove("hwSpec"); update($caseData); CaseService caseService = (CaseService) ServiceRegistry.get().service(ServiceRegistry.CASE_SERVICE); caseService.triggerAdHocFragment($caseData.getCaseId(), "Prepare hardware spec", null); end
このビジネスルールは、
invalid.pdf
ファイルをケースファイルにアップロードしたタイミングを検出します。これはinvalid.pdf
ドキュメントを削除し、Prepare hardware spec
ユーザータスクの新しいインスタンスを作成します。Deploy をクリックして、IT_Orders プロジェクトをビルドし、KIE Server にデプロイします。
注記Build & Install オプションを選択してプロジェクトをビルドし、KJAR ファイルを KIE Server にデプロイせずに設定済みの Maven リポジトリーに公開することもできます。開発環境では、Deploy をクリックすると、ビルドされた KJAR ファイルを KIE Server に、実行中のインスタンス (がある場合はそれ) を停止せずにデプロイできます。または Redeploy をクリックして、ビルドされた KJAR ファイルをデプロイしてすべてのインスタンスを置き換えることもできます。次回、ビルドされた KJAR ファイルをデプロイまたは再デプロイすると、以前のデプロイメントユニット (KIE コンテナー) が同じターゲット KIE Server で自動的に更新されます。実稼働環境では Redeploy オプションは無効になっており、Deploy をクリックして、ビルドされた KJAR ファイルを KIE Server 上の新規デプロイメントユニット (KIE コンテナー) にデプロイすることのみが可能です。
KIE Server の環境モードを設定するには、
org.kie.server.mode
システムプロパティーをorg.kie.server.mode=development
またはorg.kie.server.mode=production
に設定します。Business Central の対応するプロジェクトでのデプロイメント動作を設定するには、プロジェクトの Settings → General Settings → Version に移動し、Development Mode オプションを選択します。デフォルトでは、KIE Server および Business Central のすべての新規プロジェクトは開発モードになっています。Development Mode をオンにしたプロジェクトをデプロイしたり、実稼働モードになっている KIE Server に手動でSNAPSHOT
バージョンの接尾辞を追加したプロジェクトをデプロイしたりすることはできません。-
invalid.pdf
ファイルを作成し、ローカルで保存します。 -
valid-spec.pdf
ファイルを作成し、ローカルで保存します。 - Business Central で、Menu → Projects → IT_Orders に移動して、IT_Orders プロジェクトを開きます。
- ページの右上で Import Asset をクリックします。
validate-document.drl
ファイルをdefault
パッケージ (src/main/resources
) にアップロードし、Ok をクリックします。validate-document.drl
ルールがルールエディターに表示されます。Save をクリックするか、ルールエディターを閉じて終了します。-
Apps launcher (インストールされている場合) をクリックするか、
http://localhost:8080/rhpam-case-mgmt-showcase/jbpm-cm.html
に移動して、Showcase アプリケーションを開きます。 IT_Orders の Start Case をクリックします。
この例では、Aimee がケースの
owner
、Katy がmanager
、および業者グループがsupplier
になります。-
Business Central からログアウトし、
supplier
グループに属するユーザーでログインし直します。 - Menu → Track → Task Inbox の順に移動します。
-
Prepare hardware spec
タスクを開いて、Claim をクリックします。これにより、タスクがログインユーザーに割り当てられます。 Start をクリックし、 をクリックして
invalid.pdf
ハードウェア仕様ファイルの場所を特定します。 をクリックしてファイルをアップロードします。Complete をクリックします。
Prepare hardware spec
の Task Inbox の値がReady
になります。Showcase の右上にある Refresh をクリックします。
Prepare hardware task
メッセージが Completed の列と、In Progress の列に表示されていることを確認します。これは、最初の
Prepare hardware spec
タスクが明細書ファイルinvalid.pdf
を使用して完了されているためです。その結果、ビジネスルールによりタスクおよびファイルが破棄され、新しいユーザータスクが作成されます。-
Business Central の Task Inbox で、前の手順を繰り返して、
invalid.pdf
の代わりにvalid-spec.pdf
ファイルをアップロードします。