IM-BPM for Accel Platform プログラミングガイド 第8版 2020-12-01

4.6. エグゼキューション

エグゼキューションはプロセスインスタンスに含まれる実行単位を指します。
メッセージを送信する際に使用します。

4.6.1. エグゼキューションを取得する

エグゼキューションの取得について以下を解説します。
  • メッセージを送信する際に指定するエグゼキューションを取得する。

4.6.1.1. メッセージを送信する際に指定するエグゼキューションを取得する

メッセージを送信する際に指定するエグゼキューションを取得します。
検索条件を指定してエグゼキューション検索用APIを実行することで、送信対象のメッセージにひもづくエグゼキューションを特定します。

4.6.1.1.1. REST API

REST API「実行状態検索」を利用して、送信対象のメッセージにひもづくエグゼキューションを特定します。
  • メソッド

    • GET
  • URI

    • %ベースURL%/api/bpm/runtime/executions
  • パラメータ

  • パラメータの指定例

    • 複数のプロセスインスタンス内のエグゼキューションをプロセス定義キーとメッセージ名から抽出する例

      • %ベースURL%/api/bpm/runtime/executions?processDefinitionKey=%プロセス定義キー&messageEventSubscriptionName=%メッセージ名%
    • 特定のプロセスインスタンス内のエグゼキューションをメッセージ名から特定する例

      • %ベースURL%/api/bpm/runtime/executions?processInstanceId=%プロセスインスタンスID%&messageEventSubscriptionName=%メッセージ名%


REST API「実行状態詳細検索」を利用して、送信対象のメッセージにひもづくエグゼキューションを特定します。
業務データ(変数)を検索条件に指定する場合は、REST API「実行状態詳細検索」を利用してください。
  • メソッド

    • POST
  • URI

    • %ベースURL%/api/bpm/query/executions
  • パラメータ(BODY)

  • パラメータ(BODY)の指定例

    • 特定のプロセスインスタンス内のエグゼキューションをメッセージ名と変数から特定する例

      {
                  "processInstanceId": "%プロセスインスタンスID%",
                  "messageEventSubscriptionName": "%メッセージ名%",
                  "variables": [
                      {
                      "name": "%変数名%",
                      "type": "string",
                      "operation": "equals",
                      "value": "%変数の値%"
                      }
                  ]
      }
      

4.6.1.1.2. JavaEE開発モデル

RuntimeService runtimeService = ProcessEngineFactory.getInstance().getProcessEngine().getRuntimeService();

// 複数のプロセスインスタンス内のエグゼキューションをプロセス定義キーとメッセージ名から抽出する例
List<Execution> executions = runtimeService.createExecutionQuery().processDefinitionKey("%プロセス定義キー%").messageEventSubscriptionName("%メッセージ名%").list();

// 特定のプロセスインスタンス内のエグゼキューションをメッセージ名から特定する例
executions = runtimeService.createExecutionQuery().processInstanceId("%プロセスインスタンスID%").messageEventSubscriptionName("%メッセージ名%").list();

// 特定のプロセスインスタンス内のエグゼキューションをメッセージ名と変数から特定する例
executions = runtimeService.createExecutionQuery().processInstanceId("%プロセスインスタンスID%").messageEventSubscriptionName("%メッセージ名%").variableValueEquals("%変数名%", "%変数の値%").list();

コラム

詳細は「IM-BPM Java API」 - 「createExecutionQuery」を参照してください。

4.6.1.1.3. スクリプト開発モデル

let runtimeService = new bpm.RuntimeService();

// 複数のプロセスインスタンス内のエグゼキューションをプロセス定義キーとメッセージ名から抽出する例
let executions = runtimeService.queryExecutions({
        processDefinitionKey: '%プロセス定義キー%',
        messageEventSubscriptionName: '%メッセージ名%'
    });

// 特定のプロセスインスタンス内のエグゼキューションをメッセージ名から特定する例
executions = runtimeService.queryExecutions({
        processInstanceId: '%プロセスインスタンスID%',
        messageEventSubscriptionName: '%メッセージ名%'
    });

// 特定のプロセスインスタンス内のエグゼキューションをメッセージ名と変数から特定する例
executions = runtimeService.queryExecutions({
        processInstanceId: '%プロセスインスタンスID%',
        messageEventSubscriptionName: '%メッセージ名%' ,
        variables: [{
            'name': '%変数名%',
            'operation': 'equals',
            'type': 'string',
            'value': '%変数の値%'}]
    });

コラム

詳細は「IM-BPM スクリプト開発API」 - 「queryExecutions」を参照してください。

4.6.1.1.4. IM-LogicDesigner

入力値に検索条件を指定してエグゼキューション検索タスクを実行することで、送信対象のメッセージにひもづくエグゼキューションを特定します。
  • 複数のプロセスインスタンス内のエグゼキューションをプロセス定義キーとメッセージ名から抽出する例

    項目名
    processDefinitionKey プロセス定義キーを設定します。
    messageEventSubscriptionName メッセージ名を設定します。
  • 特定のプロセスインスタンス内のエグゼキューションをメッセージ名から特定する例

    項目名
    processInstanceId プロセスインスタンスIDを設定します。
    messageEventSubscriptionName メッセージ名を設定します。
  • 特定のプロセスインスタンス内のエグゼキューションをメッセージ名と変数から特定する例

    項目名
    processInstanceId プロセスインスタンスIDを設定します。
    messageEventSubscriptionName メッセージ名を設定します。
    variables [{ 'name': '%変数名%', 'operation': 'equals', 'type': 'string', 'value': '%変数の値%', }]

    コラム

    詳細は「IM-LogicDesigner仕様書」 - 「エグゼキューション検索」を参照してください。