在本节中,您将学习如何使用 BPMN 2.0 业务规则任务和 DMN 1.3 决策表将决策自动化添加到流程中。
1、将业务规则任务添加到流程
使用 Camunda Modeler 打开Payment Retrieval(付款检索)流程,然后单击“Approve Payment(批准付款)”任务节点。在扳手按钮菜单中将活动类型更改为“Business Rule Task(业务规则任务)”。
接下来,在properties面板中将Implementation中的Type更改为DMN,并将Decision Reference更改为approve-payment(注意:approve-payment为dmn模型的ID),这样就把Business Rule Task链接到DMN表,流程执行的时候会执行DMN。为了检索评估结果并将其自动保存为流程中的流程实例变量,我们还需要将结果变量更改为approved(该值为流程变量,可在发起流程或表单里定义,在流程网关里使用),并在属性面板中使用singleEntry作为映射决策结果。
存更改并使用 Camunda Modeler 中的 Deploy按钮部署更新的流程。
2、使用 Camunda Modeler 创建 DMN 表
首先,通过单击“文件”>“新建文件”>“DMN 图”创建新的 DMN 图。
现在,新创建的图表已经添加了一个决策元素。通过单击它来选择它,然后为其指定一个名称 Approve Payment 和一个 ID为approve-payment(决策 ID 必须与 BPMN 流程中的Decision Reference 匹配)。
接下来,通过单击表按钮创建一个新的 DMN 表。
3、指定 DMN 表
首先,指定 DMN 表的输入表达式。在此示例中,我们将根据项目名称决定付款是否获得批准。您的规则还可以使用 FEEL 表达式语言、JUEL 或 Script。如果您愿意,可以阅读有关 DMN 引擎中的表达式的更多信息:https://docs.camunda.org/manual/7.19/user-guide/dmn-engine/expressions-and-scripts/。
双击输入以配置输入列。输入Item用作标签和输入item用作表达式:
接下来,设置输出列。填写Approved用作输出列和approved用作输出名称,将输出列更改为数据类型为boolean:
让我们通过单击 DMN 表左侧的+加号图标来创建一些规则。
设置后,DMN 表应如下所示:
4、部署 DMN 表
要部署决策表,请单击 Camunda Modeler 中的 Deploy 按钮,为其指定部署名称“Payment Retrieval Decision”,然后点击 Deploy 按钮。
5、使用 Cockpit 验证部署
现在,使用 Cockpit 查看决策表是否已成功部署。转到 http://localhost:8080/camunda/app/cockpit/。使用凭据 demo / demo 登录。导航到“Decisions决策”部分。决策表“Approve Payment批准付款”应列为已部署的决策定义。
6、使用 Cockpit 和 Tasklist 进行检查
接下来,使用 Tasklist 启动两个新的流程实例,并验证是否根据您的输入以不同的方式路由流程实例。为此,请转到 http://localhost:8080/camunda/app/tasklist/。使用demo/demo登录。
单击按钮启动流程实例并选择付款流程,使用通用表单添加流程变量item的值为item-xyz,如下所示:
点击“启动”按钮。
转到 http://localhost:8080/camunda/app/cockpit/,导航到“决定”部分,查看DMN规则执行情况,发现规则匹配成功了,approved为true,同时流程也自动执行了对应流向。
接下来,再次单击按钮以启动另一个流程实例并选择付款流程,使用通用表单添加流程变量item的值为item-zzz,如下所示:
转到 http://localhost:8080/camunda/app/cockpit/,导航到“决定”部分,查看DMN规则执行情况,发现规则匹配成功了,approved为false,流程走向为拒绝付款并结束。
祝贺!您已成功完成 Camunda 平台快速入门。
7、源码和文档
在线体验系统:http://www.yunchengxc.com
完整源代码:https://github.com/camunda/camunda-get-started-quickstart/archive/Step-5.zip
官方文档地址:https://docs.camunda.org/get-started/quick-start/decision-automation/