`
txf2004
  • 浏览: 6877463 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多

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开头。

下面是总经理审核页面:

st

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics