首页 > 学院 > 开发设计 > 正文

Activiti获取当前活动(任务)的出口(动态生成提交按钮)

2019-11-14 20:48:01
字体:
来源:转载
供稿:网友
Activiti获取当前活动(任务)的出口(动态生成提交按钮)

  1、设置出口变量

    当一个任务有一个或多个出口时,可以在出口连线出设置判断条件如图:

    2、根据任务Id获取出口集合

    public List<String> getOutGoingTransNames(String taskId) {        List<String> transNames = new ArrayList<>();        // 1.获取流程定义        Task task = this.taskService.createTaskQuery().taskId(taskId).singleResult();        PRocessDefinitionEntity pd = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(task.getProcessDefinitionId());        // 2.获取流程实例        ProcessInstance pi =runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();         // 3.通过流程实例查找当前活动的ID        String activitiId = pi.getActivityId();        // 4.通过活动的ID在流程定义中找到对应的活动对象        ActivityImpl activity = pd.findActivity(activitiId);        // 5.通过活动对象找当前活动的所有出口         List<PvmTransition> transitions =  activity.getOutgoingTransitions();        // 6.提取所有出口的名称,封装成集合         for (PvmTransition trans : transitions) {             String transName = (String) trans.getProperty("name");             if(StringUtils.isNotBlank(transName)){                 transNames.add(transName);             }        }         if(transNames.size()==0){             transNames.add("提交");//默认         }        return transNames;    }

  3、应用

    在页面展示的时候遍历节点出口,在提交的时候传入相应的提交出口名称

    提交代码:

     Map<String, Object> vars = new HashMap<>();        vars.put("outcome", outcome);//outcome为提交按钮的名称    // 完成任务     taskService.complete(taskId,vars);

      


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表