版权声明:
本文为博主原创文章,未经博主容许不得转载。关注公众号 技术汇(ID: jishuhui_2015) 可联系到做者。
在上篇基于BPMN2.0的工单系统架构设计(上)中,笔者带你们学习了一下BPMN2.0的相关标准,也是笔者实现工单系统的相当重要的基础部分。segmentfault
在接下来两篇文章中,将重点阐述整个工单系统是如何实现上篇提到的一部分BPMN2.0标准,以及整个工单流程是如何推进的。架构
对于这套工单系统,笔者给出的设计准则是:独立而通用。学习
独立,即意味着不依赖任何业务系统,自成体系。ui
通用,则表示这套工单系统是广泛适用于公司的业务体系的。url
公司目前的工单类型达到了10种,根据上篇中所学到的知识,能够依次将这10种工单转换成其对应的WDL文件,流程定版后,后续的每一个工单流程都按这些配好的WDL进行。spa
通过整理和分析,这套工单系统包含了如下的实体:架构设计
这里着重介绍一下自顶向下的主干分支。设计
一、工单信息中包含了工单号,工单主题,工单描述内容,优先级,状态,类型,时效性等,都是数据一个工单必不可少的基本信息。blog
二、工单任务是一个可被执行的主体,主要包含了任务id,任务名称,状态,时效性等。工单系统的本质就是推进这些工单任务有条不紊的执行下去。事件
三、任务模板的概念须要重点理解一下。比如生产车间的流水线中,每一个节点都配备了一个模具,把原材料放入模具中倒模,获得一个指定的产物。如此,任务模板就是流水线上的模具,其产物是上面提到的工单任务。在工单系统中,事先配置好若干个任务模板,使其做用于对应类型的任务。
四、模板字段及字段值。一个任务须要呈现哪些字段,如何呈现,就在此定义。一个任务的字段拥有哪些字段,也是须要事先配置好的。至于字段值,就比如是往模具中填充的原材料,在产出工单任务以前,有一个填充字段值的过程。
值得一提的是,字段是须要区分数据类型的,这里大体分为了三类:numberic-数值型,string-字符串,date-日期。考虑到有些字段还会有更特殊的含义,有提取出来了一个字段含义的特征,如:url-连接,map-地图。
而对于字段值,也要有所考虑。除了显式的字段值,客户端是能够展现的,还有一些是隐式值,这些不直接显示,对显式字段值有辅助做用。
还有一个细节要说明一下,这套工单系统内,还实现了基于角色的工单受权操做。工单的权限粒度细化到了每一个任务,权限能够细分红5项:
读(r):能够查看工单任务;
写(w):能够修改工单任务信息;
执行(x):能够执行此工单任务;
指派(a):能够指派此工单任务;
无(_):没有权限。
值得一提的是,受Linux文件系统权限的启发,工单任务权限的表示方法采用了一个char(4)字段,好比:rwx_表示可读可写可执行,r__a表示可读可派单,r___表示只读。
最后总结出一个张业务流程图,以下:
不难看出,发起工单流程是整个工单系统的入口,其次是每一个任务的推动是须要业务系统根据实际需求去填充模板字段,生成工单任务。
若是WDL配置了消息边界事件,业务系统就能够接收到来自工单系统的通知。
这篇文章将工单系统的业务需求作了进一步的抽象,提取出了一些必要的实体,进而整理出了整个系统的业务流程脉络,算是工单系统的概念设计。下篇文章将进入技术实现的环节,阅读后对于整个系统的实现会有很明确的指导做用。