什么是工作流?
https://en.wikipedia.org/wiki/Workflow_engine
就是我提交点东西给老大审批,老大通过的话给别的人审批,再到XX审批,最后一系列的人审批完才通过。中间还可能驳回什么的一个流程。
流程,步骤,定义,实例 分别代表什么,自己要分清楚咯。
java常见的工作流引擎
- activiti
- osWorkflow(已经过时)
- JBPM(较臃肿,但是一个规范)
- bonita(不了解^_^)
个人推荐重点学习activiti。然而要了解JBPM规范。JBPM就像是OSI/RM 7层模型,这是一些良好的定义,但是臃肿;activiti就像是TCP/IP,偏向实际应用。
spring有一个spring web flow。可是这只是个页面流。用于引导页面等。不属于工作流的范围。
常见工作流的模型(库表定义)
- 定义(流程、步骤)
- 实例表(流程实例表、当前步骤表、历史步骤表)
- 表单(一般都要的)
- 步骤执行者(和用户表有一定的关联,可能允许某一些人审批,可能允许某一个人审批,或者主管等,根据实际情况划分)
- 用户表(不一定是工作流的)
上面的几个点不一定代表的是数据表。但是是比较重要的结构。
另外一些很可能需要的表:
- 评审意见(可以放到历史步骤表)
- 委托定义,委托记录表(这个工作流实例本来给我审批的,我委托给谁谁处理。)
举个例子,
先编写XML配置,定义流程。
执行流程的时候,工作流引擎会创建表单数据,创建流程实例数据,创建具体的步骤数据。
提交评审动作,原来的“当前步骤”A变成历史步骤,另外新增一个新的“当前步骤”B。创建评审意见。