基于Python的工作流管理系统的设计与应用

2018-07-05 02:42顾进广田萍芳武汉科技大学计算机科学与技术学院湖北武汉430065湖北省智能信息处理与实时工业系统重点实验室湖北武汉430065
计算机应用与软件 2018年6期
关键词:表单业务流程实例

李 洋 邓 莉 顾进广 田萍芳(武汉科技大学计算机科学与技术学院 湖北 武汉 430065)(湖北省智能信息处理与实时工业系统重点实验室 湖北 武汉 430065)

0 引 言

在激烈的商业竞争环境下,信息技术在企业内部得到了广泛应用,传统的独立、零散的办公方式已经不能满足企业的战略发展要求[1]。以简单的纸质存档方式来进行业务流程的处理人员成本高、实施周期长,不利于流程的追踪和统计分析[2]。随着企业大多数业务流程的分工越来越具体,流程可能需要不同部门和不同职位的人共同协作完成[3]。将业务流程分解成定义良好的活动,有效地控制和协调不同活动的执行过程并实现人与应用软件的友好交互,可以极大程度上提高业务流程的处理效率[4-5]。

工作流正是为了解决多人之间的协作问题而出现的一种技术,为不同应用间的集成、协同工作提供基础。文献[6]指出传统工作流对异构环境的支持性差,同时无法对业务流程进行动态建模。文献[7]定义了不同活动的约束条件,在过程控制中对约束条件进行修改,但此方法对用户依赖较高。

基于此,本文开发了一款工作流管理系统PWFMS(Python-Based Workflow Management System),采用Python语言,用空白缩进作为划分程序段的标准,代码简洁、可读性强、易于后期维护。核心的引擎系统在开源Web框架Django下开发,Django完善的缓存机制使得当有相同的链接请求时可以提高访问的响应速度。利用ORM(Object/Relation Mapping)对象/关系映射机制定义业务流程中各种模型,通过对业务流程模型化,将不同的人、不同的活动组织起来,控制活动的执行过程,使原来人工处理的流程实现自动化,完成跨人员、跨部门和跨应用的协作。

1 PWFMS

传统工作流模型在一定程度上解决了企业办公自动化的难题,但是仍然存在一定的局限性。早期工作流模型是通过“硬编码”的方式来表示,导致对流程修改的难度增大。一些工作流模型不具备动态建模能力,不能根据业务流程的实际运行状态,动态选择需要调用的应用程序(Web Service)。PWFMS将过程定义与过程执行分离,能帮助企业根据实际需求采用可视化方式快速构建业务流程。流程构建时,很可能由于误操作而出现脏定义,引擎系统可以在生成定义生成时进行逻辑上的预检测,保证每一个生成定义的正确性。流程实例中每一个活动节点执行完之后,都会给接下来需要执行的活动节点的审批人进行显式推送,对表单修改后显示最新的表单数据,同时会保存之前的表单历史记录。流程实例实际运行过程中,除了与本系统进行交互,还可以调用Web Service与外部系统进行交互,根据流程实际的运行状态进行条件判断,对于所有的流程实例,可以按照与实例相关的条件进行状态追踪,同时还可以进行分类与统计。

目前很多工作流引擎的数据都是存储在关系型数据库[8],但是在大数据背景下,传统的关系型数据库如mysql在高并发读写、高效率存储等方面略有不足,在频繁的数据读写操作过程中,为保证引擎系统的稳定,采用了并发性高、灵活性强、支持海量数据存储的NoSQL存储系统MongoDB。同时MongoEngine对MongoDB进行操作,支持丰富的数据表达,面向文档的数据存储不需要对多表进行关联查询。Json是一种轻量级的独立语言的文本数据交换格式,基于JavaScript编程语言的一个子集,具备良好的读写性能,在数据传输效率方面明显优于其他数据传输格式[9-10]。而且MongoDB数据库以BSON格式存储,而BSON是一种类JSON二进制形式的存储格式,两者之间转换较为容易,所以引擎系统采用Json作为数据传输格式。

PWFMS首先在生成平台进行表单的定制,然后在可视化操作界面将业务流程模型化,把流程转换为引擎系统所能识别的生成定义,并存储在MongoDB数据库。在系统的运行阶段,从MongoDB数据库读取流程的生成定义来生成流程实例,相关实例可以被软件应用解释并且在前端界面友好显示。在人与系统交互阶段,引擎系统根据流程实例所处的实际状态对活动进行过程控制。PWFMS系统架构如图1所示。

图1 PWFMS系统架构

将引擎系统能够理解的逻辑模型以生成定义的方式存储在MongoDB数据库,运行阶段的相关活动的过程控制由引擎系统读取生成定义后根据实例当前的状态来执行,一个生成定义可以生成多个业务流程实例,通过这种方式可以解决工作流管理系统对生成定义的复用困难。

2 模型建立

2.1 过程定义

过程定义是PWFMS所能识别的业务流程的形式化描述,用来支持流程运行过程的自动化[11],主要包括业务流程流转过程中所涉及到的各种数据、各个工作环节(活动)之间的控制关系和与外部系统的交互。PWFMS的过程定义模型述如表1所示。

表1 过程定义模型

form_def_id是与生成定义相关联的表单定义id,生成定义实例化时根据表单定义生成表单实例。status标记单个生成定义的状态,包括草稿、启用、停用和逻辑删除,如果一个生成定义已经实例化,那么该生成定义的状态变为”启用”。node_map中的每一项为过程定义实例化后具体需要实际执行的活动节点,即业务流程的具体任务。

2.2 生成平台

生成平台的主要功能是进行表单定制和生成定义定制。根据实际业务流程的需求,用表单定制工具,定制出与业务流程相符合的业务表单样式,使用表单管理系统可以对生成的表单定义进行管理。在不编写代码的情况下,通过可视化配置就可以高效完成业务流程的建模,建模完成后的生成定义存储在MongoDB数据库。使用工作流后台管理系统可以对业务流程的生成定义进行编辑和删除。

传统工作流模型根据活动节点审批和与外部系统交互的方式不同,常分为不同类型的活动节点,这样会导致定制流程时出现各种类型的活动节点,较为复杂。生成平台将基本操作、条件判断和功能配置等三个属性进行集成,将不同类型的活动节点的配置转换为对单个节点的属性配置。生成平台的活动节点属性如图2所示。

图2 活动节点属性

基本操作中确定审批人的方式有申请者审批、指定人员审批、流程流转时动态输入审批人、全院职位匹配、部门职位匹配、负责人审批和分管领导审批;活动节点的通过条件有单个通过、全部通过和自动通过;拒接操作有回退到发起、回退到上一层、回退到指定活动节点和终止流程。

流程流转过程中可以根据实际流程的相关状态进行条件判断,进而动态确定下一步审批的活动节点。条件判断的值可以来自流程所绑定的表单,活动执行者自身的相关属性、数据库的实时查询和外部Web Service的调用。

为增强流程与外部系统的交互,设置活动节点的相关功能操作,当活动节点审批通过时,可以自动执行预先定义的功能,比如发布通知、发起任务和会议。

2.3 引擎系统

引擎系统是PWFMS的核心,负责工作流的实例化,管理和控制活动的运行。活动是细化的业务流程中具体的一项任务,主要反映业务流程需要执行哪些功能。过程控制是对不同活动执行顺序的管理,一般与当前业务流程的实际运行状态相关[12]。引擎系统的过程控制方式有两种:会签模式和分支模式。

会签模式是描述不同活动汇合的具体方式,包括与会签(AND JOIN)、或会签(OR JOIN)和选择会签(CHOOSE JOIN)。如图3所示,当为与会签(AND JOIN)模式时,当且仅当活动T1,T2,…,Tn都执行之后,流程才可以流转到下一个需要执行的活动Tn+1;当为或会签(OR JOIN)模式时,活动T1,T2,…,Tn中有一个执行之后,流程就可以流转到下一个需要执行的活动Tn+1;当为选择会签(CHOOSE JOIN)模式时,当T1,T2,…,Tn中特定的活动执行后,流程才可以流转到下一个需要执行的活动Tn+1。

图3 会签模式

分支模式与会签模式相对应,包括与分支(AND SPLIT)、或分支(OR SPLIT)和选择分支(CHOOSE SPLIT),如图4所示,当为与分支(AND SPLIT)模式时,活动T1执行后,后续活动T2,…,Tn都需要执行;当为或分支(OR SPLIT)模式时,活动T1执行后,由业务流程的实际运行状态判断后续需要执行的活动具体是T2,…,Tn中的哪一个,即根据活动T1进行实时动态的流转;当为选择分支(CHOOSE SPLIT)模式时,活动T1执行后,由业务流程的实际运行状态判断后续需要执行的活动具体是T2,…,Tn中的哪一个或几个。

图4 分支模式

工作流引擎接收到一个过程定义后,根据相关的配置信息,对生成定义进行实例化,然后引擎系统根据业务流程运行所处的实际状态,自动完成每一个环节的活动,控制过程并监控整个流程的状态信息,每一次的过程控制都会生成一个操作记录(Operation),可以用于后期的流程追踪与统计分析。此外流程管理员也可以对正在执行的流程进行控制和监督,在实际情况下进行转单或催办,同时也可以将流程挂起或激活。操作记录模型如表2所示。其中Operation字段用来标明当前操作的类型,比如回退、同意、转单。

表2 操作记录模型

引擎系统的实例模型如表3。form_ins_id是生成定义实例化时根据表单定义所生成的表单实例。status标记业务流程的状态,包括创建、草稿、提交、完成和终止。node_status_map标记实际的业务流程中所有活动的相关状态,单个活动进行回退、同意、转单后,node_status_map中活动的状态也会相应改变,同时会往operation_list中插入一条与活动对应的记录,用于标明活动进行何种操作,然后todo_list会动态更新,指定流程所有需要执行的下一次活动。

表3 实例模型

续表3

3 PWFMS实际应用

PWFMS以武汉市某医院的实际业务流程需求为原型进行开发,现以该医院的院办议题、处方统计和财务报销流程为例子,详细阐明PWFMS在实际流程中的应用。

3.1 院办议题

顺序流程的审批方式可以适用于任何垂直拓展的流程,即没有水平方向的拓展(无分支)。院办议题是顺序流程的一个实例,通过对业务流程的分析,院办议题模型化后如图5所示。该模型为一个垂直方向的审批流程,各个节点相当于业务流程的一个活动,开始节点标明业务流程的开始,不做任何配置,填写表单节点用于流程申请者填写表单,生成表单实例后提交流程。部门主任和分管领导节点只进行了活动的基本操作的配置。结束节点进行活动的功能配置,调用外部Web Service用于发起一个任务。

图5 院办议题

申请人填写表单后,会自动扭转到部门主任进行审批,此时部门主任的审批方式可以是同意、回退或者转单。如果为回退,有三种方式,分别为回退到上一步、回退到起点、和终止流程,活动的审批者为申请人时,申请人还有权利撤销该条流程。如果为转单,此时部门主任审批的权利可以移交给指定的人或者特定角色。如果审批人同意,则流程扭转到分管领导审批,审批方式和部门主任审批方式相同。当流程流转到结束节点时,整条流程结束。根据结束节点预先的功能配置,调用Web Service,给院办主任发起一条任务,然后院办主任在召开院办会议时可以选择已经通过的院办议题,并看到该议题的整个审批过程和相关的表单数据。

3.2 处方统计

分支流程的审批方式适用于任何水平拓展的流程,即水平方向有拓展(多分支)。处方统计是分支流程的一个实例,处方统计模型化如图6所示。该模型是一个带有分支的审批流程,各个活动节点进行了基本操作的配置。其中填写表单节点为与分支(AND SPLIT)模式,会签节点为与会签(AND JOIN)模式。

图6 处方统计

申请人填写表单后,流程会自动扭转到水平方向的所有分支节点,节点活动信息科审核、医务处审核和领导审核被激活,单个节点的审批与顺序流程中节点的审批方式相同。这里会签节点的会签方式属于与会签,只有信息科、医务处和领导全部审批通过之后,流程才可以扭转到下一个节点。

3.3 财务报销

根据实际业务流程对财务报销进行模型化,见图7。

图7 财务报销

填写表单活动节点进行基本操作配置和条件判断配置,条件判断时调用外部Web Service获取当前操作人已报销的金额,再加上当前表单填写的报销金额,与预设值进行比较,动态决定下一步需要执行的活动。领导意见节点为或会签(OR JOIN)模式。结束活动节点进行功能配置,给财务处负责人发送一个通知,负责人决定是否对外公布该条流程。

4 结 语

随着企业的发展,其业务过程日趋复杂,传统的业务流程处理方式无法满足企业的战略发展要求。本文基于Python开发了一款工作流管理系统,将具体的业务逻辑模型化后,生成流程定义,然后根据定制的流程定义生成业务流程实例,为日常的一些办公流程实现全自动化处理。在设计上考虑了服务的独立性以及与外部系统的交互,后续将以微服务的方式构建和完善工作流管理系统。

[1] 陈保华,詹舒波.工作流业务生成系统的设计与实现[J].软件,2016,37(11):105- 109.

[2] 黄健.CI中国BPM系统的设计和实现[D].上海交通大学,2012.

[3] 张成姝.基于工作流的BPM系统研究[J].上海应用技术学院学报:自然科学版,2010,10(4):295- 297.

[4] 陈儒,肖刚,张元鸣,等.基于事务规则的面向服务工作流模型研究[J].计算机应用与软件,2014,31(6):5- 8,41.

[5] 杨浩雄,刘仲英.虚拟配送中心跨组织工作流协同研究[J].计算机应用与软件,2008,25(8):95- 96,140.

[6] 管红杰,王珂,江海峰,等.SOA架构的工作流管理系统的研究与应用[J].计算机工程与设计,2011,32(5):1654- 1657.

[7] Aalst W M P V D,Pesic M, Schonenberg H.Declarative workflows:Balancing between flexibility and support[J].Computer Science—Research and Development,2009,23(2):99- 113.

[8] 刘晔.基于Web的基本科研业务费管理系统的设计与实现[D].大连理工大学,2016.

[9] Wang G.Improving Data Transmission in Web Applications via the Translation between XML and JSON[C]// Third International Conference on Communications and Mobile Computing.IEEE,2011:182- 185.

[10] 高静,段会川.JSON数据传输效率研究[J].计算机工程与设计,2011,32(7):2267- 2270.

[11] 魏磊.基于构件技术的通用工作流引擎设计[D].河北大学,2010.

[12] 梁筱冰.电信业务流程拟制探讨[J].广东通信技术,2010,30(8):12- 16.

猜你喜欢
表单业务流程实例
航天企业基于信息化的业务流程体系构建方法研究
ERP系统在企业财务管理和业务流程管理中的应用
移动App表单组件体验设计
互联网+背景下物流公司的业务流程再造
基于质量管理体系为基础的核心业务流程优化
浅谈网页制作中表单的教学
使用智能表单提高工作效率
完形填空Ⅱ
完形填空Ⅰ
表单化管理国内对比研究