Activiti7是一个工作流引擎
何为工作流?
工作的一个流程,事务发展的一个业务过程。
如请假流程:
员工申请----部门主管审批----总经理审批----归档录入
在计算机的帮助下,能够实现实现流程的自动化控制,就称为工作流。
何为工作流引擎?
实现流程的自动化的引擎。
Activiti7的特点:
在业务流程变更之后,不需要改动源代码,仅需更新业务流程图。
Activiti7内部的实现机制:
核心思想:
- 将流程图画好;
- 将流程图中每一个结点的数据读取并放入表中;
- 读取表中的第一条数据(记录)并进行处理;
- 保留处理结果,并将上一条数据(记录)删除。
技术方案:
- 业务流程图规范化,要遵守一套标准;
- 业务流程图(bpmn文件)本质上是一个xml文件,这样就可以存入所要的数据;
- 读取业务流程图的过程就是解析xml文件的过程;
- 读取一个业务流程图中的节点就相当于是在解析一个xml结构,进一步将数据插入到mysql表中,形成一条记录;
- 将所有的结点都读取并存入mysql表中;
- 之后的流程只需要读取mysql表中的记录就可以了,读一条记录就相当于读了一个结点;
- 业务流程的推进过程就转化为了读表中的数据,并且处理数据,处理结束后将这一行数据删除的过程。
以上述的请假流程为例,所画出的流程图如下:
请假流程图
从请假流程开始到结束,一共有5个结点,开始后先进入提交申请结点,提交申请完毕后经理审批结点,此处经理审批完成之后形成新的状态记录,同时把提交申请的记录删除。这样进入下一个结点总经理审批时,总经理能且仅能看到经理审批后的记录,以此类推。