热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

bpmn和cmmn与dmn结合

bpmn和cmmn与dmn结合举例我们演示这三个标准的场景来自保险行业。它被简化了,但它代表了我们反复遇到的各种现实生活情况。注意,这里使用的模型不仅

bpmn和cmmn与dmn结合举例

我们演示这三个标准的场景来自保险行业。它被简化了,但它代表了我们反复遇到的各种现实生活情况。注意,这里使用的模型不仅仅是理论构造或文档;它们可以通过引擎执行,其中之一就是我们自己的产品camunda bpm。camunda bpm允许您在所有三个标准中建模和执行模型:bpmn、cmmn和dmn。

如果您没有使用bpmn、cmmn或dmn的经验,下面的内容可能看起来像是您还不知道的符号语言的强制行军。不过没关系,有些元素不理解,我们将在以后的文章中会再次详细讲解,欢迎持续关注,技术支持盘古BPM

让我们开始吧。

图:camundanzia网站。

假设你想买汽车保险。现在,你的第一站是互联网,在那里你比较报价并决定供应商。您访问您选择的保险公司的网站——在这种情况下,是虚构的camundanzia保险公司。使用以下数据填写申请表格(见上图:)


  1. 你的出生日期是1980年1月1日。我们写这篇文章的时候,你36岁。

  2. 你的汽车是宝马公司生产的。车型为x3。

您点击提交表单,然后向后靠,急切地等待您的保险政策。

表单中的数据立即在camundanzia创建一个业务流程实例,该实例是在bpmn中建模的,在技术上是在camunda bpm中实现的(参见下图)。我们可以从接收到的启动事件应用程序看出这一点。上篇文章中首先提到的兼容bpmn的工作流引擎现在开始工作。

图:bpmn中的请求处理。

该流程从确定风险业务规则任务开始。在模型端,该任务与决策引擎执行的dmn决策表风险评估(参见下图)相关联。决策引擎评估申请人年龄、汽车制造商和汽车模型的输入值。当执行业务规则任务时,工作流模型将这些值转移到决策引擎。

图:dmn的风险评估。

因为你说你开的是宝马x3,所以第五条规则适用于任何年龄的人。这条规则规定,任何高价值车辆的驾驶员都将得到黄色风险评级。

决策引擎提供两个输出值——一个用于车辆,另一个用于车辆对于风险评级——回到工作流引擎,它继续执行流程。在接下来的步骤中,我们将遇到一个异或网关,它将根据风险评估决定流程如何继续。

如果没有发现任何风险,网关就会选择标签为none的路径。这将导致问题策略服务任务。工作流引擎将通过接口调用camundanzia的后端系统,后端系统将生成一个文档。反过来,文档将被反馈给工作流引擎。下一步是send policy任务,它将文档转发给您。

然而,你的风险属于黄色类别。异或网关激活应用程序检查调用活动。这个调用活动在bpmn模型的属性中链接到cmmn模型(参见下图),并且cmmn模型现在在case引擎中实例化。工作流引擎等待case引擎报告完成。工作流引擎是耐心的,但由于附加的时间事件,在等待两天后,它将启动升级。它将启动一个名为加速应用程序评估的用户任务。例如,可以将用户任务分配给负责应用程序评估的知识工作者的团队领导。

图:cmmn中的应用检入。

让我们假设知识工作者,即具有专家知识的办公室职员,立即处理案例。他问自己:“尽管这辆车价值很高,这个申请人还应该投保吗?”“除了必须处理的决定申请任务外,职员可选择:

请求进一步的文档:职员可以启动请求文档流程任务,该任务反过来被链接到一个单独的bpmn流程模型。

询问其他意见:职员可以启动用户任务评估应用程序,该应用程序将任务分配给他的团队领导。

图:决定应用程序时办公室职员的任务表单。

上面的步骤可以以任何顺序和多次执行,或者可以跳过这些步骤并立即决定应用程序。那是由办公室职员决定的。在上图中,我们看到了职员的任务表单。他可用的选项显示在右边。

如果职员接受了请求,则哨兵会用小钻石表示,表示该决定必须由另一人授权。使授权成为必要的环境可能已经作为表达式存储在哨兵中,或者它们可能已经定义在由哨兵引用的单独dmn决策表中。在任何一种情况下,case引擎都会自动确定是否必须执行approve decision用户任务。

如果最终结果是接受应用程序,cmmn案例将在该状态中完成。现在,bpmn流程继续进行,也就是说,工作流引擎到达xor网关决策并选择应用程序接受的路径。现在,上面描述的可能性变成了现实:服务任务从后端系统检索保险策略,发送任务通过电子邮件将其发送给申请人。

也许从你递交汽车保险申请书到现在才过了半个小时。你把时间都浪费在了打盹上,不是吗?但是当你收到一封新邮件时,你的幻想就结束了。您激动的速度,Camundanzia  能够发布您的保险政策。

我们的示例到此结束。我们希望它能起到启发作用。如果你愿意,你可以在http://camunda.com/poster上看到这个例子的一张时髦的海报。我们很乐意免费寄给你。

如您所见,这三种bpm标准中的每一种都有各自的角色,但它们也有重叠之处。关于这个问题,我们经常会遇到两个问题:


  1. 基于业务规则的决策可以通过网关在bpmn中表示,那么我们为什么需要决策表呢?我们将在后面的文章中回答这个问题。

  2. 在bpmn中,存在特别的子进程。这不是专门为cmmn现在要处理的用例开发的吗?我们在后面的文章中讨论这个问题。

还有另一个棘手的主题:在流程协调期间实现高度结构的困难。相关人员可能会得出结论,这个过程必须保持他们行动的灵活性。也许他们担心bpmn会变得过于严格,所以他们很快就避开了cmmn作为替代。他们希望保持灵活性,但仍然享受过程改进的所有好处。这是一个谬论!明确定义的过程结构和过程改进之间的联系是不容置疑的。依靠cmmn而不是bpmn是要冒放弃的风险:


  1. 透明度:cmmn图较少地揭示了业务过程是如何被处理的,也就是说,在什么情况下执行了哪些活动。毕竟,决策权是留给知识工作者的。因此,公司相对依赖于知识型员工。

  2. 效率:知识型员工具有长期积累的特殊知识和经验。这意味着它们价格昂贵,而且很难被取代——或者随着业务量的增加而复制。在这样的条件下,你怎么能设想整个过程的自动化呢?因此,业务模型的可伸缩性受到限制。

  3. (结构)灵活性:如果过程需要修改,cmmn可以简单地调整。然而,如果一个知识工作者被期望以不同于过去的方式工作,他或她将不得不被告知和说服。这样做很麻烦,在某种意义上,也降低了结构的灵活性。是的,你可以争辩说cmmn的重点是为知识工作者提供很大的灵活性来进行自主决策,但是与使用bpmn相比,它需要更多的时间和精力来影响公司的决策行为。如果市场状况的变化比知识型员工改变习惯的能力或意愿更快,就可能出现问题。

我们现在是在反对cmmn吗?不。cmmn建立在合理的思考之上,如果使用得当,它是非常有价值的。我们努力要指出的一点是,当用BPMN开发一个清晰定义的过程结构似乎很难的时候,简单地使用cmmn作为最小阻力的路径是错误的。我们不希望产生软件开发中所谓的技术债务——这种债务在短期内使生活更容易,但在未来会产生更顽固、更昂贵的问题。

未来会出现更顽固、更昂贵的问题。

因此,我们的建议(基本上也是我们的经验法则)是,首先认真尝试在bpmn中定义所需的流程。对于那些不能获得清晰的过程结构并且需要给知识工作者留有余地的过程,考虑cmmn。



本文会持续更新,欢迎关注,技术支持:盘古BPM


推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
author-avatar
mobiledu2502885873
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有