activiti 6.0.0.4 判断UserTask是否为多实例

443 阅读1分钟

    /**
     * @param task 任务节点id
     * @return boolean (这里用一句话描述返回结果说明)
     * @Title: isMultiInstance 是否为多实例节点
     * @Description: 是否为多实例节点
     */
    private boolean isMultiInstance(TaskEntity task) {
        // 获取流程定义id
        boolean flag = false;
        String processDefinitionId = task.getProcessDefinitionId();
        Process process = ProcessDefinitionUtil.getProcess(processDefinitionId);
        FlowElement flowElement = process.getFlowElement(task.getTaskDefinitionKey());
        // 根据活动id获取活动实例
        if (flowElement instanceof UserTask) {
            UserTask userTask = (UserTask) flowElement;
            if (userTask.getBehavior() instanceof ParallelMultiInstanceBehavior) {
                ParallelMultiInstanceBehavior behavior = (ParallelMultiInstanceBehavior) userTask.getBehavior();
                if (behavior != null && behavior.getCollectionExpression() != null) {
                    flag = true;
                }
            }
        }
        return flag;
    }

当前TaskEntity可从执行期中的commandcontext上下文中获得taskEntityManager进一步获得节点对象