第 24 章 Red Hat Process Automation Manager 中的运行时命令


Red Hat Process Automation Manager 支持向 KIE Server 发送与资产相关的操作的运行时命令,如执行所有规则或插入 KIE 会话中的对象。支持的运行时命令的完整列表位于 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 命令作为 POST 请求的请求正文到 http://SERVER:PORT/kie-server/services/rest/server/containers/instances/{containerId}。有关使用 KIE 服务器 REST API 的更多信息,请参阅 第 21 章 KIE 服务器 REST API 用于 KIE 容器和业务资产

在 KIE Server Java 客户端 API 中,您可以将这些命令嵌入到 Java 应用程序以及相关的 Java 客户端中。例如,对于规则相关的命令,您可以使用带有内嵌命令的 RuleServicesClient Java 客户端。有关使用 KIE Server Java 客户端 API 的详情,请参考 第 22 章 KIE Server Java 客户端 API 用于 KIE 容器和业务资产

以下是您可以在 KIE Server REST API 中用于 KIE Server REST API 或 Java 客户端 API 的运行时命令示例,用于 KIE Server 中与资产相关的操作:

  • 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 示例使用对象 org.drools.compiler.test.Person字段名称 (字符串) 和年龄 (Integer)。

BatchExecutionCommand

包含要一起执行的多个命令。

Expand
表 24.1. 命令属性
名称描述要求

commands

要执行的命令列表。

必填

lookup

设置要执行的命令的 KIE 会话 ID。对于无状态 KIE 会话,需要此属性。对于有状态 KIE 会话,此属性是可选的,如果没有指定,则使用默认的 KIE 会话。

无状态 KIE 会话需要此项,对于有状态 KIE 会话是可选的

注意

KIE 会话 ID 位于 Red Hat Process Automation Manager 项目的 kmodule.xml 文件中。要在 Business Central 中查看或添加 KIE 会话 ID 以用于 lookup command 属性,请导航到 Business Central 中的相关项目,再前往项目 Settings KIE bases KIE 会话。如果没有 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 会话中。

Expand
表 24.2. 命令属性
名称描述要求

对象

要插入的对象

必填

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 会话中的对象.

Expand
表 24.3. 命令属性
名称描述要求

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 会话中修改之前插入的对象。

Expand
表 24.4. 命令属性
名称描述要求

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 会话检索对象。

Expand
表 24.5. 命令属性
名称描述要求

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 会话检索所有对象。

Expand
表 24.6. 命令属性
名称描述要求

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 会话中。

Expand
表 24.7. 命令属性
名称描述要求

对象

要插入到 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 会话中的所有规则。

Expand
表 24.8. 命令属性
名称描述要求

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 启动一个进程。您也可以传递要插入的参数和初始数据。

Expand
表 24.9. 命令属性
名称描述要求

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 会话发送一个信号事件。

Expand
表 24.10. 命令属性
名称描述要求

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 会话中完成一个工作项目。

Expand
表 24.11. 命令属性
名称描述要求

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

在 KIE 会话中中止工作项,其方式与 ksession.getWorkItemManager ().abortWorkItem (workItemId) 相同。

Expand
表 24.12. 命令属性
名称描述要求

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 基础中定义的查询。

Expand
表 24.13. 命令属性
名称描述要求

name

查询名称。

必填

out-identifier

查询结果的 ID。查询结果会添加到具有此标识符的执行结果中。

选填

参数

要作为参数传递的对象列表。

选填

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

将对象设置为全局状态。

Expand
表 24.14. 命令属性
名称描述要求

identifier

KIE 基础中定义的全局变量的 ID

必填

对象

要设置为全局变量的对象

选填

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

检索之前定义的全局对象。

Expand
表 24.15. 命令属性
名称描述要求

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

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部