BPMN中使用DMN
BPMN中使用DMN
对于流程,需要定期做出决策。在第4.5.4节中,我们解释了何时以及为什么不应该在过程模型中使用网关对这些决策进行建模。相反,BPMN提供了自己的任务类型来链接规则集:业务规则任务。 (在对BPMN进行标准化时,我们谈到的是业务规则管理,而不是像今天这样进行决策管理。)
该方法很简单:只要BPMN流程到达业务规则任务中,就将评估规则集。 然后,决策结果出现在流程中,并且可以通过例如网关对其进行评估。 在盘古BPM工作流使用手册中我们更仔细地研究工作流和决策引擎的技术集成。 它们通常集成到一个引擎中。 DMMN的特定链接尚未标准化,因为BPMN比DMN明显更旧,尽管这种情况在供应商扩展中得到了缓解。
在风险评估期间,将应用DMN规则集,结果将触发流程中的路由决策。 您可能阅读盘古BPM工作流使用手册,然后再考虑一下业务决策和路由决策之间的区别。
图6.20:可以从BPMN流程中调用DMN中的业务决策逻辑。 结果通常用于流程中的路由决策。
6.3.2具有决策流程的决策
假设您要决定聚会的地点和日期。 那应该不太困难。 回到您的配偶车间,您在厨房白板上绘制了图6.21中的示意图。
图6.21:一个简单的决定?
这似乎很简单,但是一旦开始处理决策表就无法完全解决。
1、您实际上无法生成用于评估所有可能日期的决策表。首先,您将确定所有相关日期,例如5月或6月的星期六。 其次,您评估那些日期以找到最合适的日期。
2、 您想确定一个日期,即评价最高的日期。 该决定不适用于表,但是可以将其呈现为简单表达式。
3、有了日期,您可以决定地点。 首先,您需要更多信息,例如天气预报。
如您所见,决策很复杂,并且需要在某些阶段维持一定的顺序。 DMN标准在这个主题上完全没有任何意义,但是在实践中已证明在这种情况下对决策流程进行建模非常有用。
图6.22显示了我们团队的决策流程。 如您所见,我们首先收集了所有感兴趣的日期。 我们在这里将其作为脚本任务来完成,但它也可能是服务任务。 然后,对每个日期执行一次业务规则任务,并为其评分。 有了每个日期的分数,就可以轻松确定最合适的日期。 然后,仅在此日期之前,我们必须提取天气报告,而这实际上可以是服务请求。 现在我们可以决定场地了。
图6.22:决策流程提供了复杂决策的顺序。
要为我们的决策制定一套完整的规则,我们必须实施两个必要的决策表。 请参见图6.23中的示例。
图6.23:决策流程中要使用的决策表。
此示例显示了尝试从大量值中选取某些内容时的典型模式。 我们称其为决策渠道。 通常,它由图6.24所示的步骤组成:
图6.24:要选择一个值,通常要经过决策漏斗。
1.您决定某些搜索条件,例如五月和六月的所有星期六。 在这种情况下,这是由直觉引起的非正式决定。 DMN也可以对此建模,但是,可以根据该方的要求评估正确的月份和可能的工作日。
2.从大量数据中,寻找符合条件的元素。 出于性能原因,通常不使用DMN进行此操作,而是使用对数据库的编程服务或SQL查询。
3.您可以使用DMN再次过滤结果,以应用排除某些结果的规则。 (我们的示例未显示此内容。)
4.您通常使用DMN评分表评估当前列表中的所有元素。
5.您只选择一个元素,通常是得分最高的元素,尽管并非总是如此。 例如,在招标中,有时会选择第二便宜的选择。
决策流程是一个强大的工具,我们喜欢使用它们。 但是,请注意:即使在BPMN中也建模了决策流程,也应严格将其与实际业务流程分开。 始终为决策流创建一个单独的BPMN模型,然后在业务流程的一个节点中调用它-就像决策表一样。 否则,您最终将流程流与业务决策混合在一起,并且正如我们已经说过的,我们认为这不是一个好主意。
从技术上讲,可以像其他任何BPMN流程一样,使用普通的工作流引擎来自动化决策流程。
相关教程
- 2020-04-04
- 2020-04-04
- 2020-04-04
- 2020-04-04
- 2020-04-04
- 2020-04-03
- 2020-04-03
- 2020-04-03
- 2020-04-03
- 2020-03-31