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

          主站蜘蛛池模板: 卢湾区| 杨浦区| 安新县| 五河县| 松滋市| 信丰县| 黎平县| 哈尔滨市| 兴海县| 乌什县| 河南省| 阆中市| 水城县| 仲巴县| 时尚| 吉安市| 郴州市| 阆中市| 永兴县| 贵溪市| 杭州市| 辽源市| 曲周县| 江孜县| 龙山县| 永清县| 辛集市| 蒲城县| 武汉市| 奇台县| 齐河县| 青冈县| 吴堡县| 莆田市| 弥勒县| 南投县| 公主岭市| 濉溪县| 潜山县| 谷城县| 宜章县|