0

我刚刚安装了 RedHat Decision Manager 7.3,可以部署决策服务。到目前为止,我一直在使用/server/containers/instances/{containerId}端点来调用我的服务,其中有效负载列出了将对象插入工作内存的命令。

但是,这是一个有状态会话,我正在尝试弄清楚如何使用无状态会话来调用决策服务。该文档完全不清楚如何通过 REST API 执行此操作,但如果您使用的是 Java API(除非我遗漏了某些内容),则有很多示例。

有没有人有任何关于如何通过 REST 做到这一点的例子?

任何帮助都将不胜感激。

更新 首先我的意思是版本 7.3 而不是 7.4,但文档看起来是一样的。

所以看起来我不在一百万英里之外,从提供的文档中看起来我需要在lookup参数中指定一个会话 ID,所以我的请求将是这样的:

{
  "lookup": "mysession",
  "commands": [
    {
      "insert": {
        "object": {
          "com.indecision.baggage.Result": {}
        },
        "return-object": true,
        "out-identifier": "results"
      }
    },
    {
      "insert": {
        "object": {
          "com.indecision.baggage.Booking": {
            "fareClass": "First",
            "baggageItems": [
              {
                "com.indecision.baggage.BaggageItem": {
                  "width": 100,
                  "height": 100,
                  "depth": 100,
                  "weight": 20
                }
              }
            ]
          }
        },
        "return-object": true,
        "out-identifier": "booking"
      }
    },
    {
      "insert": {
        "object": {
          "com.indecision.baggage.FlightInformation": {
            "currentWeight": 100000,
            "flightNumber": "IA001",
            "maxOperatingWeight": 200000
          }
        },
        "return-object": true,
        "out-identifier": "flightInfo"
      }
    },
    {
      "fire-all-rules": {
        "out-identifier": "firedActivations"
      }
    }
  ]
}

但是,当我发送请求时,我收到以下错误消息:

{
  "type": "FAILURE",
  "msg": "Error calling container Indecision-Airlines-Baggage-Fee-Calculator: Session 'mysession' not found on container 'Indecision-Airlines-Baggage-Fee-Calculator_1.0.0-SNAPSHOT'.",
  "result": null
}

现在在 RH Business Central 中的服务器配置下,您可以为决策服务指定会话 ID,但无论我尝试什么,“保存”按钮始终是灰色的。所以我的第一个问题是关于为什么或如何启用此配置的设置的任何想法?

在此处输入图像描述

我的第二个问题是,如果必须预先定义会话 ID,那么这些服务真的不能在多个请求中真正实现无状态吗?正如我所看到的,他们需要预先指定他们想要在哪个会话 ID 下执行,而不是 KIE 引擎为他们创建新会话的新请求。还是我弄错了?

再次提前感谢任何答案。

4

2 回答 2

1

您可以参考此文档以了解 RHDM v7.4 API 以通过 Java API 或 REST API 与知识会话进行交互:文档链接

我相信这是一个相关的文档,因此它将并排向您展示 Java API 及其等效的 REST API,因此您可以将它用于您的用例。

报告的示例也与无状态会话相关,只要您使用 Batch 命令包装所有命令;换句话说,对我来说,该文件中报告的示例预计可以与无状态会话一起使用,没问题。如果您遇到其他情况,请不要犹豫将其报告为错误

在原始问题的更新之后

Q1:不,问题中所附的截图是关于“进程配置”的。如果您想有目的地命名一个会话,在 Business Central 中打开您的项目,在垂直选项卡“Kie 库”中的水平选项卡“设置”中,您可以编辑等效项kmodule.xml并根据需要命名您的知识库和会话。然后,此标识符将成为批处理命令引用的标识符。

快速示例截图供您参考:

在此处输入图像描述

请注意 Business Central kmodule 的 session 定义默认是 stateless的,这是预期的。

Q2并非如此,如 Drools/DM 手册中所述,无状态会话引用不是持久化/有状态的,因此会发生的是您的请求将以无状态方式处理(因为它确实是无状态会话)。

换句话说,对于发送到名为“mysession”的无状态会话的任何请求,无状态会话实例将透明地处理您的请求。

您不必为每个请求配置一个会话名称。

于 2019-08-28T06:46:14.307 回答
1

我还没有足够的声誉点来添加对 tarilabs 答案的评论,所以我在这里让您知道,作为另一个答案,我们已经更新了tarilabs 提到的KIE A​​PI 文档(针对 Red Hat Decision Manager 和 Process Automation Manager 和社区中的 Drools),并附有说明如何查看或更改 KIE 会话 ID 以在lookup命令属性中使用的说明。希望这将有助于其他有相同问题的用户。并感谢您提出有关您在尝试修改 KIE 会话设置时遇到的问题的票。

另外,我已经与您分享了该文档的 7.4 版本(尽管在 7.3 中也进行了更新),因为我想让您了解我们的红帽决策管理器和流程自动化管理器文档中的一个新的直接文档反馈功能从 7.4 开始。您可以突出显示文档的任何部分,单击添加反馈,并直接向我们的文档团队提供文档反馈,以进行评估、优先排序和解决。有关此功能的更多信息,请参阅Red Hat Customer Portal中的此公告。

如果您对我们的决策管理器或流程自动化管理器文档有任何其他具体问题或建议,请随时使用客户门户中的反馈功能。对于社区文档,请随意使用 tarilabs 提到的社区频道。

再次感谢您的反馈,贾斯汀!

于 2019-10-08T14:26:44.957 回答