1、新建一个java工程,然后导入lib下的所有jar,和jbpm.jar
2、把以下几个自带的配置文件复制到src下面,因为jbpm此时使用的是内存数据库,因此不需要配置
/jbpmTest/src/jbpm.cfg.xml
/jbpmTest/src/jbpm.hibernate.cfg.xml
/jbpmTest/src/jbpm.mail.properties
/jbpmTest/src/jbpm.mail.templates.xml
/jbpmTest/src/logging.properties
3、在src下面建立hello.jdpl.xml文件,创建一个简单的流程定义
4、建立一个测试类,代码如下:
private ProcessEngine engine; private RepositoryService repositoryService; public deployTest() { engine = Configuration.getProcessEngine(); repositoryService = engine.getRepositoryService(); } /** * 发布流程定义 */ public void testDeploy(){ String deploymentId = repositoryService.createDeployment().addResourceFromClasspath("hello.jpdl.xml").deploy(); List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery().list(); for (ProcessDefinition processDefinition : list) { System.out.println("注意了:"+processDefinition.getId()+":"+processDefinition.getName()); } }
注意:jbpm一切以processEngine为基础的,它的创建是Configuration获取的
创建流程定义createDeployment后还需要deploy()一下
repositoryService.createDeploymentQuery()是查所有的deployment的,而不是
repositoryService.createProcessDefinitionQuery()
同样,processDefinition.getDeploymentId()只是获得deployment的id,而不是流程定义的id,processDefinition.getId()才是,他对应hello-1。processDefinition.getName()的名字就是jpdl文件中process name="hello"。
级联删除某个流程定义下所有的信息:
repositoryService.deleteDeploymentCascade(deploymentId);