bpmn和cmmn与dmn结合举例
我们演示这三个标准的场景来自保险行业。它被简化了,但它代表了我们反复遇到的各种现实生活情况。注意,这里使用的模型不仅仅是理论构造或文档;它们可以通过引擎执行,其中之一就是我们自己的产品camunda bpm。camunda bpm允许您在所有三个标准中建模和执行模型:bpmn、cmmn和dmn。
如果您没有使用bpmn、cmmn或dmn的经验,下面的内容可能看起来像是您还不知道的符 语言的强制行军。不过没关系,有些元素不理解,我们将在以后的文章中会再次详细讲解,欢迎持续关注,技术支持盘古BPM
让我们开始吧。
图:camundanzia 站。
假设你想买汽车保险。现在,你的第一站是互联 ,在那里你比较 价并决定供应商。您访问您选择的保险公司的 站——在这种情况下,是虚构的camundanzia保险公司。使用以下数据填写申请表格(见上图:)
-
你的出生日期是1980年1月1日。我们写这篇文章的时候,你36岁。
-
你的汽车是宝马公司生产的。车型为x3。
您点击提交表单,然后向后靠,急切地等待您的保险政策。
表单中的数据立即在camundanzia创建一个业务流程实例,该实例是在bpmn中建模的,在技术上是在camunda bpm中实现的(参见下图)。我们可以从接收到的启动事件应用程序看出这一点。上篇文章中首先提到的兼容bpmn的工作流引擎现在开始工作。
图:bpmn中的请求处理。
该流程从确定风险业务规则任务开始。在模型端,该任务与决策引擎执行的dmn决策表风险评估(参见下图)相关联。决策引擎评估申请人年龄、汽车制造商和汽车模型的输入值。当执行业务规则任务时,工作流模型将这些值转移到决策引擎。
图:dmn的风险评估。
因为你说你开的是宝马x3,所以第五条规则适用于任何年龄的人。这条规则规定,任何高价值车辆的驾驶员都将得到黄色风险评级。
决策引擎提供两个输出值——一个用于车辆,另一个用于车辆对于风险评级——回到工作流引擎,它继续执行流程。在接下来的步骤中,我们将遇到一个异或 关,它将根据风险评估决定流程如何继续。
如果没有发现任何风险, 关就会选择标签为none的路径。这将导致问题策略服务任务。工作流引擎将通过接口调用camundanzia的后端系统,后端系统将生成一个文档。反过来,文档将被反馈给工作流引擎。下一步是send policy任务,它将文档转发给您。
图:cmmn中的应用检入。
请求进一步的文档:职员可以启动请求文档流程任务,该任务反过来被链接到一个单独的bpmn流程模型。
询问其他意见:职员可以启动用户任务评估应用程序,该应用程序将任务分配给他的团队领导。
图:决定应用程序时办公室职员的任务表单。
上面的步骤可以以任何顺序和多次执行,或者可以跳过这些步骤并立即决定应用程序。那是由办公室职员决定的。在上图中,我们看到了职员的任务表单。他可用的选项显示在右边。
如果职员接受了请求,则哨兵会用小钻石表示,表示该决定必须由另一人授权。使授权成为必要的环境可能已经作为表达式存储在哨兵中,或者它们可能已经定义在由哨兵引用的单独dmn决策表中。在任何一种情况下,case引擎都会自动确定是否必须执行approve decision用户任务。
如果最终结果是接受应用程序,cmmn案例将在该状态中完成。现在,bpmn流程继续进行,也就是说,工作流引擎到达xor 关决策并选择应用程序接受的路径。现在,上面描述的可能性变成了现实:服务任务从后端系统检索保险策略,发送任务通过电子邮件将其发送给申请人。
也许从你递交汽车保险申请书到现在才过了半个小时。你把时间都浪费在了打盹上,不是吗当你收到一封新邮件时,你的幻想就结束了。您激动的速度,Camundanzia 能够发布您的保险政策。
我们的示例到此结束。我们希望它能起到启发作用。如果你愿意,你可以在http://camunda.com/poster上看到这个例子的一张时髦的海 。我们很乐意免费寄给你。
如您所见,这三种bpm标准中的每一种都有各自的角色,但它们也有重叠之处。关于这个问题,我们经常会遇到两个问题:
-
基于业务规则的决策可以通过 关在bpmn中表示,那么我们为什么需要决策表呢将在后面的文章中回答这个问题。
-
在bpmn中,存在特别的子进程。这不是专门为cmmn现在要处理的用例开发的吗在后面的文章中讨论这个问题。
还有另一个棘手的主题:在流程协调期间实现高度结构的困难。相关人员可能会得出结论,这个过程必须保持他们行动的灵活性。也许他们担心bpmn会变得过于严格,所以他们很快就避开了cmmn作为替代。他们希望保持灵活性,但仍然享受过程改进的所有好处。这是一个谬论!明确定义的过程结构和过程改进之间的联系是不容置疑的。依靠cmmn而不是bpmn是要冒放弃的风险:
-
效率:知识型员工具有长期积累的特殊知识和经验。这意味着它们价格昂贵,而且很难被取代——或者随着业务量的增加而复制。在这样的条件下,你怎么能设想整个过程的自动化呢,业务模型的可伸缩性受到限制。
我们现在是在反对cmmn吗cmmn建立在合理的思考之上,如果使用得当,它是非常有价值的。我们努力要指出的一点是,当用BPMN开发一个清晰定义的过程结构似乎很难的时候,简单地使用cmmn作为最小阻力的路径是错误的。我们不希望产生软件开发中所谓的技术债务——这种债务在短期内使生活更容易,但在未来会产生更顽固、更昂贵的问题。
未来会出现更顽固、更昂贵的问题。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!