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 閱讀(958) 評論(0)  編輯  收藏 所屬分類: JBPM

          主站蜘蛛池模板: 平江县| 大竹县| 财经| 祁阳县| 屯昌县| 比如县| 乐亭县| 积石山| 寿光市| 梁河县| 华宁县| 华池县| 昌宁县| 湛江市| 资兴市| 石首市| 东山县| 昔阳县| 乌审旗| 晴隆县| 郑州市| 梅河口市| 灯塔市| 木里| 嘉禾县| 黑山县| 隆昌县| 古田县| 军事| 武穴市| 平定县| 潼南县| 宝清县| 象州县| 定兴县| 金坛市| 永嘉县| 高青县| 九江市| 夏邑县| 博爱县|