在实践中介绍CMMN:第一部分

在实践中介绍CMMN:第一部分

 

在上一篇文章中,我们对组成CMMN模型的元素进行了快速的介绍,并提供了示例模型供您查看,甚至下载以进行操作。在本文和后续文章中,我们将更详细地介绍此模型,作为在实际中使用CMMN的一种方式,以及当您需要以可伸缩和高性能的方式执行某些操作时不可避免地会遇到的一些陷阱。

我将显示企业试用版的屏幕,但是在社区版中,与我将介绍的内容有关的所有执行都是相同的。

CMMN模型的快速回顾。该过程分为三个阶段:您收到索赔,进行调查,然后处理索赔。这是通过一个阶段进行建模的,该阶段具有与前一阶段的结束事件(虚线)相连的进入哨兵(菱形)。在任何阶段之外,还存在其他两个元素–您不需要一个阶段,但是它们通常可用于对相关项目进行聚类。阶段也可以嵌套,从而带来更多的作用域范围。

CMMN中的关键概念是元素激活的生命周期。同样,我们建议布鲁斯·西尔弗(Bruce Silver)的书对此进行深入探讨。借助CMMN,我们始终在关注可用的内容以及可以自动激活或由用户手动激活的功能。CMMN是关于在正确的时间和适当的情况下向用户提供正确的选项集或自动执行的。下图显示了case元素生命周期中的主要状态,还有更多的状态,并且对于某些元素,它们的状态有所不同,但是您通常会考虑这些状态。

容器内的任何东西(例如舞台)只有在其容器处于活动状态时才有机会变得可用,并且案例的顶部容器是案例计划-围绕所有内容的大文件夹图标。创建案例实例时,CMMN引擎要做的第一件事是检查案例计划中哪些项目可用。病案计划中直接存在的所有内容都将立即可用。但是,要使他们中的任何一个变得活跃起来,都需要满足一些条件。

让我们看一下该示例CMMN模型,以了解其实际工作原理。创建Claims Case实例后,三个顶层阶段都变为可用。其中两个具有入口哨兵,其条件是尚未发生的事件,因此仍然可用,但是Receive索赔阶段没有入口哨兵,因此立即变为active。这意味着该阶段中的所有项目都可以使用(我们将回到例外情况)。在那个阶段,有一项人工任务“  捕获索赔详细信息”没有进入哨所-因此,它也会自动被激活。通过创建此案例模型的实例,我们立即进入了第一阶段并开始了一项任务!

现在,我提到的例外。当可用项目标记为手动激活时,它将立即变为启用状态,并准备好在用户单击按钮时变为活动状态。这就是为什么人的任务从警方添加事件报告和需要3次缔约国报告时不上手要求接收阶段被激活,即使他们没有进入哨兵。他们坐下来,等待启用,直到用户动作开始并创建任务。

用户事件侦听器(如示例中完成的“放弃声明”和“详细信息”)类似于手动激活的任务,因为它们等待用户操作触发它们-区别在于将它们视为可用而不是启用(请向标准提供帮助的人员)委员会为什么,我不知道)。在开始这种情况后,这就是Flowable Work对用户的外观。

 

我们创建了一个案例实例,并完成了第一个任务。在我们的示例中,顶层案例计划中还有一个任务“更新索赔人联系方式”,并且它是手动激活的。创建案例时,也会启用此任务,但是将在创建之前等待用户操作。该放弃要求用户事件侦听器也是在顶层的情况下计划,所以它也被制成可用,并且将显示为用户的操作。在现在总共产生的情况后,我们将提供给用户创建的用户任务和四个动作:放弃要求,更新原告联系方式,需要3次党的报告和添加警方的事件报告。上方屏幕中的“终止”操作是所有案例和流程的全局操作,而不是个别案例模型的一部分。

在示例应用程序中,我们没有向任务添加任何逻辑或表格,以使其易于执行。如果我们完成了“获取索赔详细信息”任务,其状态将从有效变为完成(这并不奇怪)。查看案例图,您会看到从该用户任务到流程任务的入口哨兵之间存在链接。该链接表示触发条目哨兵的事件。可能在入口哨兵上有条件表达式(在Flowable中,我们用黄色菱形显示有条件的哨兵)。在此示例中,没有条件,因此当用户完成“捕获”索赔详细信息时,complete事件将触发“需要”其他信息进程可用(它是手动触发的,因此将等待用户启动它)。该功能目前尚不可用,因此您会发现有一个新的用户操作可用。

的详细完成事件监听器被连接到在舞台上的出口岗哨(黑色菱形)。入口哨兵可以触发并控制事物变为活动状态,而出口哨兵可以触发事物退出或完成事件。在这一点上,我们可以选择“完成详细信息”操作并强制退出该阶段,这又将事件触发到“调查”索赔阶段的入口哨兵并启动它。但是,我们还不打算,我们将研究Receive Claim案例中其他任务之间的奇怪关系,它说明了在没有编码或卷积信号抛出的情况下BPMN无法实现的某些事情–但这就是在接下来的文章 在这个系列中!

相关教程