activiti流程引擎 使用

发布时间 2023-06-09 15:41:53作者: 快乐小洋人

什么是Activiti?

Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss jBPM的项目架构师,它特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务
流程图。

各工作流框架对比

支持DB对比

功能对比

总结:

在微服务、云计算、服务编排、LCDP等大环境下,camunda的前景优势会慢慢体现出来,作为下一代的工作流引擎,也会逐渐引起更多人的关注。
Activiti和Flowable作为传统的工作流引擎,其设计思想和理念还是很值得CRUD boy们去学习研究下的。

为什么用业务流程管理框架

比如说在学校我们会遇到请假写请假条的情况,需要经过多层的同意才能确定能不能请假。

请假的流程是:班主任->任课老师->教学总监->校长

我们作为一个学生,不可能直接跳过老师,去找校长申请请假的,请假的流程是一步一步的,并不能做跳跃,也就是当班主任没有批准请假的时候,即使你去找任课老师了,任课老师会让你回去找班主任的,作为任课老师了,只关注班主任有没有批准你请假,同理,作为校长,只关注教学总监有没有批准你请假,当教学总监还没有批准你请假时,你请假的请求是不会出现在校长的范围里的。

如果没有使用流程框架那我们需要维护一个变量,来不断传递过去给下一个处理者...如果一切正常,需求不会变,并没有条件的处理。这是我们非常希望看到的...但是,如果有条件判断,比如:请假三天以下、请假三天以上的处理方式不一样,需求会变,比如:不需要校长批准了,教学总监批准完,你就能够请假了,那么我们的代码就会变得乱

数据库

Activiti自生成的25张数据表,都是是ACT_开头的,第二部分是表示表的用途的两个字母缩写标识,用途也和服务的API对应。

  • act_hi_*:'hi’表示 history,此前缀的表包含历史数据,如历史(结束)流程实例,变量,任务等等。
  • act_ge_*:'ge’表示 general,此前缀的表为通用数据,用于不同场景中。
  • act_evt_*:'evt’表示 event,此前缀的表为事件日志。
  • act_procdef_*:'procdef’表示 processdefine,此前缀的表为记录流程定义信息。
  • act_re_*:'re’表示 repository,此前缀的表包含了流程定义和流程静态资源(图片,规则等等)。
  • act_ru_*:'ru’表示 runtime,此前缀的表是记录运行时的数据,包含流程实例,任务,变量,异步任务等运行中的数据。Activiti只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录。

通用数据(act_ge_)

流程定义表(act_re_)

运行实例表(act_ru_)

历史流程表(act_hi_)

其他表