简易工作流设计思考(欢迎补充和批评)

讨论地址:http://www.minioa.net/viewtopic.php?f=7&t=217

目标要求
满足企业管理流程网上审批的现实需求

功能要求
1、表单设计(略)
2、表单支持附件
3、表单修改权限控制
4、可定义审批节点,可设置节点过期时间,并设置流程节点事件,
5、过期节点任务即时提醒,实现任务推送
6、节点完成或创建时可提醒,包括邮件、站内短信或手机短信,可以同时抄送审批流程外的人。
7、支持节点分支和合并,例如条件分支下的审批金额的判断
8、可以隐藏审批意见
9、支持自由流程和固定流程
10、支持流程挂起、终止
11、支持流程版本管理
12、可在手机上进行审批
13、支持子流程
14、流程统计和报表
15、流程图动态显示流程执行情况
16、流程设计器(略)
17、审批权限授权,例如出差代理
18、支持竞争执行
19、支持M<=N的节点处理。例如,同时启动了N个任务,只要其中的M个任务完成即可继续执行。

基础准备
要求组织结构提供岗位关系表,可以清楚的判断当前申请人的岗位,申请人的上下级,以及部门经理等信息。
允许一人多岗。
流程人员邮箱有效。

工作流引擎设计
流程定义表
表名:core_processdefinition
主要字段,流程名称、流程描述、流程图(一张图片)、流程创建时执行的sql、删除前的sql,表单视图。

节点定义表
表名:core_processdefinition_task
主要字段,
processDefId 流程id
taskCode 从0开始,第一个任务必须是0,01表示是任务0的第一个任务
taskName
taskType 0表示是自流程,1表示是任务
taskApproveType 审批方式,指派给人,指派给角色,指派给岗位,部门经理
taskApprover 审批人
taskDuation 期限
taskNextStep 节点操作
approved=agree:2;approved=reject:1000;approved=withdraw:0;sql(select 1 from dual)=1:2
approved表示审批结果, 同意agree,拒绝reject,退回withdraw,SQL()表示取得SQL语句返回结果
例如,approved=agree:2,表示同意时,流转至任务2。
任务完成时,通过这个表单式来控制流转方向。
如果approved表示给出了审批意见,同意、拒绝或退回,agree:2表示如果给出了同意意见,就流转至任务2
reject:1000表示拒绝的话就结束流程
sql(select 1 from dual)=1:2表示通过sql语句来判断,如果sql()返回结果是1,就执行任务2

taskNextSql 任务完成时执行的sql,支持流程实例id和表单id。

任务代理表
表名:core_task_agent
允许一个人按照流程节点指派审批代理人。

流程实例表
表名:core_process

任务列表
表名:core_task
交谈中请勿轻信汇款、中奖信息、陌生电话,勿使用外挂软件。

CREATE TABLE `minioa`.`core_task` (
`ID_` int(10) unsigned NOT NULL auto_increment,
`CID_` int(10) unsigned default NULL,
`CDATE_` datetime default NULL,
`MID_` int(10) unsigned default NULL,
`MDATE_` datetime default NULL,
`processId` int(10) unsigned default NULL,
`taskDefId` int(10) unsigned default NULL,
`startDate` datetime default NULL,
`endDate` datetime default NULL,
`taskStatus` varchar(45) default NULL,
`note` varchar(400) default NULL,
`uuid` varchar(45) default NULL,
`taskApprover` varchar(45) default NULL,
PRIMARY KEY (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
前5个是系统字段
processId是流程实例id,对应core_process
taskDefId是节点对应id,对应core_processdefition_task
startDate任务开始日期
endDate任务结束日期
taskStatus任务状态 running还是agree 或reject
taskApprover是最终审批人的账号
note是审批意见
uuid也算是个唯一标识,有用处

过期任务提醒
创建一个定时器,对过期任务每天提醒一次。

流程和表单绑定
给表单添加一个流程按钮,设置好流程id和表单名称两个参数。

流程实例页面,
processentity.xhtml

表单设计(略)
自行设计流程表单,也要设计一张表单视图,在流程实例中显示。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值