一:JBPM是什么?有什么用?能解决什么问题?
现实生活中有很多需要走一些流程的过程,比如请假流程,报销流程等,使用工作流框架,即可写一个流程即可,添加流程时不在繁琐的建立新的各种配置。
1:jBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级工作流管理系统。
2:他可以使用 JPdl详细定义状态图的每个部分,如起始,结束状态,状态之间的转换等。
3:JBPM还有一个特点就是他使用 Hibernate 来管理他的数据库,他会在数据库中建立十八张表,项目中的流程都存在于这18张表中。不仅如此,他还提供了各个数据库的执行脚本
二:基本操作
1:以请假为例说明其基本操作
1:添加Jar包,提供三个核心配置文件
核心配置文件-----jbpm.cfg.xml
hibernate框架配置文件-----jbpm.hibernate.cfg.xml
日志配置文件-----logging.properties
2:加载发布流程定义:公司中的管理员通过jBPM的designer插件设计了一套请假的流程是什么样子的。
.3:对于流程的基本操作
3.1)部署流程
1 NewDeployment deployment = processEngine.getRepositoryService().createDeployment(); 2 ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(new File("D:\\room\\jbpm\\process\\hello.zip"))); 3 deployment.addResourcesFromZipInputStream(zipInputStream); 4 String id = deployment.deploy(); 5 System.out.println(id);
3.2)删除流程
1 String deploymentId = "1"; 2 processEngine.getRepositoryService().deleteDeployment(deploymentId);
3.3)查询流程
1 ProcessDefinitionQuery query = processEngine.getRepositoryService().createProcessDefinitionQuery(); 2 long count = query.count(); 3 System.out.println("当前系统流程定义的数量 = " + count); 4 List<ProcessDefinition> list = query.list();
3.4)获取一次流程对应的文档(xml文件以及png图片)
1 Set<String> names = processEngine.getRepositoryService().getResourceNames(deploymentId); 2 for(String name:names){ 3 System.out.println(name); 4 } 5 6 //获得一次部署对应的文件输入流 7 String resourceName = "helloworld.jpdl.xml"; 8 //获得部署对应的输入流 9 InputStream in = processEngine.getRepositoryService().getResourceAsStream(deploymentId, resourceName); 10 //通过此输出流将文件保存到本地磁盘 11 OutputStream out = new FileOutputStream(new File("d:\\" + resourceName)); 12 byte[] b =