JBPM4入門——8.等待節點的分支執行
阿新 • • 發佈:2019-01-26
先發布流程定義------>然後建立流程例項------>然後執行流程例項
以下是跟以前一樣的執行方法。直接根據表中的ID來執行。
package com.test.test; import java.util.Iterator; import java.util.List; import org.jbpm.api.ProcessDefinition; import org.jbpm.api.ProcessDefinitionQuery; import org.jbpm.api.ProcessInstance; import com.test.util.JbpmUtil; public class Test { /** * 中間部分程式碼省略。。。。。。。。 * @param processInstanceId * @return */ public static void main(String[] args) { Test test = new Test(); // test.deploy("simple.jpdl.xml");//流程定義的釋出 // test.createInstance("simple");//建立流程例項 test.execute("simple.240007");//執行流程例項 } }
但是以上的執行結果不會變。還會停留在當前的等待節點上。
分支情況下:如果還是根據ID來執行的話。結果不會變、還停留在之前的那個等待節點上:意思就是
當state1如果直接根據ID來執行的話(下圖)ACTIVITYNAME的值還會停留在state1這個等待節點上。因為沒給它具體指定走哪條線。它不會執行。
如果是JBPM 3版本的話 它會隨機找一條線來執行。
如果想讓它按照自己的意圖來執行的話:隨意的讓它執行某一條線的話、需要根據這些transitionName來操作、也就是 to state2 to state3 這些名字來操作
操作思路為:在原來的執行流程例項的方法中。加一個引數:String transitionName 表示是通過線條名字來執行下一個流程節點
程式碼如下:
package com.test.test; import java.util.Iterator; import java.util.List; import org.jbpm.api.ProcessDefinition; import org.jbpm.api.ProcessDefinitionQuery; import org.jbpm.api.ProcessInstance; import com.test.util.JbpmUtil; public class Test { /** * 執行流程例項:通過transition 指向的路徑根據名字執行(to state1 to state2 to end1......) * @param processInstanceId * @return */ public ProcessInstance execute(String processInstanceId,String transitionName){ return JbpmUtil.getExecutionService().signalExecutionById(processInstanceId,transitionName); } public static void main(String[] args) { Test test = new Test(); // test.deploy("simple.jpdl.xml");//流程定義的釋出 // test.createInstance("simple");//建立流程例項 // test.execute("simple.240007");//執行流程例項 test.execute("simple.240007","to state3");//執行流程例項 } }
再檢視資料庫的話已經到state3這個節點了: