Activiti6-学习笔记(01)-创建的表和API介绍
文档适用于 Activiti 5-6
Activiti 工作流总共包含 23 张数据表(现在是25张,新增了 ACT_EVT_LOG 和 ACT_PROCDEF_INFO )
表名规则
Activiti 使用到的表都是 ACT_ 开头的。表名的第二部分用两个字母表明表的用途。
- ACT_GE_ (GE) 表示 general 全局通用数据及设置,各种情况都使用的数据。
- ACT_HI_ (HI) 表示 history 历史数据表,包含着程执行的历史相关数据,如结束的流程实例,变量,任务,等等
- ACT_ID_ (ID) 表示 identity 组织机构,用户记录,流程中使用到的用户和组。这些表包含标识的信息,如用户,用户组,等等。
- ACT_RE_ (RE) 表示 repository 存储,包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。
- ACT_RU_ (RU) 表示 runtime 运行时,运行时的流程变量,用户任务,变量,职责(job)等运行时的数据。Activiti 只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就保证了这些运行时的表小且快。
25 张表详情
一般数据 (ACT_GE_)
表名 |
说明 |
ACT_GE_BYTEARRAY |
二进制数据表,存储通用的流程定义和流程资源。 |
ACT_GE_PROPERTY |
系统相关属性,属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录。 |
流程历史记录 (ACT_HI_)
表名 |
说明 |
ACT_HI_ACTINST |
历史节点表。 |
ACT_HI_ATTACHMENT |
历史附件表。 |
ACT_HI_COMMENT |
历史意见表。 |
ACT_HI_DETAIL |
历史详情表,提供历史变量的查询。 |
ACT_HI_IDENTITYLINK |
历史流程人员表。 |
ACT_HI_PROCINST |
历史流程实例表。 |
ACT_HI_TASKINST |
历史任务实例表。 |
ACT_HI_VARINST |
历史变量表。 |
用户用户组表 (ACT_ID_)
表名 |
说明 |
ACT_ID_GROUP |
用户组信息表。 |
ACT_ID_INFO |
用户扩展信息表。 |
ACT_ID_MEMBERSHIP |
用户与用户组对应信息表。 |
ACT_ID_USER |
用户信息表。 |
流程定义表 (ACT_RE_)
表名 |
说明 |
ACT_RE_DEPLOYMENT |
部署信息表。 |
ACT_RE_MODEL |
流程设计模型部署表。 |
ACT_RE_PROCDEF |
流程定义数据表。 |
运行实例表 (ACT_RU_)
表名 |
说明 |
ACT_RU_EVENT_SUBSCR |
运行时事件 throwEvent、catchEvent 时间监听信息表。 |
ACT_RU_EXECUTION |
运行时流程执行实例。 |
ACT_RU_IDENTITYLINK |
运行时流程人员表,主要存储任务节点与参与者的相关信息。 |
ACT_RU_JOB |
运行时定时任务数据表。 |
ACT_RU_TASK |
运行时任务节点表。 |
ACT_RU_VARIABLE |
运行时流程变量数据表。 |
其它
表名 |
说明 |
ACT_EVT_LOG |
事件日志。 |
ACT_PROCDEF_INFO |
流程定义的动态变更信息。 |
关于异步的设计描述可以查看官方文档
https://www.activiti.org/userguide/#async_executor_design
Activiti API
在启动流程之间先介绍一下activiti中的几大Service, 这些对象都是从流程引擎里获取的
// 获取流程引擎
private ProcessEngine getProcessEngine() {
// 创建流程引擎配置
ProcessEngineConfiguration configuration = ProcessEngineConfiguration
.createStandaloneInMemProcessEngineConfiguration();
// 设置数据源
// configuration.setDataSource(dataSource);
// 如果不使用数据源, 可以通过配置连接信息来连接数据库
configuration.setJdbcDriver("com.mysql.jdbc.Driver");
configuration.setJdbcUrl("jdbc:mysql:///activiti-demo?useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8");
configuration.setJdbcUsername("root");
configuration.setJdbcPassword("");
// 设置创建表的一个规则,有三种
// DB_SCHEMA_UPDATE_FALSE = "false" 如果数据库里没有acti相关的表, 也不会创建
// DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop" 不管数据库里有没acti的相关表, 都会先删除旧表再创建新表, 不推荐在生产中使用
// DB_SCHEMA_UPDATE_TRUE = "true" 如果数据库里没有acti相关的表, 会自动创建
// 我这是做测试, 就选择每次先删除旧的表再创建新的表的规则了
// 仔细看看, 是不是有些类似于hibernate里的ddl-auto :)
configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
// 构建流程引擎, 这一步就会创建好表, 但基本上表内都是空的, 因为还没有部署, 再没有流程实例
ProcessEngine processEngine = configuration.buildProcessEngine();
return processEngine;
}
@Test
public void activitiApi() {
ProcessEngine processEngine = getProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
FormService formService = processEngine.getFormService();
HistoryService historyService = processEngine.getHistoryService();
IdentityService identityService = processEngine.getIdentityService();
ManagementService managementService = processEngine.getManagementService();
RuntimeService runtimeService = processEngine.getRuntimeService();
TaskService taskService = processEngine.getTaskService();
}
Service |
管理的表 |
RepositoryService |
通用类的表 |
FormService |
通过表单提交的任务的服务类 |
HistoryService |
历史记录表 |
IdentityService |
用户信息表 |
ManagementService |
自定义查询的服务类managementService.executeCustomSql |
RuntimeService |
运行时相关表 |
TaskService |
任务表, 可以查询 ACT_RU_、ACT_HI_ |