Camunda BPM:基于DMN决策表的任务分配规则引擎 - Camunda团队博客


在涉及人员工作流程的业务流程中,任务分配逻辑可能变得非常复杂。例如,处理保险索赔或批准流程的其他变体可能需要许多或复杂的任务分配规则。决策模型和符号(DMN)决策表是管理这些规则的很好的工具之一。
Camunda 7.13.0引擎已经支持2020年3月发布的DMN标准版本1.3友好的足够表达语言(FEEL)表达式使我们能够在决策表结果和任务分配参数。

示例流程
完整的示例项目可在Github上找到: camunda-consulting/code
本示例使用一个简单的BPMN流程,该流程由一个由DMN文件实现的业务规则任务和一个基于规则任务的输出变量分配的用户任务组成。图中显示的数据对象参考仅用于文档目的。它没有技术意义,可以删除。

一个Camunda用户任务都有相关的任务分配三个参数: -受让人(谁必须执行任务的特定用户) -候选用户(谁可以执行任务的特定用户的列表) -候选组(用户组列表谁可以执行任务)
在此示例中,这些参数使用$ {variable_name}绑定到流程变量。这使我们可以让任务分配取决于先前元素的输出(此处为业务规则任务)。

任务分配的示例DMN表如下,使用三个产品属性作为输入来确定任务分配:

通过DMN表触发策略,触发结果将是针对指定实例触发的规则(行)列表。当决策表产生多个输出(列)时,结果列表中的每个项目将包含最多三个值(受让人,候选人用户,候选人组)的集合。在业务规则任务的属性选项卡中,需要设置决策结果以反映此预期的数据结构(集合列表),如下所示。可以自由选择结果变量名称,这里为dmnResult。随后在映射表达式中使用变量名。

最后一步是将业务规则任务的输出映射到用于任务分配的三个变量。