jbpm学习二
来源:互联网 发布:slack mac下载 编辑:程序博客网 时间:2024/06/05 16:07
jbpm中最重要的对象莫过于ProcessEngine对象,他是工作流引擎对象,一切工作流的启动都离不开此对象。
查看 jbpm的API,ProcessEngine对象主要有6个方法,
ProcessEngine具有6个service获得的方法:
RepositoryService : 流程定义管理 (发布,管理,定义流程)
ExecuteService : 流程实例管理 (启动流程实例,监控流程实例运行状态,控制实例流程流转)
TaskService: 任务管理 (任务查看,任务办理)
IdentityService: JBPM用户管理 (管理 用户,组信息)
HistoryService: 历史记录管理 (管理 实例,任务,活动历史记录信息)
ManagementService: 管理JOB(JOB定时任务)
一.RepositoryService对象
RepositoryService对象是由ProcessEngine.getRepositoryService()获得的。
1.jbpm发布流程定义代码如下:
// 1、先获得流程引擎的对象 Configuration configuration = new Configuration(); ProcessEngine processEngine = configuration.buildProcessEngine(); // 2、 获得对应Service对象 RepositoryService repositoryService = processEngine.getRepositoryService(); NewDeployment deployment = repositoryService.createDeployment(); // 3、发布流程定义 deployment.addResourceFromClasspath("holiday.jpdl.xml"); deployment.addResourceFromClasspath("holiday.png"); //实际开发中都用下面的方法,发布Zip压缩包,方便 //deployment.addResourcesFromZipInputStream(new ZipInputStream(new FileInputStream("holiday.zip"))); // 执行发布 deployment.deploy();
流程发布成功后,那么问题来了,发布一个流程都会影响那些表呢?
众所周知,jbpm共18张表,但是发布一个流程只用到4张表,分别如下所示:
(1)jbpm4_property 属性表
此表永远只有一条记录,vlaue记录下一次定义流程的流水id,每次事物结束后,value递增10000。
(2)jbpm4_deployment 流程定义发布表
每次新发布一条流程定义,此表添加一条记录,DBID是该流程定义流水号
(3)jbpm4_lob 大数据表
此表存放定义的流程文件,BLOB_VALUE存放流程文件内容
(4)jbpm4_deployprop 发布流程定义属性表
每次流程定义发布后,会存入4条数据,分别是jpdl版本号,流程定义编号pdid,流程定义关键字pdkey,版本pdversion.
2.执行查询代码
RepositoryService可以获取两个查询对象,分别是
DeploymentQuery:查询jbpm4_deployment表(使用较少)
ProcessDefinitionQuery:查询jbpm4_deployprop表(重点使用),可以对Query设置条件进行查询
RepositoryService repositoryService = new Configuration().buildProcessEngine().getRepositoryService();ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();List<ProcessDefinition> list = processDefinitionQuery.list();System.out.println("共有几个定义:" + list.size());for (ProcessDefinition processDefinition : list) {System.out.println("流程定义编号pdid:" + processDefinition.getId());System.out.println("流程定义名称name:" + processDefinition.getName());System.out.println("流程定义关键字 pdkey:" + processDefinition.getKey());System.out.println("流程定义版本号 pdversion:" + processDefinition.getVersion());}
3.查看流程图
Configuration configuration = new Configuration();ProcessEngine buildProcessEngine = configuration.buildProcessEngine();RepositoryService repositoryService = buildProcessEngine.getRepositoryService();String deploymentId = "1";String resourcename = "holiday.png";InputStream in = repositoryService.getResourceAsStream(deploymentId, resourcename);FileOutputStream out = new FileOutputStream("d:/xx.png");int b;while((b = in.read()) != -1){out.write(b);}in.close();out.close();
查的是jbpm4_lob4表,deploymentId是流程流水号,resourcename除了可以使png等图片,还可以是xml格式的文件。(deploymentId和resourcename可以通过processDefinitionQuery对象获得).
4.流程定义删除
有两种方式删除流程定义:
(1)repositoryService.deleteDeployment(deploymentId);
(2)repositoryService.deleteDeploymentCascade(deploymentId); //deploymentId是流程流水号
Configuration configuration = new Configuration();ProcessEngine buildProcessEngine = configuration.buildProcessEngine();RepositoryService repositoryService = buildProcessEngine.getRepositoryService();repositoryService.deleteDeploymentCascade("1");第一种方式如果有关联流程实例信息就会报错,第二种除了删除流程定义,还会删除关联流程实例,开发中一般都会用第二种。
- jbpm学习二
- jbpm学习(二)
- JBPM学习日志(二)
- Jbpm 4.4学习笔记(二)
- 根据调试信息学习jbpm(二):sessionFactory
- jBPM学习(二)----数据库迁移
- 根据调试信息学习jbpm(二):sessionFactory
- 根据调试信息学习jbpm(二):sessionFactory
- JBPM学习(二)--测试模块代码
- JBPM学习(二):ProcessEngine与Service API
- JBPM学习(二):ProcessEngine与Service API
- Java工作流引擎学习----JBPM(二)
- JBPM--二
- 学习JBPM
- jbpm学习
- jBPM学习
- Jbpm学习
- jbpm学习
- Maven原理和Maven2新特性
- bzoj 2038: [2009国家集训队]小Z的袜子(hose)
- 强连通汇总
- C++ primer plus(第六版)学习笔记、习题答案(2)
- iphone开发/ios开发编程罗盘/指南针开发
- jbpm学习二
- 单调递增子序列(二)(南阳oj214)
- Firebug入门指南
- c语言教程:fopen文件读写函数
- jenkins+maven+junit构建自动化测试,整合junit xml生成直观的测试报告
- java调用CCB的XAI的入站服务
- 时间触发和状态机思想的嵌入式系统 分析都给大家传上去了
- Cocos2d-x3.2总结build.native.py编译问题,Eclipse导入不了
- JSoncpp fatal error C1083: 无法打开编译器生成的文件:“../../build/vs71/release/lib_json\json_value.asm”: 解决方案