共计 1967 个字符,预计需要花费 5 分钟才能阅读完成。
介绍
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();}
正文完
发表至:无分类
2019-11-13