flowable 获取当前任务流程图片的输入流

/**
	 * 获取当前任务流程图片的输入流
	 * @param PROC_INST_ID_ 流程实例ID
	 * @from  fhadmin.cn
	 */
	public InputStream genProcessDiagram(String PROC_INST_ID_, String type){
		/* 获得活动的节点  */
        String processDefinitionId = "";
        if (this.isFinished(PROC_INST_ID_)) {	// 如果流程已经结束,则得到结束节点
            HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(PROC_INST_ID_).singleResult();
            processDefinitionId=pi.getProcessDefinitionId();
        } else {							// 如果流程没有结束,则取当前活动节点
        	/* 根据流程实例ID获得当前处于活动状态的ActivityId合集  */
            ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(PROC_INST_ID_).singleResult();
            processDefinitionId = pi.getProcessDefinitionId();
        }
        /* 获得活动的节点对象  */
        List<HistoricActivityInstance> highLightedActivitList =  historyService.createHistoricActivityInstanceQuery().processInsta
Flowable中,可以使用程引擎提供的API获取当前任务的上一级任务节点。具体步骤如下: 1. 获取当前任务的ID,可以使用TaskService提供的方法`getCurrentTaskId()`获取。 2. 使用TaskService提供的方法`createTaskQuery().taskId(taskId).singleResult()`获取当前任务对象。 3. 从当前任务对象中获取程实例ID,即`processInstanceId`。 4. 使用HistoryService提供的方法`createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).activityType("userTask").finished().orderByHistoricActivityInstanceEndTime().desc().list()`获取当前程实例中所有已完成的用户任务节点。 5. 遍历已完成的用户任务节点,找到当前任务的上一级任务节点。可以通过比较任务节点的结束时间来确定上一级任务节点。 6. 如果找到了上一级任务节点,可以使用其ID启动一个新的任务。 示例代码如下: ``` String taskId = taskService.getCurrentTaskId(); Task currentTask = taskService.createTaskQuery().taskId(taskId).singleResult(); String processInstanceId = currentTask.getProcessInstanceId(); List<HistoricActivityInstance> activityInstances = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).activityType("userTask").finished().orderByHistoricActivityInstanceEndTime().desc().list(); for (HistoricActivityInstance activityInstance : activityInstances) { // 找到当前任务的上一级任务节点 if (activityInstance.getEndTime().before(currentTask.getCreateTime())) { String taskDefinitionKey = activityInstance.getActivityId(); Task previousTask = taskService.newTask(); previousTask.setTaskDefinitionKey(taskDefinitionKey); previousTask.setAssignee("assignee"); previousTask.setDueDate(new Date()); taskService.saveTask(previousTask); break; } } ``` 需要注意的是,以上代码仅适用于顺序程。如果程中存在并行网关等情况,需要根据具体程在代码中进行适当的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值