風人園

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

          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 風人園 閱讀(1820) 評論(0)  編輯  收藏 所屬分類: jBPM

          主站蜘蛛池模板: 孝义市| 时尚| 安远县| 永泰县| 宜丰县| 洛宁县| 奈曼旗| 忻城县| 松阳县| 镇远县| 调兵山市| 西乡县| 双城市| 贵州省| 佛教| 大宁县| 涞水县| 靖江市| 张家界市| 军事| 乌鲁木齐市| 饶平县| 定安县| 社旗县| 汶上县| 忻城县| 普宁市| 陆丰市| 开封市| 阜新市| 桃园市| 左贡县| 寿光市| 北票市| 名山县| 扶余县| 湖南省| 湟中县| 延吉市| 绥宁县| 东乡族自治县|