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();          }         }    

 

 

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