关于业务流/工作流/审批流的简单说明,工作流框架
一、什么是流
随着社会生产力的发展和生产关系性质的变化,人类社会的生产活动开始出现社会分工,个人、企业、甚至是国家都只是完整生产活动中的一环。
社会分工的出现,导致一次完整的生产活动需要由多国家、多企业、多部门、多个人(后文用“人”代指)互相配合、共同完成。
在这种分工的生产活动中,处于后置环节的“人”,对前置环节的“人”的输出物有着内在需求,正是因为这种内在需求,导致了输出物的流动,使输出物从供应方转向需求方,即“流”,也称“流程”。
“流”具有流动性和指向性两个特征。
在当今社会的生产活动中,“流”具体表现有物流、信息流、工作流、资金流等。
二、什么是业务流、工作流、审批流
业务流:即业务流程,指为了完成某项业务而进行的各种工作的有序组合
工作流:即工作流程,指为了完成某项工作而进行的各种动作的有序组合
审批流:即审批流程,是对某项工作的审批活动的有序组合
通常情况下,业务流与工作流是相同的概念,本文即持此观点,后文重点讲解工作流、审批流。
审批流属于工作流的范畴。
三、工作流详解
一项完整的工作流程,应包括流程定义、权限划分两个部分,见如下泳道图:
合同签订的流程从开始到结束,共需要经过5个环节,涉及三个岗位。
1. 流程定义
流程定义的目的,是为了将工作分解并确定分解后的事项先后顺序。
1)工作流程
一个工作流具体包含哪些流程环节以及各环节之间的先后顺序。
比如上图的合同工作流程,包含合同立项-合同签订-合同验收-合同付款-归档五个环节。
合同立项的后置环节是合同签订,以此类推。
在具体开发时,各环节及顺序可以系统内写死也可以自由配置,具体视业务变动频率及开发资源确定。
2)表单设计
即本环节内,应该确定、处理什么内容。
比如合同立项环节,业务人员需要确定并填写合同的甲乙方、立项时间、立项金额等内容。
那么立项表单设计时,就要包含上述的字段信息。
简单的工作流:各环节之间无分支条件,无流程跨越
复杂的工作流:要考虑各环节之间的分支条件,比如满足条件A,走流程1,否则走流程2等,还有环节间的退回情况等
2. 权限的划分
权限划分的目的,是为了确定事项责任归属,即由谁做什么操作。
权限包含功能权限、数据权限、字段权限。
1)功能权限
即用户能看到哪些菜单,能进行什么操作(按钮)。
比如同是合同岗,员工A只有立项权限,无合同签订权限,员工B只有签订权限无立项权限。
2)数据权限
即用户能查看或操作的数据范围,只能查看或操作授权内的数据。
比如员工A只能查看本部门的合同,员工B可以查看全公司的合同。
3)字段权限
即用户能查看或操作的数据字段,只能查看或操作授权内的字段。
比如员工A不可查看合同的立项金额字段,员工B可以查看合同所有字段。
具体权限的设计,需要根据各业务特性及需求来确定。
权限设计参考RBAC权限模型,本文不再赘述。
四、审批流详解
审批流是属于工作流的一个组成部分,所以审批流的设计与工作流基本相似。
还是以合同流程讲解,如下流程:
假设合同立项、合同签订、合同付款均需审批,审批通过后才可进入下一环节。
每个环节的审批人可以是多人,也可以是单人,可以是多人串行审批,也可以是多人并行审批等等。
1. 审批流的触发条件
1)必须审批
指不管当前操作人的权限,环节提交后均需审批。
比如合同立项,提交后必须立项审批。
2)权限外审批
根据当前操作人的权限,若在其权限内,则无需审批并直接进入下一个环节,否则需审批。
比如合同立项,如果立项人员的立项权限是20万,合同立项金额低于20万则直接进入合同签订环节,否则进入立项审批环节。
2. 审批流的设置
关于审批流设置的文章比较多,本文不再赘述。
工作流最重要的点就是厘清流程、确定权限,把好这两个要点,工作流设计便不是问题了。
一、前言
实习第一个工作涉及到的是工作流程,那时正好带着我的wqdjmg他负责审批流程的结构和开发,然后我在大神的胯下茁壮成长。 确实对我来说非常有挑战性。 wqdjmg的体系结构做得很好真是太好了。 基础框架使用了Activiti。 但是,老实说,我学到了很多。 顺便分享一下我们是如何巧妙地使用Activiti框架快速实现我们的工作流程的。
二、最后的成品
1.PC端
pc端的工作主要是定义流程、启动流程,以及我的工作台
流程定义:
我的工作台:
通过APP,帮助用户快速处理工作
发送消息通知:
三、开发前的准备
流程定义:流程怎么走,可以理解为模板流程的实例。 开始申请休假。 这个假期申请是一个过程实力任务。 一个休假过程需要很多人的批准,每个批准都是一个任务。
流程定义:说明审批流程
运行时数据:如果该进程在(什么是运行时)启动后尚未终止,则该进程为运行时。 轮到你处理了,那个任务是执行时,处理结束后不是执行时)
流程:未完成的审批流。 审批流结束后,数据将被删除。 任务:当前审批流到达的执行点。 执行点完成后,数据将被删除并移动到下一个执行点。 进程变量:进程或任务中的变量。 可以自定义变量以记录批准的状态。
历史数据:
进程:进程启动时记录历史数据并记录开始时间。 在进程结束之前不会记录结束时间。 任务:正在运行的任务不会保存在历史记录库中,而是在任务执行完成后保存在历史记录库中。 任务注释:执行任务时可以添加注释信息,直接访问历史记录表。 流程变量:对应运行时的流程变量,结束后进入。 附件:已批准附件的表格。 可以保存对象、保存文件、保存url等。
注意的地方
1.巧妙使用表格中的字段
delete_reason直接存储流程实例的状态:通过、失败、撤销
这里可能需要手动更改表格中的字段。
记住本地查询的使用方法
activiti提供了本机查询方式的自定义查询,该查询使用基于MyBatis的sql语句执行查询。
listtasktasks=tasksersive.createnativetaskquery (
. SQL (选择*从)管理服务. get tablename (task.class ) ) ) )。
' where NAME_=#{taskNmae} ' )
. parameter('tasknmae ','人力资源批准').list );
12343.activiti包含很多Join查询,所以最好在单表中查询
同样,我们需要在本机查询中查询多表查询的界面
4.activiti链编程
5 .使用5.activiti侦听器
6.activiti和spring集成使用
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。