JBPM4.4之HelloWorld示例

一般来说都是按照这样几个步骤来做的

1.新建项目
2.src下新建JBPM4 Process Definition命名为hello,会生成hello.jpdl.xml的文件
3.添加依赖库【eclipse或者MyEclipse中右键build path-->add External Archives然后添加jbpm.jar和lib下的所有jar】
4.添加JPBM必须配置文件,进入D:\jbpm-4.4\examples\src 将该目录下所有配置文件拷贝到项目src下



  

至此,环境已经配置完毕,下面就是在hello.jpdl.xml进行设计了,具体内容如下

 

Xml代码   收藏代码
  1. <span style="font-size: medium;"><?xml version="1.0" encoding="UTF-8"?>  
  2. <process name="helloworld" xmlns="http://jbpm.org/4.4/jpdl">  
  3.    <start g="230,25,114,64" name="start1">  
  4.       <transition g="-59,-17" name="to state1" to="中国"/>  
  5.    </start>  
  6.    <end g="168,333,80,51" name="end1"/>  
  7.    <state g="206,194,62,63" name="中国">  
  8.       <transition g="-47,-17" name="to end1" to="end1"/>  
  9.    </state>  
  10. </process></span>  

上面的文件保存之后会自动在SRC下面生成一张一样效果的图片

 

 

 

 下面就要在利用JUNIT来进行第一个示例的各项测试喽

 测试之前,首先说下流程定义和流程实例两个概念,当然是现有流程定义,后可以发起新流程了,好好理解下他们的区别

 下面先上关于流程定义的测试类

 

Java代码   收藏代码
  1. <span style="font-size: medium;">package com.test;  
  2.   
  3. import java.util.List;  
  4.   
  5. import junit.framework.TestCase;  
  6.   
  7. import org.jbpm.api.Configuration;  
  8. import org.jbpm.api.ProcessDefinition;  
  9. import org.jbpm.api.ProcessEngine;  
  10. import org.jbpm.api.RepositoryService;  
  11.   
  12. public class HelloTest extends TestCase {  
  13.       
  14.     //----发布流程定义  
  15.     //第一步:启动流程引擎  
  16.     ProcessEngine engine;  
  17.     public HelloTest(){  
  18.         engine=Configuration.getProcessEngine();  
  19.     }  
  20.     //测试发布  
  21.     public void testDeploy(){  
  22.         //获取流程服务  
  23.         RepositoryService service=engine.getRepositoryService();  
  24.         //把流程定义发布到流程引擎中  
  25.         String developementId=service.createDeployment()  
  26.                               .addResourceFromClasspath("helloworld.jpdl.xml").deploy();  
  27.           
  28.           
  29.         //----查看流程定义  
  30.         //发布流程定义信息,查看已发布流程定义列表  
  31.         List<ProcessDefinition> definitions=service.createProcessDefinitionQuery().list();//执行搜索  
  32.         for (ProcessDefinition processDefinition : definitions) {  
  33.             System.out.println(processDefinition.getId());  
  34.         }  
  35.           
  36.         //----删除流程定义,这里用级联删除会比较好  
  37.         service.deleteDeploymentCascade(developementId);  
  38.           
  39.         //查看输出后流程定义的个数  
  40.         System.out.println(service.createProcessDefinitionQuery().list().size());  
  41.           
  42.     }  
  43.   
  44. }  
  45. </span>  

 

然后就是流程实例测试

 

Java代码   收藏代码
  1. <span style="font-size: medium;">package com.test;  
  2.   
  3. import java.util.List;  
  4.   
  5. import junit.framework.TestCase;  
  6.   
  7. import org.jbpm.api.Configuration;  
  8. import org.jbpm.api.ExecutionService;  
  9. import org.jbpm.api.ProcessEngine;  
  10. import org.jbpm.api.ProcessInstance;  
  11.   
  12. public class ProcessInstanceTest extends TestCase {  
  13.     //----发布流程定义  
  14.     //第一步:启动流程引擎  
  15.     ProcessEngine engine;  
  16.     public ProcessInstanceTest(){  
  17.         engine=Configuration.getProcessEngine();  
  18.     }  
  19.     protected void setUp(){  
  20.         engine.getRepositoryService().createDeployment()  
  21.         .addResourceFromClasspath("helloworld.jpdl.xml").deploy();  
  22.     }  
  23.       
  24.     public void testProcessInstance(){  
  25.         //这个是专门管理流程实例的  
  26.         ExecutionService executionService=engine.getExecutionService();  
  27.         //通过流程定义文件的名称当做KEY来获取流程实例;也就是发布新流程  
  28.         ProcessInstance processInstance=executionService.startProcessInstanceByKey("helloworld");  
  29.         System.out.println(processInstance);  
  30.           
  31.         //这里输出流程实例是否结束,针对本实例来说肯定是FALSE,因为本实例中有STATE,所以会在STATE这里处理等待状态,不会结束   
  32.         //也就是接下来要说的执行等待的流程,除非你调用executionService.signalExecutionById  
  33.         System.out.println(processInstance.isEnded());  
  34.           
  35.         //这个方法将是处理等待转该的流程执行到结束,返回值热仍然是一个流程实例  
  36.         processInstance=executionService.signalExecutionById(processInstance.getId());  
  37.         System.out.println(processInstance.isEnded());  
  38.     }  
  39.     public void testDeleteProcessInstance(){  
  40.         ExecutionService executionService=engine.getExecutionService();  
  41.         ProcessInstance processInstance=executionService.startProcessInstanceByKey("helloworld");  
  42.         executionService.deleteProcessInstanceCascade(processInstance.getId());  
  43.           
  44.     }  
  45.       
  46.     public void testProcessInastanceList(){  
  47.       ExecutionService executionService=engine.getExecutionService();  
  48.       ProcessInstance pi=executionService.startProcessInstanceByKey("helloworld");  
  49.       ProcessInstance pi1=executionService.startProcessInstanceByKey("helloworld");  
  50.       List<ProcessInstance> pis=executionService.createProcessInstanceQuery().list();  
  51.       for (ProcessInstance processInstance : pis) {  
  52.         System.out.println(processInstance);  
  53.     }  
  54.     }  
  55. }  
  56. </span>  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值