JBPM4.4_管理流程定义
1. 管理流程定义
没有更新功能
1.1. 部署流程定义
注意区分Deployment与ProcessDefinition
1.1.1. 示例代码1:流程定义有关文件在classpath中
String deploymentId = processEngine.getRepositoryService()
.createDeployment()
.addResourceFromClasspath("process/test.jpdl.xml")
.addResourceFromClasspath("process/test.png")
.deploy();
1.1.2. 示例代码2:一次添加多个流程定义有关文件(要先打成zip包)
String deploymentId = processEngine.getRepositoryService()
.createDeployment()
.addResourcesFromZipInputStream(zipInputStream)
.deploy();
1.1.3. 说明
1, .addResourceFromClasspath(resource); 可以调用多次以添加多个文件。文件重复添加也不会报错。
2, .addResourceFromInputStream(resourceName, inputStream)添加一个文件(使用InputStream)
3, .addResourcesFromZipInputStream(zipInputStream)添加多个文件,里面也可以有文件夹。
4, 以上方法可以在一起调用。
1.2. 删除流程定义
1.2.1. 示例代码1:删除流程定义,如果有关联的流程实例信息则报错
repositoryService.deleteDeployment(deploymentId);
1.2.2. ?示例代码2:删除流程定义,并删除关联的流程实例与历史信息
repositoryService.deleteDeploymentCascade(deploymentId);
关联:关联的流程实例,就是流程定义中执行过的那些实例【已经放到了历史表中,级联删除的就是同时删除那些执行过了的实例】,
1.3. 查询流程定义
1.3.1. 相关查询API说明:ProcessDefinitionQuery
RepositoryService.createProcessDefinitionQuery()
1.3.2. 示例代码1:查询所有流程定义
// 1,构建查询
ProcessDefinitionQuery pdQuery = processEngine.getRepositoryService()
.createProcessDefinitionQuery()//
.orderAsc(ProcessDefinitionQuery.PROPERTY_NAME)//
.orderDesc(ProcessDefinitionQuery.PROPERTY_VERSION);
// 2,查询出总数量与数据列表
long count = pdQuery.count();
List<ProcessDefinition> list = pdQuery.page(0, 100).list();// 分页:取出前100条记录
// 3,显示结果
System.out.println(count);
for (ProcessDefinition pd : list) {
System.out.println("id=" + pd.getId()//
+ ",deploymentId=" + pd.getDeploymentId()//
+ ",name=" + pd.getName()//
+ ",version=" + pd.getVersion()//
+ ",key=" + pd.getKey()); //
}
1.3.3. 示例代码2:查询所有最新版本的流程定义列表
// 1,查询,按version升序排序,则最大版本排在最后面
List<ProcessDefinition> all = processEngine.getRepositoryService()//
.createProcessDefinitionQuery()//
.orderAsc(ProcessDefinitionQuery.PROPERTY_VERSION)
.list();
// 2,过滤出所有不同Key的最新版本(因为最大版本在最后面)
Map<String, ProcessDefinition> map = new HashMap<String, ProcessDefinition>(); // map的key是流程定义的key,map的vlaue是流程定义对象
for (ProcessDefinition pd : all) {
map.put(pd.getKey(), pd);
}
Collection<ProcessDefinition> result = map.values();
// 3,显示结果
for (ProcessDefinition pd : result) {
System.out.println("deploymentId=" + pd.getDeploymentId()//
+ ",\t id=" + pd.getId()// 流程定义的id,格式:{key}-{version}
+ ",\t name=" + pd.getName()
+ ",\t key=" + pd.getKey()
+ ",\t version=" + pd.getVersion());
}
1.4. 获取部署对象中的文件资源内容
// 资源的名称,就是 jbpm4_lob 表中的 NAME_ 列表值
String deploymentId = "90001";
String resourceName = "test.png";
InputStream in = processEngine.getRepositoryService()
.getResourceAsStream(deploymentId, resourceName);
1.5. 获取流程图中某活动的坐标
String processDefinitionId = "test-1"; // 流程定义的id
String activityName = "start1"; // 活动的名称
ActivityCoordinates c = processEngine.getRepositoryService()
.getActivityCoordinates(processDefinitionId, activityName);
System.out.println("x=" + c.getX()
+ ",y=" + c.getY()
+ ",width=" + c.getWidth()
+ ",height=" + c.getHeight());
JBPM4.4_管理流程定义的更多相关文章
- JBPM4入门——5.流程定义的发布、查询、删除
本博文只是简要对JBPM4进行介绍,如需更详细内容请自行google 链接: JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流 ...
- Activiti第二篇【管理流程定义、执行任务和流程实例、流程变量】
上篇Activiti只是一个快速入门案例,这篇就讲定义.部署.查看任务等等的一些细节[涉及到的数据库表.对象等等]- 管理流程定义 管理流程定义主要涉及到以下的4张表: -- 流程部署相关的表 SEL ...
- JBPM学习(三):管理流程定义
概念: ProcessDefinition,流程定义:一个流程的步骤说明,如一个请假流程.报销流程.是一个规则. ProcessDefinition,流程定义对象,是解析.jpdl.xml文件得到流程 ...
- JBPM工作流(四)——管理流程定义
概念: ProcessDefinition,流程定义:一个流程的步骤说明,如一个请假流程.报销流程.是一个规则. ProcessDefinition,流程定义对象,是解析.jpdl.xml文件得到流程 ...
- JBPM4.4_执行流程实例
1. 执行流程实例 1.1. 启动流程实例 说明:流程实例创建后,直接就到开始活动后的第一个活动,不会在开始活动停留. 1.1.1. 示例代码1:使用指定key的最新版本的流程定义启动流程实例 Pro ...
- JBPM4.4_jBPM4.4的流程定义语言(设计流程)
1. jBPM4.4的流程定义语言(设计流程) 1.1. process(流程) 是.jpdl.xml的根元素,可以指定的属性有: 属性名 作用说明 name 流程定义的名称,用于显示. key 流程 ...
- JBPM4入门——6.流程实例的创建和执行
本博文只是简要对JBPM4进行介绍,如需更详细内容请自行google 链接: JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流 ...
- JBPM4.4_核心概念与相关API
1. 核心概念与相关API(Service API) 1.1. 概念:Process definition, process instance , execution 1.1.1. Process ...
- 工作流学习——Activiti流程定义管理三步曲 (zhuan)
http://blog.csdn.net/zwk626542417/article/details/46602419 ***************************************** ...
随机推荐
- appium安卓自动化常见问题处理
appium安卓自动化常见问题处理 1.seesionnotcreatedexception 遇到这个首先确定下jdk需要1.7以上 然后还要确定appium是启动状态,可以cmd重启下appium ...
- Spring Boot干货系列:(一)优雅的入门篇
Spring Boot干货系列:(一)优雅的入门篇 2017-02-26 嘟嘟MD 嘟爷java超神学堂 前言 Spring一直是很火的一个开源框架,在过去的一段时间里,Spring Boot在社 ...
- git使用教程&&问题列表
git教程[转] http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 git push ...
- LeetCode: Clone Graph 解题报告
Clone GraphClone an undirected graph. Each node in the graph contains a label and a list of its neig ...
- LeetCode: Merge Intervals 解题报告
Merge IntervalsGiven a collection of intervals, merge all overlapping intervals. For example,Given [ ...
- 百度地图 JSAPI使用 定位当前地址 与路径规划
http://lbsyun.baidu.com/index.php?title=jspopular api http://developer.baidu.com/map/jsdemo.htm#a1 ...
- spring通过配置xml文件集成quartz定时器
概述 Spring为创建Quartzde Scheduler.Trigger和JobDetail提供了方便的FactoryBean类,以便能够在Spring容器中享受注入的好处. 此外,Spring还 ...
- Maven学习之(二)Maven插件创建项目
现在这里是已经在eclipse上成功的安装了Maven的插件后的操作,简单的创建一个项目, 同时实现Maven功能. 前提条件: 1.JDK 2.maven安装好 3.eclipse上maven插件安 ...
- Html5之web workers多线程
Web Workers 是 HTML5 提供的一个javascript多线程解决方式,我们能够将一些大计算量的代码交由web Worker执行而不冻结用户界面. 1.首先看一个实例: 1)js文件(t ...
- java- ★学习资源★
何静媛: http://blog.csdn.net/hejingyuan6/article/category/2367993 孤傲苍狼-java基础总结: http://www.cnblogs.com ...