第6章 API を使用してケースへの動的タスクおよびプロセスの追加

ランタイム時に動的タスクとプロセスをケースに追加して、ケースのライフサイクル時に発生する可能性がある予定外の変更を処理できます。動的アクティビティーはケース定義に定義されているわけでないため、定義したアドホックタスクまたはプロセスが可能な方法をシグナル化することはできません。

以下の動的アクティビティーをケースに追加できます。

  • ユーザータスク
  • サービスタスク (作業項目として実装されるすべてのタイプ)
  • 再利用可能なサブプロセス

動的ユーザーおよびサービスタスクがケースインスタンスに追加され、直ちに実行されます。動的タスクの特性に従って、開始して完了を待つ (ユーザータスクの) か、実行後に直接完了 (サービスタスク) します。動的サブプロセスの場合、プロセスエンジンは、この動的プロセスに対するプロセス定義を含む KJAR を要求して、ID でプロセスを探して実行します。このサブプロセスはケースに属し、ケースファイルのすべてのデータにアクセスします。

Swagger REST API アプリケーションを使用して、動的タスクおよびサブプロセスを作成します。

前提条件

手順

  1. Web ブラウザーで、以下の URL を開きます。

    /http://localhost:8080/kie-server/docs

  2. Case instances :: Case Management で利用可能なエンドポイントの一覧を開きます。
  3. POST メソッドのエンドポイントを探し、動的アクティビティーを作成します。

    POST /server/containers/{id}/cases/instances/{caseId}/tasks

    ケースインスタンスに動的タスク (ペイロードに合わせてユーザーまたはサービスを選択) を追加します。

    POST /server/containers/{id}/cases/instances/{caseId}/stages/{caseStageId}/tasks

    ケースインスタンス内の特定のステージに動的タスク (ペイロードに合わせてユーザーまたはサービスを選択) を追加します。

    POST /server/containers/{id}/cases/instances/{caseId}/processes/{pId}

    プロセス ID で識別される動的サブプロセスをケースインスタンスに追加します。

    POST /server/containers/{id}/cases/instances/{caseId}/stages/{caseStageId}/processes/{pId}

    ケースインスタンス内のステージに、プロセス ID で識別される動的サブプロセスを追加します。

    swagger case management dynamic
  4. ドキュメントを開くには、動的タスクまたはプロセスの作成に必要な REST エンドポイントをクリックします。
  5. Try it out をクリックして、動的アクティビティーの作成に必要なパラメーターとボディーを入力します。
  6. Execute をクリックして、REST API を使用する動的タスクまたはサブプロセスを作成します。

6.1. REST API を使用する動的ユーザータスクの作成

ケースの実行時には、REST API を使用して、動的ユーザータスクを作成できます。動的ユーザータスクを作成するには、次の情報を指定する必要があります。

  • タスク名
  • タスクの説明 (任意ですが推奨されます)
  • アクターまたはグループ (もしくはその両方)
  • 入力データ

以下の手順に沿って、Swagger REST API ツールを使用して、Business Central で利用可能な IT_Orders サンプルプロジェクトの動的ユーザータスクを作成します。Swagger のない REST API でも、同じエンドポイントを利用できます。

前提条件

  • Business Central にログインしており、Showcase アプリケーションを使用して IT Orders ケースインスタンスを起動している。Showcase の使用に関する情報は、『ケース管理への Showcase アプリケーション』を参照してください。

手順

  1. Web ブラウザーで、以下の URL を開きます。

    /http://localhost:8080/kie-server/docs

  2. Case instances :: Case Management で利用可能なエンドポイントの一覧を開きます。
  3. 以下の POST メソッドのエンドポイントをクリックし、詳細を開きます。

    /server/containers/{id}/cases/instances/{caseId}/tasks

  4. Try it out をクリックしてから、以下のパラメーターを入力します。

    表6.1 パラメーター

    名前説明

    id

    itorders

    caseId

    IT-0000000001

    本文
    {
     "name" : "RequestManagerApproval",
     "data" : {
       "reason" : "Fixed hardware spec",
       "caseFile_hwSpec" : "#{caseFile_hwSpec}"
      },
     "description" : "Ask for manager approval again",
     "actors" : "manager",
     "groups" : ""
    }
  5. Swagger アプリケーションで、Execute をクリックして動的タスクを作成します。

この手順は、ケース IT-000000001 に関連付けられている新しいユーザータスクを作成します。このタスクは、manager ケースロールに割り当てるユーザーに割り当てられます。このタスクには、2 つの入力変数があります。

  • reason
  • caseFile_hwSpec: defined as an expression to allow run time capturing of a process or case data.

タスクによっては、タスク名で検索できる、ユーザーフレンドリーな UI を提供するフォームが提供されている場合があります。IT Orders のケースでは、RequestManagerApproval タスクには、KJAR に RequestManagerApproval-taskform.form フォームが含まれます。

タスクを作成すると、Business Central で、タスクが割り当てられたユーザーの Task Inbox にタスクが表示されます。

6.2. REST API を使用した動的サービスタスクの作成

サービスタスクは通常、ユーザータスクより複雑ではありませんが、正常に実行するにはさらにデータが必要となる可能性があります。サービスタスクには以下の情報が必要です。

  • name: アクティビティー名
  • nodeType: 作業アイテムハンドラーの検索に使用するノードタイプ
  • data: 正しく実行を処理するためのデータのマッピング

ケースの実行時に、ユーザータスクと同じエンドポイントを使用して動的サービスタスクを作成できますが、ボディーペイロードは異なります。

以下の手順に沿って、Swagger REST API ツールを使用して、Business Central で利用可能な IT_Orders サンプルプロジェクトの動的サービスタスクを作成します。Swagger のない REST API でも、同じエンドポイントを利用できます。

前提条件

  • Business Central にログインしており、Showcase アプリケーションを使用して IT Orders ケースインスタンスを起動している。Showcase の使用に関する情報は、『ケース管理への Showcase アプリケーション』を参照してください。

手順

  1. Web ブラウザーで、以下の URL を開きます。

    /http://localhost:8080/kie-server/docs

  2. Case instances :: Case Management で利用可能なエンドポイントの一覧を開きます。
  3. 以下の POST メソッドのエンドポイントをクリックし、詳細を開きます。

    /server/containers/{id}/cases/instances/{caseId}/stages/{caseStageId}/tasks

  4. Try it out をクリックしてから、以下のパラメーターを入力します。

    表6.2 パラメーター

    名前説明

    id

    itorders

    caseId

    IT-0000000001

    本文
    {
     "name" : "InvokeService",
     "data" : {
       "Parameter" : "Fixed hardware spec",
       "Interface" : "org.jbpm.demo.itorders.services.ITOrderService",
       "Operation" : "printMessage",
       "ParameterType" : "java.lang.String"
      },
     "nodeType" : "Service Task"
    }
  5. Swagger アプリケーションで、Execute をクリックして動的タスクを作成します。

この例では、Java ベースのサービスが実行されます。この例には、 org.jbpm.demo.itorders.services.ITOrderService のパブリッククラスと、String が 1 つ指定された printMessage パブリックメソッド、インターフェースで構成されます。このサービスを実行すると、パラメーターの値がメソッドに渡されて実行されます。

サービスタスク作成に指定する数字、名前、他のタイプのデータは、サービスタスクのハンドラーの実装により異なります。提供されている例では、org.jbpm.process.workitem.bpmn2.ServiceTaskHandler ハンドラーが使用されています。

注記

カスタムサービスタスクの場合は、Work Item Handlers セクションのデプロイメント記述子にハンドラーが登録されていることを確認します。名前は、動的サービスタスクの作成に使用される nodeType と同じです。

6.3. REST API を使用した動的サブプロセスの作成

動的サブクラスを作成すると、任意のデータのみが提示されます。動的タスクの作成時には、特別なパラメーターはありません。

以下の手順では、Swagger REST API ツールを使用して、Business Central で利用可能な IT_Orders サンプルプロジェクトの動的なサブプロセスタスクを作成する方法を説明します。Swagger のない REST API でも、同じエンドポイントを利用できます。

前提条件

  • Business Central にログインしており、Showcase アプリケーションを使用して IT Orders ケースインスタンスを起動している。Showcase の使用に関する情報は、『ケース管理への Showcase アプリケーション』を参照してください。

手順

  1. Web ブラウザーで、以下の URL を開きます。

    /http://localhost:8080/kie-server/docs

  2. Case instances :: Case Management で利用可能なエンドポイントの一覧を開きます。
  3. 以下の POST メソッドのエンドポイントをクリックし、詳細を開きます。

    /server/containers/{id}/cases/instances/{caseId}/processes/{pId}

  4. Try it out をクリックして以下のパラメーターを入力します。

    表6.3 パラメーター

    名前説明

    id

    itorders

    caseId

    IT-0000000001

    pId

    itorders-data.place-order

    pId は、作成するサブプロセスのプロセス ID です。

    本文
    {
     "placedOrder" : "Manually"
    }
  5. Swagger アプリケーションで、Execute をクリックして動的サブプロセスを開始します。

この例では、ケース ID IT-0000000001place-order サブプロセスが IT 発注ケースで開始しています。Business Central の MenuManageProcess Instances の下で、このプロセスを確認できます。

説明に使用されている例を正しく実行したら、place-order プロセスがプロセスインスタンスの一覧に表示されます。プロセスの詳細を開き、プロセスの相関キーに IT 発注ケースインスタンス ID が含まれていることに注意してください。Process Variables 一覧には、REST API 本文に配信されているように、Manually 値を持つ placedOrder 変数が含まれます。