多实例流程图查看【待完善】

流程图–接上篇

public Map<String, Object> getCoordingByTask(String taskId) {
		// 存放坐标
		Map<String, Object> map = new HashMap<String, Object>();
		// 使用任务ID,查询任务对象
		Task task = taskService.createTaskQuery()//
				.taskId(taskId)// 使用任务ID查询
				.singleResult();
		// 获取流程定义的ID
		String processDefinitionId = task.getProcessDefinitionId();
		// 获取流程定义的实体对象(对应.bpmn文件中的数据)
		ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(processDefinitionId);
		// 流程实例ID
		String processInstanceId = task.getProcessInstanceId();
		// 使用流程实例ID,查询正在执行的执行对象表,获取当前活动对应的流程实例对象
		ProcessInstance pi = runtimeService.createProcessInstanceQuery()// 创建流程实例查询
				.processInstanceId(processInstanceId)// 使用流程实例ID查询
				.singleResult();
		// 获取当前活动的ID:从流程实例中获取,但是如果时多实例的话,将得不到相应的结果,需要从act_run_execution中获取
		String activityId = pi.getActivityId();
		
	// jatham 修改
	if (activityId == null) {
		// 流程实例业务id
		String processInstanceBusinessKey = pi.getBusinessKey();
		List<Execution> executions = runtimeService.createExecutionQuery().processInstanceBusinessKey(processInstanceBusinessKey, true).list();
		for (Execution e : executions) {
			// TODO 这里没有对并行实例做封装
			if (e.getActivityId() != null) {
				activityId = e.getActivityId();
				logger.debug("当前活动的节点id为:" + activityId + ";它的父节点id为:" + e.getParentId());
			}
		}
	}

	// 获取当前活动对象
	ActivityImpl activityImpl = processDefinitionEntity.findActivity(activityId);// 活动ID
	// 获取坐标
	map.put("x", activityImpl.getX());
	map.put("y", activityImpl.getY());
	map.put("width", activityImpl.getWidth());
	map.put("height", activityImpl.getHeight());
	return map;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值