openjweb1.8新增工作流引擎介绍

来源:互联网 发布:股票基本知识书籍 知乎 编辑:程序博客网 时间:2024/06/05 08:47

 

 

 

 

 

 

 

 

OpenJWeb 1.8工作流设计

 

 

 

 

 

 

 

 

 

 

 

Openjweb开发团队

联系人:王先生

手机:13651070328

QQ:29803446

Msn:baozhengw999@hotmail.com

Email:baozhengw@163.com

2009-11-23

说明:因文档中图片较多,需要看带图片的文档,请到http://code.google.com/p/openjweb/downloads/list下载OpenJWeb-workflow.rar .

 

 

 

 

 

 

第一章    设计原则.... 2

第二章    设计规范.... 3

1.1 数据库表的设计... 3

1.2 约定的流程状态位说明... 3

1.3 页面按钮说明.... 3

1.4 页面生成注意事项及审批相关内容... 4

第三章       OpenJWeb的工作流设计思路.... 5

第四章       OpenJWeb的工作流Demo.. 5

第五章    总结.... 11

 


 

第一章       设计原则

 

OpenJWeb的工作流设计以简单实用为原则,简单实用并不意味着不能支持复杂的业务情况,而是在设计中不固守既有的工作流联盟的标准,也不盲目套用工作流理论中的逻辑。实际上工作流理论中有相当一部分内容是为了解释工作流原理的,例如开始结束节点、工作流实例等,在具体的系统实现中,OpenJWeb的设计更简单。这体现在:

(1)                  不需要设计专门的工作流实例表。实际应用中,每个数据库表存储的记录都可以作为一个流程实例。

(2)                  对于工作流的开始结束节点,本平台中,单据填写人将单据送审的时候是真正的工作流的流程起点,而最终审批通过则作为流程的结束点。

(3)                  不需要为每一流程状态设置对应表单元素的是否可读写的权限,事实上在单据被送审后,任何环节都不应在页面上直接修改单据内容,如果必须修改,可打回单据填写人,所以在后续流程中,单据页面的所有输入项都不可以修改(填写审批意见除外,审批意见存储在单独的表中),这种设计原则可以大大减少页面处理不同流程状态的难度。

(4)                  OpenJWeb是以状态图逻辑解析工作流的,所以不同的状态是不同的节点,节点之间的连线实际是与操作按钮对应的(对人工活动而言),通过不同的操作,将状态从A状态转换为B状态。

(5)                  OpnenJWeb的简单工作流设计方式使得基于GUI的图形流程定义工具不再成为工作流的核心,因为没有GUI工具也可以很快的定义工作流。不使用GUI工具同时也意味着项目的成本大大降低。

(6)                  OpenJWeb的单据页面中的与审批相关的按钮是动态生成的,所以增加新的审批时,页面上会自动显示对应的审批按钮。

 

第二章       设计规范

1.1 数据库表的设计

   OpenJWeb平台在生成数据库表时自动生成flow_status字段,此字段用作流程状态位标识别。

 

1.2 约定的流程状态位说明

 

状态位编码

状态位名称

状态位说明

00

初始

当录入新的单据后,保存时默认的状态。状态为00的因为没有流程审批信息,所以可直接物理删除。

01

已送审

只有初始状态(00)和打回状态(97)的单据才可以送审,送审后才算工作流正式启动。

97

打回

打回的单据只有单据创建人可以进行逻辑删除和再次送审。

98

逻辑删除

当单据被打回时,如果单据填写人作废此单据,可执行逻辑删除,这是将流程状态位设置位98,原则上应控制打回后逻辑删除,其他状态不应执行逻辑删除。

99

审批通过

单据最终审批通过,标识流程结束,工作流引擎不再监控审批通过的单据。

 

在流程定义中,初始(00)—已送审(01)是通过送审按钮实现的,这个功能不需要在审批流中定义,实际上,当状态为01才是真正工作流开始的状态。

以上状态位在生成功能页面时会自动插入到流程状态为定义表(wf_status_def)中。

当审批通过、打回时由工作流引擎自动发送邮件或手机短信、内部短信等形式通知单据创建人,如果需要同时通知其他人员,具体实现方式另行考虑。

打回和审批通过是工作流引擎自动计算的,各环节审批人只需要选择同意不同意,工作流引擎会自动计算审批逻辑。

1.3 页面按钮说明

与工作流相关的页面按钮说明:

 

按钮

说明

增加

增加按钮属于功能权限,只要进行功能授权就可以显示。在编辑页面和列表页面都有增加按钮。

删除

未送审的初始状态的记录(状态位00)可以进行物理删除。

保存

对于流程相关的表单,只有新记录、状态为初始(00)或者打回(97)的状态才能显示保存按钮。如果不是流程相关的页面,则可显示保存按钮。

作废

当单据被打回时,如果单据送审人不想再修改后送审,则点作废可设置逻辑删除状态(98),系统可根据业务需要来决定是否定时清除作废的单据还是保留,作废单据如清除会同时清除审批日志。

送审

当单据为初始状态,可显示送审按钮,只有在初始、打回状态才会显示送审按钮,其他状态隐藏送审按钮。

动态审批按钮

根据流程设置动态显示的各审批环节的按钮。

 

1.4 页面生成注意事项及审批相关内容

 

生成页面时,如果需要生成流程相关的页面,则应在表结构定义页面中,相应表设置必须勾选是否创建业务逻辑类为“是”,是否监控流程为“是”。见下图:

 

 

下表是各流程状态下的页面审批相关元素的控制

 

状态位

是否可编辑

是否显示

审批按钮

显示审批意

见输入框

是否显示

审批日志

初始(00)

打回(97)

删除(98)

通过(99)

 

第三章       OpenJWeb的工作流设计思路

OpenJWeb工作流主要考虑业务系统中使用较多的审批型流程。以状态图而不是活动图作为工作流设计逻辑。大致的设计思路:

(1)              首先定义每个业务表单的状态位。例如借款申请可定义:已送审、部门审核通过、财务审核通过、总经理审核通过等节点。每个状态还可以定义入口路由规则为AND还是XOR模式,例如由已送审-部门审核通过的状态有三条分支,如果“部门审核通过”状态设置了入口逻辑为 AND,则三个分支必须全部满足条件。

(2)              审批流设置:定义不同状态之间的连线,对于人工活动,连线实际对应不同的审批操作。审批流设置了每个操作对应的前置流程状态和后置流程状态、页面上对应的操作码、操作按钮的文字、业务对象审批条件(例如不同借款额度由不同的人员审批)、参与者条件、是否发送邮件通知、与或逻辑(这个与或逻辑是针对本操作所有有权限的操作人来计算的)

(3)              打回:打回是系统根据设置的规则自动判断的,由系统定时计算哪些单据被打回,打回后,业务对象会生成新的事务ID(可称为令牌),这样即使在不同的环节有未处理的待办信息也不受影响,因为打回后系统会根据新的令牌来生成待办任务。

(4)              工作流定时器:监控所有的业务对象,每3分钟运行一次,用于生成待办任务、根据流程规则自动转换流程状态,以及待办、审批通过时进行邮件通知等。

(5)              待办任务显示:工作流自动生成待办任务,任务处理完成后为待办任务设置完成标志和完成时间,同时待办任务列表会刷新。

(6)              收回:当单据送审后,如果后续环节尚未处理,则可以将单据收回,这个功能很好实现,把单据状态重置为00并生成一个新的令牌就可以了,这样代办任务列表中会自动清除未办事宜。

(7)              审批环节的投票计算:

目前为 AND XOR模式,暂未实现按绝对人数或比例的计算原则。

对于 AND模式,如果所有人都投票且投票同意,则此环节审批通过;

                如果存在否决票,则此环节审批拒绝;

                如果已投票的都投了同意票,但有未投票的,则暂不处理;

 

对于 XOR模式,如果有至少一人投票同意,则此环节审批通过;

                如果所有人都投否决票,则此环节审批拒绝;

                如果已投票没有投同意票,但有未投票的,则暂不处理;

 

第四章       OpenJWeb的工作流Demo

 

第一步,定义流程表单并生成表单页面,这个过程与非流程的定义过程是一样的,只是在建表页面要选择“是否创建业务逻辑类”和“是否监控流程”为“是”。

 

第二步,页面生成后,定义流程状态位,功能点位于(工作流-流程状态位),列表页面如下:

 

 

上图中表单设置已不使用。在生成功能页面时,00,01,97,98,99状态为系统自动插入,这里定义了1个新状态位,分别是02(部门审核通过),下面是编辑页面,此状态位定义了入口路由为 AND:

 

 

第三步定义审批线,每个审批线实际对应页面上的审批环节的radion按钮,本功能位于:工作流-审批流设置。下图是审批流设置的列表页面:

 

下面是由送审-部门审核通过的审批设置:

 

 

这里设置的审批线为01-02,即送审状态-部门审核通过状态,对应的页面按钮为部门审核,动作码为doDeptCheck,业务对象审批条件为借款额度小于100(loanAmt<100),线内的投票逻辑为 AND(须全部通过),是否人机交互选择为是,表示为人工活动。参与者为erpadmin帐号,参与者表达式必须以 $user.loginIdin开头。

 

下面是总经理审核页面:

 

 

这里没有定义审批条件说明只要状态为02,就可以审批。参与者为dmshys01,必须全部同意才能通过。

这里我们再补充一条01-02的审批线为财务审批,授予用户erp, 这样我们可以看到erp用户可以选择两个审批线中的一个进行审批。见下图:

 

 

第四步,流程状态和审批线设置好后,下面我们录入一个新的借款申请,见下图(功能菜单位于办公自动化-借款申请):

 

填写后如果点保存,则保存后为00状态,也可直接点“送审”。送审后,工作流引擎会定时计算待办任务,稍等3分钟我们用erp登录,可以看到待办任务及审核页面(待办任务见工作流-待办任务列表),因为有两个审批环节,所以出现两个待办任务(最后2条):

 

 

点上面的最后一条进行部门审核,见下图的审核页面:

 

点审核通过之后,新的审批界面(已审批的环节不再显示):

 

 

再次审批通过,由于当前用户erp已没有其他审批环节,则界面显示如下(已隐藏审批意见输入和审核通过、拒绝按钮):

 

 

(说明:单据上应显示审批人的姓名,登录帐号,所在部门等,容以后补充。另外待办任务中还可增加一个删除功能,如果因特殊情况已办理而待办任务仍出现,则可手工删除待办任务,因工作流定时器虽可生成待办任务,但用户可直接打开业务表单显示未审核的内容进行处理,两个操作不在同一数据库事务中。).

 

审批完成后设置待办任务为已处理,这时再查看待办任务则处理的环节不再显示:

 

上图中可以看到,最新的2条待办任务已经不出现了。但所有环节审批完成后,打开单据页面,样式如下:

 

 

在审批环节全部完成后,由工作流引擎定时计算最终的审批结果为通过,并自动进行状态转换。另外页面中会显示每个审批人的审批记录,当最终审批完成后,审批意见填写和审批按钮都被自动隐藏。

在工作流引擎计算出审批状态为通过时,应向申请人发一封通知邮件,或者还可以定义其他人员接收邮件。因邮件发送本平台中已经实现,所以可以在状态转换时把邮件调用增加到工作流引擎中。

第五章       总结

 

从上面的介绍中可以看出,openjweb的工作流设计是非常简单易用的。而且表单定义使用了现有的表单生成功能,用户不需要自己再开发复杂的表单定义工具。用户在建表时只要选择是否流程控制和是否生成业务逻辑类为是,就可以生成带审批流的表单页面。