jpbm4.4之一个简单的流程(来自example的custom)

来源:互联网 发布:gs域名 编辑:程序博客网 时间:2024/05/22 10:29

1.

process.jpdl.xml(文件比寻以jpdl.xml结尾)

<?xml version="1.0" encoding="UTF-8"?>
<process name="Custom" xmlns="http://jbpm.org/4.4/jpdl">
  <start g="20,20,48,48">
    <transition to="print dots" />
  </start>
  <custom name="print dots"
        class="org.jbpm.examples.custom.PrintDots"
        g="96,16,100,52">
    <transition to="mystate" name="to mystate"/>
  </custom>
  <state name="mystate"  g="200,16,250,52">
   <transition to="end" name="to end"/>
  </state>
  <end name="end" g="231,19,80,40"/>
</process>

public static void main(String[] args) {

ProcessEngine en=Configuration.getProcessEngine();
RepositoryService rs=en.getRepositoryService();
ExecutionService executionService=en.getExecutionService();

//String deploymentId=rs.createDeployment().addResourceFromClasspath("com/zuowa/scpower/ivr/process.jpdl.xml").deploy();
//System.out.println("deploymentId"+deploymentId);

List<ProcessDefinition> definitions=rs.createProcessDefinitionQuery().list();//执行搜索   
for (ProcessDefinition processDefinition : definitions) {   
  System.out.println(processDefinition.getId());   
}  
 ProcessInstance processInstance = executionService.startProcessInstanceByKey("Custom");  //注意一启动就是print dots节点
   System.out.println("流程实例Id:" + processInstance.getId()); //流程实例Id:Custom.340001
  System.out.println("流程定义Id:" + processInstance.getProcessDefinitionId());  //流程定义Id:Custom-4
//  
//    // 判断当前是否位于state节点      
  System.out.println("是否位于print dots节点:" + processInstance.isActive("print dots"));    //是否位于print dots节点:true
   System.out.println("向下执行...");         
   Execution executionInPrintDots = processInstance.findActiveExecutionIn("print dots");           //先找到tockon流转到的节点,Execution 就是tockon
   
   String executionId = executionInPrintDots.getId();
   

   System.out.println("executionId=executionInPrintDots.getId():"+executionId+"\n executionInPrintDots"+executionInPrintDots);   //executionId 就是流程实例Id:Custom.340001


   ProcessInstance processInstanceMyState= executionService.signalExecutionById(executionId,"to mystate");      //在这里发信号,真正向下执行
 
  System.out.println("当前流程是否位于mystate节点---->"+processInstanceMyState.isActive("mystate"));     //当前流程是否位于mystate节点---->true
   System.out.println("当前流程是否结束---->"+processInstanceMyState.isEnded());                                         //当前流程是否结束---->false
    ProcessInstance endinstance=executionService.signalExecutionById(processInstanceMyState.getId());    ////在这里发信号,到了end就结束
 System.out.println("当前流程是否结束---->"+endinstance.isEnded());                                                                       //当前流程是否结束---->true
 

print:

流程实例Id:Custom.340001
流程定义Id:Custom-4
是否位于print dots节点:true
向下执行...
executionId=executionInPrintDots.getId():Custom.340001
 executionInPrintDotsexecution[Custom.340001]

当前流程是否位于mystate节点---->true
当前流程是否结束---->false

   

原创粉丝点击