風(fēng)人園

          弱水三千,只取一瓢,便能解渴;佛法無(wú)邊,奉行一法,便能得益。
          隨筆 - 99, 文章 - 181, 評(píng)論 - 56, 引用 - 0
          數(shù)據(jù)加載中……

          jBPM之JbpmContext

          The three most common persistence operations are:

          • Deploying a process
          • Starting a new execution of a process
          • Continuing an execution

          First deploying a process definition. Typically, this will be done directly from the graphical process designer or from the deployprocess ant task. But here you can see how this is done programmatically:

          JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
          try {
            ProcessDefinition processDefinition = ...;
            jbpmContext.deployProcessDefinition(processDefinition);
          } finally {
            jbpmContext.close();
          }

          For the creation of a new process execution, we need to specify of which process definition this execution will be an instance. The most common way to specify this is to refer to the name of the process and let jBPM find the latest version of that process in the database:

          JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
          try {
            String processName = ...;
            ProcessInstance processInstance = 
                jbpmContext.newProcessInstance(processName);
          } finally {
            jbpmContext.close();
          }

          For continuing a process execution, we need to fetch the process instance, the token or the taskInstance from the database, invoke some methods on the POJO jBPM objects and afterwards save the updates made to the processInstance into the database again.

          JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
          try {
            long processInstanceId = ...;
            ProcessInstance processInstance = 
                jbpmContext.loadProcessInstance(processInstanceId);
            processInstance.signal();
            jbpmContext.save(processInstance);
          } finally {
            jbpmContext.close();
          }

          Note that if you use the xxxForUpdate methods in the JbpmContext, an explicit invocation of the jbpmContext.save is not necessary any more because it will then occur automatically during the close of the jbpmContext. E.g. suppose we want to inform jBPM about a taskInstance that has been completed. Note that task instance completion can trigger execution to continue so the processInstance related to the taskInstance must be saved. The most convenient way to do this is to use the loadTaskInstanceForUpdate method:

          JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
          try {
            long taskInstanceId = ...;
            TaskInstance taskInstance = 
                jbpmContext.loadTaskInstanceForUpdate(taskInstanceId);
            taskInstance.end();
          } finally {
            jbpmContext.close();
          }

          posted on 2007-01-18 11:39 風(fēng)人園 閱讀(1820) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): jBPM

          主站蜘蛛池模板: 林州市| 阿尔山市| 平南县| 夹江县| 通辽市| 阿拉善盟| 承德县| 青龙| 阜阳市| 嵊州市| 彭阳县| 郎溪县| 北海市| 昔阳县| 宜州市| 张家界市| 新和县| 富锦市| 宁波市| 武宁县| 延津县| 台前县| 宁都县| 德化县| 柳河县| 鄯善县| 芦山县| 大悟县| 伊春市| 青海省| 漳平市| 阜康市| 荆门市| 台安县| 新田县| 新和县| 台州市| 洞口县| 新营市| 深泽县| 荣成市|