欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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();