activiti数据库表
程序员文章站
2022-06-04 08:08:36
...
Activiti的表都以ACT_开头。第二部分是表示表的用途的两个字母标识。用途也和服务的API对应。
-
ACT_RE_*: 'RE'表示
repository
。这个前缀的表包含了流程定义和流程静态资源(图片,规则,等等)。 -
ACT_RU_*: 'RU'表示
runtime
。这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录。这样运行时表可以一直很小速度很快。 -
ACT_ID_*: 'ID'表示
identity
。这些表包含身份信息,比如用户,组等等。 -
ACT_HI_*: 'HI'表示
history
。这些表包含历史数据,比如历史流程实例,变量,任务等等。
ACT_GE_*: 通用
数据,用于不同场景下。
用户和组相关的表:
select * from ACT_ID_GROUP g where g.type_ ='APPLICATION_MANAGEMENT_ROOM_CONFIRM';
select * from ACT_ID_MEMBERSHIP m where m.group_id_='263';
select * from ACT_ID_USER U WHERE U.ID_ IN (select m.user_id_ from ACT_ID_MEMBERSHIP m where m.group_id_='263') for update;
必须手工插入工作流使用的用户和组信息到以上表中,调用相关的API,工作流才能被指定到特定的组:
//指定候选组
List<Group> groups = new ArrayList<Group>();
List<String> groupids = new ArrayList<String>();
groups.addAll(identityService
.createGroupQuery()
.groupType(
TicketWorkflowGroupTypeEnum.APPLICATION_MANAGEMENT_ROOM_CONFIRM.toString())
.list());
for (Group group : groups) {
groupids.add(group.getId());
}
delegateTask.addCandidateGroups(groupids);
根据用户查询该用户可以认领的Task:
/**
* 分配到我所在的组的工作
* @param userId
* @param pageParams
* @return
*/
@Transactional(readOnly = true)
public List<WeekOnlineProject> findMyGroupTasks(String userId) {
List<Task> tasks = new ArrayList<Task>();
List<Group> list = identityService.createNativeGroupQuery().sql(sql + userId + "'").list();
for (int i = 0; i < list.size(); i++) {
String groupId = list.get(i).getId();
TaskQuery groupQuery = taskService.createTaskQuery().processDefinitionKey(Const.PROJECT_RELEASE_PLAN_PROCESSINSTANCE_ID).taskCandidateGroup(groupId).active().orderByTaskId().
desc().orderByTaskCreateTime().desc();
List<Task> groupList = groupQuery.list();
tasks.addAll(groupList);
}
List<WeekOnlineProject> sts = taskToWeekOnlineProject(tasks) ;
removeEquals(sts);
return sts;
}
这样指定组的用户就可以“认领”和“处理”该Task。
查询节点处理的表单key
String taskFormKey= formService.getTaskFormData(taskId).getFormKey();
上一篇: 数据库表连接