activiti中有任务id,获取当前流程节点的信息

/**
	 * 查询当前流程图
	 * @param taskId
	 * @param response
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/showCurrentView")
	public ModelAndView showCurrentView(String taskId,HttpServletResponse response)throws Exception{
		ModelAndView mav=new ModelAndView();
		Task task=taskService.createTaskQuery() // 创建任务查询
				.taskId(taskId) // 根据任务id查询
				.singleResult(); 
		String processDefinitionId=task.getProcessDefinitionId(); // 获取流程定义id
		ProcessDefinition processDefinition=repositoryService.createProcessDefinitionQuery() // 创建流程定义查询
				.processDefinitionId(processDefinitionId) // 根据流程定义id查询
				.singleResult(); 
		mav.addObject("deploymentId",processDefinition.getDeploymentId()); // 部署id
		mav.addObject("diagramResourceName", processDefinition.getDiagramResourceName()); // 图片资源文件名称
		
	    ProcessDefinitionEntity	processDefinitionEntity=(ProcessDefinitionEntity) repositoryService.getProcessDefinition(processDefinitionId); 
	    String processInstanceId=task.getProcessInstanceId(); // 获取流程实例id
	    ProcessInstance pi=runtimeService.createProcessInstanceQuery() // 根据流程实例id获取流程实例
	    		.processInstanceId(processInstanceId)
	    		.singleResult();
	    ActivityImpl activityImpl=processDefinitionEntity.findActivity(pi.getActivityId()); // 根据活动id获取活动实例
	    mav.addObject("x", activityImpl.getX()); // x坐标
	    mav.addObject("y", activityImpl.getY()); // y坐标
	    mav.addObject("width", activityImpl.getWidth()); // 宽度
	    mav.addObject("height", activityImpl.getHeight()); // 高度
		mav.setViewName("page/currentView");
		return mav;
	}
Activiti 7 中,获取上一个任务节点任务可以通过历史任务查询实现。可以通过以下步骤来获取上一个任务节点任务: 1. 首先,获取当前任务ID。可以使用以下代码获取当前任务ID: ```java String currentTaskId = runtimeService.createProcessInstanceQuery() .processInstanceId(processInstanceId) .singleResult() .getId(); ``` 其中,`processInstanceId` 是当前流程实例的 ID。 2. 然后,使用当前任务 ID 查询历史任务。可以使用以下代码查询历史任务: ```java List<HistoricTaskInstance> historicTasks = historyService.createHistoricTaskInstanceQuery() .processInstanceId(processInstanceId) .orderByHistoricTaskInstanceEndTime() .desc() .list(); ``` 其中,`processInstanceId` 是当前流程实例的 ID。使用 `orderByHistoricTaskInstanceEndTime().desc()` 可以按照任务结束时间倒序排列历史任务。 3. 最后,找到上一个任务节点任务。可以遍历历史任务列表,找到上一个任务节点任务。可以使用以下代码实现: ```java String previousTaskId = null; for (HistoricTaskInstance historicTask : historicTasks) { if (!historicTask.getId().equals(currentTaskId)) { previousTaskId = historicTask.getId(); break; } } ``` 在循环中,判断当前任务ID 是否与当前任务 ID 相等,如果不相等,则认为是上一个任务节点任务。 通过上述步骤,你可以获取上一个任务节点任务 ID(`previousTaskId`),然后可以根据需要进行进一步的操作。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄宝康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值