说明
本系列教程目前已经完结,点击以下链接查看完整教程
- SpringBoot Activiti6系列教程(一)-activiti-app部署
- SpringBoot Activiti6系列教程(二)-基于mysql数据库初始化
- SpringBoot Activiti6系列教程(三)-开发一个简单的SpringBoot activiti6应用程序
- SpringBoot Activiti6系列教程(四)-流程部署
- SpringBoot Activiti6系列教程(五)-activiti api
- SpringBoot Activiti6系列教程(六)-Execution说明
- SpringBoot Activiti6系列教程(七)-变量
- SpringBoot Activiti6系列教程(八)-流程拒绝实现
- SpringBoot Activiti6系列教程(九)-流程回退实现
- SpringBoot Activiti6系列教程(十)-流程加签征询实现(完结篇)
介绍
Activiti api设计的非常友好,使用的过程中也是学习到了api设计的一些技巧,有时间也会整理下,activit api主要是分两大块
- Service
- Query
Service负责执行动作,Query负责执行查询,也就是涉及到数据的增、删、改
由Service负责,涉及到数据的查
由Query负责,在spring boot中,Service可以通过注入获取,Query可以通过相应的Service获取,所有的Service都可以通过ProcessEngine
获取。
Service
activiti有8个service管理着activiti所有的资源
service名称 | 说明 |
---|---|
TaskService | 对用户任务进行操作和查询 |
RepositoryService | 对activiti资源进行操作,比如部署文件,附件 |
RuntimeService | 运行时服务,可以对运行时流程进行修改,如增加变量,移除变量等 |
IdentityService | 身份认证服务,对用户,用户组,用户角色进行操作 |
HistoryService | 历史记录服务,对审批历史进行操作 |
FormService | 表单服务,操作表单数据 |
DynamicBpmnService | 通过该服务,可以动态修改流程 |
ManagementService | 管理服务,查看当前activiti系统信息,不会在应用里用到,一般用于管理系统里 |
Query
之前章节提到,activiti总共会创建28张表,对于一个流程系统来说,28张表并不算多,你完全可以阅读源码或者发起几个流程看出各表之间的关系,然后自定义一些查询,但完全没这个必要,因为api的Query查询基本涵盖了所有的查询需求,而且因为其友好的api设计大部分的函数通过名称就能知道其功能,也可以通过功能反推其api名称。
这里稍微介绍下Query的设计,大家也可以学习下
public interface Query<T extends Query<?, ?>, U extends Object> {
/** 升序操作 */
T asc();
/** 降序操作 */
T desc();
/** 计算总数 */
long count();
/** 查询单个结果 */
U singleResult();
/** 查询列表 */
List<U> list();
/** 分页查询 */
List<U> listPage(int firstResult, int maxResults);
}
定义了5个基本操作,2个T和U的泛型,T为Query本身,在非数据返回的操作返回T自身可以让api以builder进行调用,U为操作的数据类型。
以下是一个实现类TaskQueryInfo
的定义
public interface TaskInfoQuery<T extends TaskInfoQuery<?, ?>, V extends TaskInfo> extends Query<T, V>{
}
然后将表中重要业务字段作为查询字段,并提供多种方式查询,以taskName
为例
- T taskName(String name); 相等查询
- T taskNameIn(List<String> nameList); in查询
- T taskNameInIgnoreCase(List<String> nameList); 不分大小写in查询
- T taskNameLike(String nameLike); 模糊查询
- T taskNameLikeIgnoreCase(String nameLike); 不分大小写模糊查询
提供多个字段排序操作
ProcessEngine
ProcessEngine
包含所有的service
public interface ProcessEngine {
String getName();
void close();
RepositoryService getRepositoryService();
RuntimeService getRuntimeService();
FormService getFormService();
TaskService getTaskService();
HistoryService getHistoryService();
IdentityService getIdentityService();
ManagementService getManagementService();
DynamicBpmnService getDynamicBpmnService();
ProcessEngineConfiguration getProcessEngineConfiguration();
FormRepositoryService getFormEngineRepositoryService();
org.activiti.form.api.FormService getFormEngineFormService();
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。