Activiti7是一个工作流引擎

何为工作流?

工作的一个流程,事务发展的一个业务过程。
如请假流程:
员工申请----部门主管审批----总经理审批----归档录入
在计算机的帮助下,能够实现实现流程的自动化控制,就称为工作流。

何为工作流引擎?

实现流程的自动化的引擎。

Activiti7的特点:

在业务流程变更之后,不需要改动源代码,仅需更新业务流程图。

Activiti7内部的实现机制:

核心思想:

  1. 将流程图画好;
  2. 将流程图中每一个结点的数据读取并放入表中;
  3. 读取表中的第一条数据(记录)并进行处理;
  4. 保留处理结果,并将上一条数据(记录)删除。

技术方案:

  1. 业务流程图规范化,要遵守一套标准;
  2. 业务流程图(bpmn文件)本质上是一个xml文件,这样就可以存入所要的数据;
  3. 读取业务流程图的过程就是解析xml文件的过程;
  4. 读取一个业务流程图中的节点就相当于是在解析一个xml结构,进一步将数据插入到mysql表中,形成一条记录;
  5. 将所有的结点都读取并存入mysql表中;
  6. 之后的流程只需要读取mysql表中的记录就可以了,读一条记录就相当于读了一个结点;
  7. 业务流程的推进过程就转化为了读表中的数据,并且处理数据,处理结束后将这一行数据删除的过程。

以上述的请假流程为例,所画出的流程图如下:




java activiti task 名称 activiti 详解_流程图


请假流程图

从请假流程开始到结束,一共有5个结点,开始后先进入提交申请结点,提交申请完毕后经理审批结点,此处经理审批完成之后形成新的状态记录,同时把提交申请的记录删除。这样进入下一个结点总经理审批时,总经理能且仅能看到经理审批后的记录,以此类推。