基于BPMN2.0的工单系统架构设计(中)

1,356 阅读4分钟

版权声明:本文为博主原创文章,未经博主允许不得转载。关注公众号技术汇(ID: jishuhui_2015) 可联系到作者。

在上篇基于BPMN2.0的工单系统架构设计(上)中,笔者带大家学习了一下BPMN2.0的相关标准,也是笔者实现工单系统的至关重要的基础部分。

在接下来两篇文章中,将重点阐述整个工单系统是如何实现上篇提到的一部分BPMN2.0标准,以及整个工单流程是如何推动的。

对于这套工单系统,笔者给出的设计准则是:独立而通用

独立,即意味着不依赖任何业务系统,自成体系。

通用,则表示这套工单系统是普遍适用于公司的业务体系的。

公司目前的工单类型达到了10种,根据上篇中所学到的知识,可以依次将这10种工单转换成其对应的WDL文件,流程定版后,后续的每个工单流程都按这些配好的WDL进行。

经过整理和分析,这套工单系统包含了以下的实体:

工单系统实体

这里着重介绍一下自顶向下的主干分支。

1、工单信息中包含了工单号,工单主题,工单描述内容,优先级,状态,类型,时效性等,都是数据一个工单必不可少的基本信息。

2、工单任务是一个可被执行的主体,主要包含了任务id,任务名称,状态,时效性等。工单系统的本质就是推动这些工单任务有条不紊的执行下去。

3、任务模板的概念需要重点理解一下。好比生产车间的流水线中,每个节点都配备了一个模具,把原材料放入模具中倒模,得到一个指定的产物。如此,任务模板就是流水线上的模具,其产物是上面提到的工单任务。在工单系统中,事先配置好若干个任务模板,使其作用于对应类型的任务。

4、模板字段及字段值。一个任务需要呈现哪些字段,如何呈现,就在此定义。一个任务的字段拥有哪些字段,也是需要事先配置好的。至于字段值,就好比是往模具中填充的原材料,在产出工单任务之前,有一个填充字段值的过程。

值得一提的是,字段是需要区分数据类型的,这里大致分为了三类:numberic-数值型,string-字符串,date-日期。考虑到有些字段还会有更特殊的含义,有提取出来了一个字段含义的特征,如:url-链接,map-地图。

而对于字段值,也要有所考虑。除了显式的字段值,客户端是可以展示的,还有一些是隐式值,这些不直接显示,对显式字段值有辅助作用。

还有一个细节要说明一下,这套工单系统内,还实现了基于角色的工单授权操作。工单的权限粒度细化到了每个任务,权限可以细分成5项:

读(r):可以查看工单任务;

写(w):可以修改工单任务信息;

执行(x):可以执行此工单任务;

指派(a):可以指派此工单任务;

无(_):没有权限。

值得一提的是,受Linux文件系统权限的启发,工单任务权限的表示方法采用了一个char(4)字段,比如:**rwx_**表示可读可写可执行,r__a表示可读可派单,**r___**表示只读。

最后总结出一个张业务流程图,如下:

workflow

不难看出,发起工单流程是整个工单系统的入口,其次是每个任务的推进是需要业务系统根据实际需求去填充模板字段,生成工单任务。

如果WDL配置了消息边界事件,业务系统就可以接收到来自工单系统的通知。

这篇文章将工单系统的业务需求做了进一步的抽象,提取出了一些必要的实体,进而整理出了整个系统的业务流程脉络,算是工单系统的概念设计。下篇文章将进入技术实现的环节,阅读后对于整个系统的实现会有很明确的指导作用。

关注我们