zoukankan      html  css  js  c++  java
  • 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);

          

  • 相关阅读:
    僵尸进程
    理论整理
    SQLServer相关概念
    存储过程
    我的简书地址
    swift pragma mark
    苹果iOS开发中如何直接跳转到App Store页面
    使用cocoadPod updating local specs repositories 卡主
    iOS 代码格式化插件Clang-Format
    iOS错误:AFNetworking Error Domain=NSURLErrorDomain Code=-999
  • 原文地址:https://www.cnblogs.com/cxyj/p/3896204.html
Copyright © 2011-2022 走看看