paulwong

          啟動JBPM流程的代碼

          /**
               * 啟動一個流程實例。
               * 
               * 
          @param name
               *            流程名稱。
               * 
          @param version
               *            版本號,默認取最新版本。
               * 
          @param formID
               *            與業務相關的表單編號,可選字段。 該參數的含義為:業務系統可以在填寫完表單信息后,將表單實例的ID作為流程實例變量
               *            保存到工作流系統中,通過該ID可以在業務系統中查找表單信息。當然,也可以將表單實 際信息按照字段進行留成實例變量賦值。
               * 
          @param actor
               *            流程實例發起人。
               * 
          @return 實例ID號+任務實例ID(如果有),格式‘實例ID-任務實例ID’。
               
          */

              
          public String startProcessInstance(String name, int version, String formID,
                      String actor);
                  jbpmContext 
          = jbpmConfiguration.createJbpmContext();
                  
          try {
                      ProcessDefinition def;
                      
          if (version == 0{
                          def 
          = jbpmContext.getGraphSession()
                                  .findLatestProcessDefinition(name);
                      }
           else {
                          def 
          = jbpmContext.getGraphSession().findProcessDefinition(name,
                                  version);
                      }

                      ProcessInstance instance 
          = new ProcessInstance(def);            
                      TaskInstance taskInstance 
          = instance.getTaskMgmtInstance().createStartTaskInstance();                
                      
                      
          if ((formID != null&& (!formID.equals("")))
                          instance.getContextInstance()
                                  .setVariable(
                                          name 
          + "-" + version + "-" + instance.getId()
                                                  
          + "-Form", formID);
                      jbpmContext.save(instance);
                      String rtn 
          = String.valueOf(instance.getId());
                      
                      
          //如果有啟動任務
                      if (taskInstance != null){
                          taskInstance.setActorId(actor);
                          rtn 
          += "-" + String.valueOf(taskInstance.getId());
                      }
          else{
                          instance.getRootToken().signal();
                      }

                      
          return rtn;
                  }
           catch (Exception e) {
                      e.printStackTrace();
                      log.error(e.getMessage());
                  }
           finally {
                      jbpmContext.close();
                  }

                  
          return "";
              }

          posted on 2008-12-31 12:16 paulwong 閱讀(965) 評論(0)  編輯  收藏 所屬分類: JBPM

          主站蜘蛛池模板: 于都县| 上林县| 东乌| 葫芦岛市| 泰和县| 合水县| 佳木斯市| 秦皇岛市| 襄樊市| 达日县| 根河市| 江达县| 沿河| 会昌县| 兰考县| 堆龙德庆县| 根河市| 古交市| 庆城县| 道孚县| 河南省| 五原县| 新源县| 西和县| 江安县| 上杭县| 芮城县| 青神县| 溧水县| 凯里市| 鄂托克前旗| 平凉市| 株洲市| 阿克| 阳春市| 定边县| 丽水市| 罗甸县| 高陵县| 鄂伦春自治旗| 尼木县|