文章目录
1. Activiti7与6和5的区别
Activiti7与Activiti5和Acticiti6有了很大的改变,宏观来说,Activiti7集成了docker, microservices、kubernetes、activiti cloud、activiti cloud、cloud native、spring boot 2.0。使用方面,它与之前两个版本少了IdentityService和FormService接口。(少的FormService接口的解决方案在下面文章会给出,而少了IdentityService接口仍未找到解决方案,有知道的话可在评论给出)
Activiti7数据库有25张表,Activiti6数据库有28张表。
Activiti7结合动态表单
在Avtiviti5和6中,有核心接口之一的FormService,结合表单可以使用:
StartFormData startFormData = formService.getStartFormData(processDefinitionId);
List<FormProperty> formProperties = startFormData.getFormProperties();
但在Acticiti7中,由于没有了FormService接口,可用以下方法代替:
UserTask userTask =(UserTask)repositoryService.getBpmnModel(task.getProcessDefinitionId()).getFlowElement(task.getTaskDefinitionKey());
List<FormProperty> formProperties = userTask.getFormProperties();
2. Activiti7的25张表命名规则
表名 | 作用 |
---|---|
act_re_* | “re”表示 repository 。这些表包含了流程定义和流程静态资源(图片、规则等) |
act_ru_* | “ru”表示 runtime 。这些运行时的表,包含流程的实例、任务、变量、异步任务等运行中的数据。Activiti 只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录。这样运行时表可以一直很小,速度很快 |
act_hi_* | “hi”表示 history 。这些表包含历史数据,比如历史流程实例、变量、任务等 |
act_ge_* | “ge”表示 general 。通用数据,用于不同的场景下 |
3. Service接口的作用
接口 | 作用 |
---|---|
RepositoryService | activiti 的资源管理类 |
RuntimeService | activiti 的流程运行管理类 |
TaskService | activiti 的任务管理类 |
HistoryService | activiti 的历史管理类 |
ManagerService | activiti 的引擎管理类 |
注意:在Activiti7中,IdentityService, FormService 两个 Service 都被删除
4. Activiti7中新增的两个API
4.1 ProcessRuntime 接口
通过上面的分析,我们发现使用 Activiti7 开发时,只要注入ProcessRuntime 的实现对象,就可以实现流程定义信息的操作。当然这个过程中因为 Activiti7 与SpringSecurity 的强耦合,引导我们也必须将SpringSecurity 加入进来。
4.2 TaskRuntime 接口
上面部分给我们介绍了如何引入Activiti Core 所需的坐标,同时介绍了如何添加 TaskRuntime 实现对象,源码介绍等。我们会发现TaskRuntime 本身就是对于TaskService 的一个封装。