SpringBoot-Activiti6系列教程五activiti-api

44次阅读

共计 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();}

正文完
 0