activiti 6.0.0.4版本判断当前会签的UserTask是否为多实例任务


/**
* @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对象可以获取task的管理对象

posted @ 2020-08-17 10:02  hatricks  阅读(1856)  评论(1)    收藏  举报