概述
Activiti 7 提供 Activiti Cloud 和 Activiti Core 两种使用方式。前者以 Cloud Native 方式提供云端部署并以微服务方式使用;后者仍然可以集成到产品中使用(由集成着自己封装微服务)。
新的 API 封装在 org.activiti.api 包中。目前网上针对这些新 API 的使用方法介绍文档非常少,除了官方 Activiti Core 简单介绍外,就只剩下 Activiti Core Examples 样例代码。
本文尝试对新 API 的使用方法做些简单说明,供大家使用 Activiti 7 时进行参考。
本文的读者是熟悉 Activiti 基本原理,能熟练使用 Activiti 5/6,并希望了解 Activiti 7.x 新提供的 XXXRuntime API 的开发人员,
Activiti 7.x 新 API 的设计思路
从现有官方文档和样例分析看来,Activiti 7.x 新 API 在设计方面做了以下工作:
- 与 Spring Boot 及 Spring Security 做了深度集成。包括流程发起者(Initiator),用户任务(User Task)的执行人(Assignee)等,直接从 Sprint Security 的 Security Context 中获取。当项目集成了 Spring Security 后,会非常方便。
- 服务任务(Service Task)可直接调用 Srping 的 Bean(org.activiti.api.process.runtime.connector.Connector 类型);流程流转过程中的各类事件(如流程启动/完成、任务开始/结束、变量创建等等),均可通过创建 Spring 的 Bean,并返回相应类型来监听和处理。
- 对流程流转过程中的变量(Variable)访问方式进行了重新设计:变量分为流程级别(Process)和任务级别(Task),可分别通过 ProcessRuntime 和 TaskRuntime 进行访问。当然底层实现仍然与 Execution 绑定。个人认为,这部分的设计并不完善,会给流程过程造成很多麻烦。规避方式就是仍然使用原有的 XXXService 接口。详见后文样例。
需说明一点:Activiti 7.x 向前兼容,即原有的 XXXService API 仍然可继续使用。新的 XXXRuntime API 是对原有 XXX Service API 进行了一层封装而已。
上述几点工作中,Spring