在 DMN Kogito 中更改 POJO 对象

Changing POJO Object in DMN Kogito

我有 bpmn2 文件,我在其中用作流程数据 POJO 应用程序。 为了学习如何使用 DMN,我想根据 DMN 内部的 smth 更改 1 POJO 属性。当我在输入上有应用程序并且在输出上有一个字符串值时,我设法使 DMN 工作。现在我想在输入应用程序中输入并在输出中修改应用程序:

在 DMN 内部我有以下结构:

我创建了带有字符串 algId 字段的数据类型 tApplication:

所以DMN里面的application是一个tApplication数据类型,为了decision我试着用decision table:

我的想法是 - 当 application.algId == "101" 将该值更改为 "115",但对于输入

{
  "application": {
    "algId":"101",
    ...
  }
}

我得到以下结果:

{
    "id": "98b8a9ad-1c1d-4c4f-8525-6e5fe9a528c9",
    "application": {
        "algId":"101",
    ...
  }
}

我做错了什么?更改 DMN 内的 POJO 对象的最佳做法是什么?

一个非常相关和相似的 use-case 被精确地描述在:

在访问代码之前,我强烈建议先观看视频或阅读博客 post。

重要的是要提醒,DMN 规范要求无状态和 side-effect 自由模型,因此您不能 改变 现有的 InputData 变量,per-se。但是,根据博客 post 和视频,您可以利用“数据丰富”策略来实现您的 use-case。

简而言之,您可以遵循 2 个主要策略:

  • 在 DMN 模型中,您决定 algId 作为它自己的名为 algId 的决策节点,稍后将在 BPMN 流程数据中使用 I/O 以便使用预期结果
  • 更新应用程序类型的 流程变量
  • 在 DMN 模型中,您使用新的 DMN FEEL built-in,例如 context put() 和你用那个决定替换过程变量