検索

第24章 Red Hat Process Automation Manager のランタイムコマンド

download PDF

Red Hat Process Automation Manager はランタイムコマンドをサポートしています。これは、KIE セッションで全ルールを実行したり、オブジェクトを挿入したり取り消したりするなどのアセット関連の操作のために KIE Server に送信するものです。サポートされるランタイムコマンドの全一覧は、Red Hat Process Automation Manager インスタンスの org.drools.core.command.runtime パッケージにあります。

KIE Server REST API では、グローバルの org.drools.core.command.runtime コマンドまたはルール固有の org.drools.core.command.runtime.rule コマンドを http://SERVER:PORT/kie-server/services/rest/server/containers/instances/{containerId} への POST 要求のボディとして使用します。KIE Server REST API の使用に関する詳細情報は、21章KIE コンテナーおよびビジネスアセット用の KIE Server REST API を参照してください。

KIE Server Java クライアント API では、関連する Java クライアントの Java アプリケーションにこれらのコマンドを埋め込むことができます。たとえばルール関連のコマンドでは、RuleServicesClient Java クライアントを埋め込むコマンドに使用します。KIE Server Java クライアント API の使用に関する詳細情報は、22章KIE コンテナーおよびビジネスアセット用の KIE Server Java クライアント API を参照してください。

24.1. Red Hat Process Automation Manager のランタイムコマンドのサンプル

以下は、KIE Server で KIE Server REST API または Java クライアント API のアセット関連演算に使用可能なランタイムコマンドのサンプルです。

  • BatchExecutionCommand
  • InsertObjectCommand
  • RetractCommand
  • ModifyCommand
  • GetObjectCommand
  • GetObjectsCommand
  • InsertElementsCommand
  • FireAllRulesCommand
  • StartProcessCommand
  • SignalEventCommand
  • CompleteWorkItemCommand
  • AbortWorkItemCommand
  • QueryCommand
  • SetGlobalCommand
  • GetGlobalCommand

サポートされるランタイムコマンドの全一覧は、Red Hat Process Automation Manager インスタンスの org.drools.core.command.runtime パッケージにあります。

本セクションの各コマンドには、KIE Server REST API 用の REST 要求のボディ例 (JSON) と KIE Server Java クライアント API 用の Java クライアントの埋め込みコマンド例が含まれています。Java の例では、name (文字列) と age (整数) のフィールドがあるオブジェクト org.drools.compiler.test.Person を使用しています。

BatchExecutionCommand

同時に実行する複数のコマンドが含まれています。

表24.1 コマンドの属性
Name説明要件

commands

実行されるコマンド一覧

必須

lookup

コマンドの実行対象である KIE セッション ID を設定します。ステートレス KIE セッションの場合、この属性は必須です。ステートフル KIE セッションの場合この属性は任意で、指定されていないとデフォルトの KIE セッションが使用されます。

ステートレス KIE セッションでは必須、ステートフル KIE セッションでは任意

注記

KIE セッションの ID は、Red Hat Process Automation Manager プロジェクトの kmodule.xml ファイルに含まれます。Business Central で KIE セッション ID を表示するか追加して、lookup コマンド属性と併用するには、Business Central の関連のプロジェクトに移動し、プロジェクトの Settings KIE bases KIE sessions に移動します。KIE ベースが存在しない場合は、Add KIE base KIE sessions の順にクリックして、新規の KIE ベースと KIE セッションを定義します。

JSON リクエストボディの例

{
  "lookup": "ksession1",
  "commands": [ {
      "insert": {
        "object": {
          "org.drools.compiler.test.Person": {
            "name": "john",
            "age": 25
          }
        }
      }
    },
    {
      "fire-all-rules": {
        "max": 10,
        "out-identifier": "firedActivations"
      }
    }
  ]
}

Java コマンドの例

InsertObjectCommand insertCommand = new InsertObjectCommand(new Person("john", 25));
FireAllRulesCommand fireCommand = new FireAllRulesCommand();

BatchExecutionCommand batch = new BatchExecutionCommandImpl(Arrays.asList(insertCommand, fireCommand), "ksession1");

サーバーの応答例 (JSON)

{
  "response": [
    {
      "type": "SUCCESS",
      "msg": "Container command-script-container successfully called.",
      "result": {
        "execution-results": {
          "results": [
            {
              "value": 0,
              "key": "firedActivations"
            }
          ],
          "facts": []
        }
      }
    }
  ]
}

InsertObjectCommand

KIE セッションにオブジェクトを挿入します。

表24.2 コマンドの属性
Name説明要件

object

挿入するオブジェクト

必須

out-identifier

オブジェクト挿入から作成され、実行結果に追加される FactHandle の ID

任意

return-object

実行結果にオブジェクトを返す必要があるかどうかを決定するブール値 (デフォルト値: true)

任意

entry-point

挿入のエントリーポイント

任意

JSON リクエストボディの例

{
  "commands": [ {
      "insert": {
        "entry-point": "my stream",
        "object": {
          "org.drools.compiler.test.Person": {
            "age": 25,
            "name": "john"
          }
        },
        "out-identifier": "john",
        "return-object": false
      }
    }
  ]
}

Java コマンドの例

Command insertObjectCommand =
  CommandFactory.newInsert(new Person("john", 25), "john", false, null);

ksession.execute(insertObjectCommand);

サーバーの応答例 (JSON)

{
  "response": [
    {
      "type": "SUCCESS",
      "msg": "Container command-script-container successfully called.",
      "result": {
        "execution-results": {
          "results": [],
          "facts": [
            {
              "value": {
                "org.drools.core.common.DefaultFactHandle": {
                  "external-form": "0:4:436792766:-2127720265:4:DEFAULT:NON_TRAIT:java.util.LinkedHashMap"
                }
              },
              "key": "john"
            }
          ]
        }
      }
    }
  ]
}

RetractCommand

KIE セッションからオブジェクトを取り消します。

表24.3 コマンドの属性
Name説明要件

fact-handle

取り消すオブジェクトに関連付けられた FactHandle

必須

JSON リクエストボディの例

{
  "commands": [ {
      "retract": {
        "fact-handle": "0:4:436792766:-2127720265:4:DEFAULT:NON_TRAIT:java.util.LinkedHashMap"
      }
    }
  ]
}

Java コマンドの使用例: FactHandleFromString

RetractCommand retractCommand = new RetractCommand();
retractCommand.setFactHandleFromString("123:234:345:456:567");

Java コマンドの使用例: 挿入されたオブジェクトから FactHandle の使用

RetractCommand retractCommand = new RetractCommand(factHandle);

サーバーの応答例 (JSON)

{
  "response": [
    {
      "type": "SUCCESS",
      "msg": "Container employee-rostering successfully called.",
      "result": {
        "execution-results": {
          "results": [],
          "facts": []
        }
      }
    }
  ]
}

ModifyCommand

KIE セッションに以前に挿入されたオブジェクトを修正します。

表24.4 コマンドの属性
Name説明要件

fact-handle

修正するオブジェクトに関連付けられた FactHandle

必須

setters

オブジェクト修正のセッター一覧

必須

JSON リクエストボディの例

{
  "commands": [ {
      "modify": {
        "fact-handle": "0:4:436792766:-2127720265:4:DEFAULT:NON_TRAIT:java.util.LinkedHashMap",
        "setters": {
          "accessor": "age",
          "value": 25
        }
      }
    }
  ]
}

Java コマンドの例

ModifyCommand modifyCommand = new ModifyCommand(factHandle);

List<Setter> setters = new ArrayList<Setter>();
setters.add(new SetterImpl("age", "25"));

modifyCommand.setSetters(setters);

サーバーの応答例 (JSON)

{
  "response": [
    {
      "type": "SUCCESS",
      "msg": "Container employee-rostering successfully called.",
      "result": {
        "execution-results": {
          "results": [],
          "facts": []
        }
      }
    }
  ]
}

GetObjectCommand

KIE セッションからオブジェクトを取得します。

表24.5 コマンドの属性
Name説明要件

fact-handle

取得するオブジェクトに関連付けられた FactHandle

必須

out-identifier

オブジェクト挿入から作成され、実行結果に追加される FactHandle の ID

任意

JSON リクエストボディの例

{
  "commands": [ {
      "get-object": {
        "fact-handle": "0:4:436792766:-2127720265:4:DEFAULT:NON_TRAIT:java.util.LinkedHashMap",
        "out-identifier": "john"
      }
    }
  ]
}

Java コマンドの例

GetObjectCommand getObjectCommand = new GetObjectCommand();
getObjectCommand.setFactHandleFromString("123:234:345:456:567");
getObjectCommand.setOutIdentifier("john");

サーバーの応答例 (JSON)

{
  "response": [
    {
      "type": "SUCCESS",
      "msg": "Container command-script-container successfully called.",
      "result": {
        "execution-results": {
          "results": [
            {
              "value": null,
              "key": "john"
            }
          ],
          "facts": []
        }
      }
    }
  ]
}

GetObjectsCommand

KIE セッションからすべてのオブジェクトをコレクションとして取得します。

表24.6 コマンドの属性
Name説明要件

object-filter

KIE セッションから返されるオブジェクト用のフィルター

任意

out-identifier

実行結果に使用する識別子

任意

JSON リクエストボディの例

{
  "commands": [ {
      "get-objects": {
        "out-identifier": "objects"
      }
    }
  ]
}

Java コマンドの例

GetObjectsCommand getObjectsCommand = new GetObjectsCommand();
getObjectsCommand.setOutIdentifier("objects");

サーバーの応答例 (JSON)

{
  "response": [
    {
      "type": "SUCCESS",
      "msg": "Container command-script-container successfully called.",
      "result": {
        "execution-results": {
          "results": [
            {
              "value": [
                {
                  "org.apache.xerces.dom.ElementNSImpl": "<?xml version=\"1.0\" encoding=\"UTF-16\"?>\n<object xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"person\"><age>25</age><name>john</name>\n <\/object>"
                },
                {
                  "org.drools.compiler.test.Person": {
                    "name": "john",
                    "age": 25
                  }
                }
              ],
              "key": "objects"
            }
          ],
          "facts": []
        }
      }
    }
  ]
}

InsertElementsCommand

KIE セッションにオブジェクト一覧を挿入します。

表24.7 コマンドの属性
Name説明要件

objects

KIE セッションに挿入するオブジェクト一覧

必須

out-identifier

オブジェクト挿入から作成され、実行結果に追加される FactHandle の ID

任意

return-object

実行結果にオブジェクトを返す必要があるかどうかを決定するブール値。デフォルト値は true です。

任意

entry-point

挿入のエントリーポイント

任意

JSON リクエストボディの例

{
  "commands": [ {
    "insert-elements": {
        "objects": [
            {
                "containedObject": {
                    "@class": "org.drools.compiler.test.Person",
                    "age": 25,
                    "name": "john"
                }
            },
            {
                "containedObject": {
                    "@class": "Person",
                    "age": 35,
                    "name": "sarah"
                }
            }
        ]
    }
  }
]
}

Java コマンドの例

List<Object> objects = new ArrayList<Object>();
objects.add(new Person("john", 25));
objects.add(new Person("sarah", 35));

Command insertElementsCommand = CommandFactory.newInsertElements(objects);

サーバーの応答例 (JSON)

{
  "response": [
    {
      "type": "SUCCESS",
      "msg": "Container command-script-container successfully called.",
      "result": {
        "execution-results": {
          "results": [],
          "facts": [
            {
              "value": {
                "org.drools.core.common.DefaultFactHandle": {
                  "external-form": "0:4:436792766:-2127720265:4:DEFAULT:NON_TRAIT:java.util.LinkedHashMap"
                }
              },
              "key": "john"
            },
            {
              "value": {
                "org.drools.core.common.DefaultFactHandle": {
                  "external-form": "0:4:436792766:-2127720266:4:DEFAULT:NON_TRAIT:java.util.LinkedHashMap"
                }
              },
              "key": "sarah"
            }
          ]
        }
      }
    }
  ]
}

FireAllRulesCommand

KIE セッションですべてのルールを実行します。

表24.8 コマンドの属性
Name説明要件

max

実行するルールの最大数。デフォルト値は -1 で、実行に制限を課しません。

任意

out-identifier

実行結果で、使用されたルール数の取得に使用される ID。

任意

agenda-filter

ルール実行に使用するアジェンダフィルター。

任意

JSON リクエストボディの例

{
  "commands" : [ {
    "fire-all-rules": {
        "max": 10,
        "out-identifier": "firedActivations"
    }
  } ]
}

Java コマンドの例

FireAllRulesCommand fireAllRulesCommand = new FireAllRulesCommand();
fireAllRulesCommand.setMax(10);
fireAllRulesCommand.setOutIdentifier("firedActivations");

サーバーの応答例 (JSON)

{
  "response": [
    {
      "type": "SUCCESS",
      "msg": "Container command-script-container successfully called.",
      "result": {
        "execution-results": {
          "results": [
            {
              "value": 0,
              "key": "firedActivations"
            }
          ],
          "facts": []
        }
      }
    }
  ]
}

StartProcessCommand

プロセス ID を使用してプロセスを開始します。パラメーターと初期データを渡して挿入することもできます。

表24.9 コマンドの属性
Name説明要件

processId

開始するプロセスの ID

必須

parameters

プロセスのスタートアップでパラメーターを渡す Map <String,Object> 引数

任意

data

プロセスのスタートアップ前に KIE セッションに挿入するオブジェクト一覧

任意

JSON リクエストボディの例

{
  "commands": [
    {
      "start-process": {
        "processId": "myProject.myProcess",
        "data": null,
        "parameter": [],
        "out-identifier": null
      }
    }
  ]
}

Java コマンドの例

StartProcessCommand startProcessCommand = new StartProcessCommand();
startProcessCommand.setProcessId("org.drools.task.processOne");

サーバーの応答例 (JSON)

{
  "type": "SUCCESS",
  "msg": "Container stateful-session successfully called.",
  "result": {
    "execution-results": {
      "results": [],
      "facts": []
    }
  }
}

SignalEventCommand

KIE セッションに単一イベントを送信します。

表24.10 コマンドの属性
Name説明要件

event-type

着信イベントのタイプ

必須

process-instance-id

通知されるプロセスインスタンスの ID

任意

event

着信イベントのデータ

任意

JSON リクエストボディの例

{
  "commands": [
    {
      "signal-event": {
        "process-instance-id": 1001,
        "correlation-key": null,
        "event-type": "start",
        "event": {
          "org.kie.server.testing.Person": {
            "fullname": "john",
            "age": 25
          }
        }
      }
    }
  ]
}

Java コマンドの例

SignalEventCommand signalEventCommand = new SignalEventCommand();
signalEventCommand.setProcessInstanceId(1001);
signalEventCommand.setEventType("start");
signalEventCommand.setEvent(new Person("john", 25));

サーバーの応答例 (JSON)

{
  "type": "SUCCESS",
  "msg": "Container stateful-session successfully called.",
  "result": {
    "execution-results": {
      "results": [],
      "facts": []
    }
  }
}

CompleteWorkItemCommand

KIE セッションでワークアイテムを完了します。

表24.11 コマンドの属性
Name説明要件

workItemId

完了するワークアイテムの ID

必須

results

ワークアイテムの結果

任意

JSON リクエストボディの例

{
  "commands": [ {
    "complete-work-item": {
        "id": 1001
    }
  }
]
}

Java コマンドの例

CompleteWorkItemCommand completeWorkItemCommand = new CompleteWorkItemCommand();
completeWorkItemCommand.setWorkItemId(1001);

サーバーの応答例 (JSON)

{
  "response": [
    {
      "type": "SUCCESS",
      "msg": "Container employee-rostering successfully called.",
      "result": {
        "execution-results": {
          "results": [],
          "facts": []
        }
      }
    }
  ]
}

AbortWorkItemCommand

ksession.getWorkItemManager().abortWorkItem(workItemId) と同じ方法で KIE セッションのワークアイテムを中止します。

表24.12 コマンドの属性
Name説明要件

workItemId

中止するワークアイテムの ID

必須

JSON リクエストボディの例

{
  "commands": [ {
      "abort-work-item": {
        "id": 1001
      }
    }
  ]
}

Java コマンドの例

AbortWorkItemCommand abortWorkItemCommand = new AbortWorkItemCommand();
abortWorkItemCommand.setWorkItemId(1001);

サーバーの応答例 (JSON)

{
  "response": [
    {
      "type": "SUCCESS",
      "msg": "Container employee-rostering successfully called.",
      "result": {
        "execution-results": {
          "results": [],
          "facts": []
        }
      }
    }
  ]
}

QueryCommand

KIE ベースで定義されたクエリーを実行します。

表24.13 コマンドの属性
Name説明要件

name

クエリー名。

必須

out-identifier

クエリー結果の ID。クエリー結果を実行結果に追加する際に、この ID を使用します。

任意

arguments

クエリーパラメーターとして渡されるオブジェクト一覧。

任意

JSON リクエストボディの例

{
  "commands": [
    {
      "query": {
        "name": "persons",
        "arguments": [],
        "out-identifier": "persons"
      }
    }
  ]
}

Java コマンドの例

QueryCommand queryCommand = new QueryCommand();
queryCommand.setName("persons");
queryCommand.setOutIdentifier("persons");

サーバーの応答例 (JSON)

{
  "type": "SUCCESS",
  "msg": "Container stateful-session successfully called.",
  "result": {
    "execution-results": {
      "results": [
        {
          "value": {
            "org.drools.core.runtime.rule.impl.FlatQueryResults": {
              "idFactHandleMaps": {
                "type": "LIST",
                "componentType": null,
                "element": [
                  {
                    "type": "MAP",
                    "componentType": null,
                    "element": [
                      {
                        "value": {
                          "org.drools.core.common.DisconnectedFactHandle": {
                            "id": 1,
                            "identityHashCode": 1809949690,
                            "objectHashCode": 1809949690,
                            "recency": 1,
                            "object": {
                              "org.kie.server.testing.Person": {
                                "fullname": "John Doe",
                                "age": 47
                              }
                            },
                            "entryPointId": "DEFAULT",
                            "traitType": "NON_TRAIT",
                            "external-form": "0:1:1809949690:1809949690:1:DEFAULT:NON_TRAIT:org.kie.server.testing.Person"
                          }
                        },
                        "key": "$person"
                      }
                    ]
                  }
                ]
              },
              "idResultMaps": {
                "type": "LIST",
                "componentType": null,
                "element": [
                  {
                    "type": "MAP",
                    "componentType": null,
                    "element": [
                      {
                        "value": {
                          "org.kie.server.testing.Person": {
                            "fullname": "John Doe",
                            "age": 47
                          }
                        },
                        "key": "$person"
                      }
                    ]
                  }
                ]
              },
              "identifiers": {
                "type": "SET",
                "componentType": null,
                "element": [
                  "$person"
                ]
              }
            }
          },
          "key": "persons"
        }
      ],
      "facts": []
    }
  }
}

SetGlobalCommand

オブジェクトをグローバルステートに設定します。

表24.14 コマンドの属性
Name説明要件

identifier

KIE ベースで定義されるグローバル変数の ID

必須

object

グローバル変数に設定されるオブジェクト

任意

out

設定したグローバル変数を実行結果から除外するブール値

任意

out-identifier

グローバル実行結果の ID

任意

JSON リクエストボディの例

{
  "commands": [
    {
      "set-global": {
        "identifier": "helper",
        "object": {
          "org.kie.server.testing.Person": {
            "fullname": "kyle",
            "age": 30
          }
        },
        "out-identifier": "output"
      }
    }
  ]
}

Java コマンドの例

SetGlobalCommand setGlobalCommand = new SetGlobalCommand();
setGlobalCommand.setIdentifier("helper");
setGlobalCommand.setObject(new Person("kyle", 30));
setGlobalCommand.setOut(true);
setGlobalCommand.setOutIdentifier("output");

サーバーの応答例 (JSON)

{
  "type": "SUCCESS",
  "msg": "Container stateful-session successfully called.",
  "result": {
    "execution-results": {
      "results": [
        {
          "value": {
            "org.kie.server.testing.Person": {
              "fullname": "kyle",
              "age": 30
            }
          },
          "key": "output"
        }
      ],
      "facts": []
    }
  }
}

GetGlobalCommand

以前に定義したグローバルオブジェクトを取得します。

表24.15 コマンドの属性
Name説明要件

identifier

KIE ベースで定義されるグローバル変数の ID

必須

out-identifier

実行結果で使用される ID

任意

JSON リクエストボディの例

{
  "commands": [ {
      "get-global": {
        "identifier": "helper",
        "out-identifier": "helperOutput"
      }
    }
  ]
}

Java コマンドの例

GetGlobalCommand getGlobalCommand = new GetGlobalCommand();
getGlobalCommand.setIdentifier("helper");
getGlobalCommand.setOutIdentifier("helperOutput");

サーバーの応答例 (JSON)

{
  "response": [
    {
      "type": "SUCCESS",
      "msg": "Container command-script-container successfully called.",
      "result": {
        "execution-results": {
          "results": [
            {
              "value": null,
              "key": "helperOutput"
            }
          ],
          "facts": []
        }
      }
    }
  ]
}

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.