jbpm4.4动态路由

/**        * 动态创建连接当前任务节点至名称为destName的节点的Transition        * @param taskId 任务节点ID        * @param sourceName 源节点名称        * @param destName  目标节点名称        */        public TransitionImpl addOutTransition(String piId,ProcessDefinitionImpl pd,String sourceName,String midtransition,String destName){                  EnvironmentFactory environmentFactory = (EnvironmentFactory)JbpmUtil.getProcessEngine();          EnvironmentImpl env=null;         TransitionImpl transition=null;       try {              env = environmentFactory.openEnvironment();              //取得当前流程的活动定义               ActivityImpl sourceActivity = pd.findActivity(sourceName);                      //取得目标的活动定义               ActivityImpl destActivity=pd.findActivity(destName);              //为两个节点创建连接               transition = sourceActivity.createOutgoingTransition();              transition.setName(midtransition.trim());              transition.setDestination(destActivity);            sourceActivity.addOutgoingTransition(transition);                    }catch(Exception ex){              ex.printStackTrace();               }finally{              if(env!=null)env.close();               }        return transition;      }    

 

//将流程指定要新建的transition中     JbpmUtil.getExecutionService().signalExecutionById(JbpmUtil.getTaskService().getTask(taskId).getExecutionId(), transition.getName());  

 

/**        * 动态删除连接sourceName与destName的Transition        * @param taskId        * @param sourceName        * @param destName        */        public void removeOutTransition(ProcessDefinitionImpl pd,String sourceName,String destName){          EnvironmentFactory environmentFactory = (EnvironmentFactory) JbpmUtil.getProcessEngine();          EnvironmentImpl env=null;          try {              env = environmentFactory.openEnvironment();              //取得当前流程的活动定义               ActivityImpl sourceActivity = pd.findActivity(sourceName);                            //若存在这个连接,则需要把该连接删除               List<Transition> trans=sourceActivity.getOutgoingTransitions();              for(Transition tran:trans){                 if(destName.equals(tran.getDestination().getName())){//删除该连接                      trans.remove(tran);                     break;                 }              }          }catch(Exception ex){              ex.printStackTrace();         }finally{              if(env!=null)env.close();          }         }    

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章