工作流JBPM操作API部署流程

简介: 工作流JBPM操作API部署流程

??8.1 部署流程


官方提供了2种方式的部署。


8.1.1 部署方式1-源文件


这种部署方式需要将 流程图文件 放在如下路径中(process文件与src文件同类型属于Source Folder),这样通过如下方式1部署时不会出现路径问题。

部署代码:

//部署方式1
@Test
void deploy1(){
   //使用默认配置文件,获取流程引擎
  ProcessEngine processEngine = Configuration.getProcessEngine(); 
   String deployId = processEngine.getRepositoryService()
    .createDeployment()
    .addResourceFromClasspath("aaa.jpdl.xml")
    .addResourceFromClasspath("aaa.png")
    .deploy();
  System.out.println("部署方式1 : deployId:" + deployId);
}

执行上面的代码后,控制台打印如下:

此时数据库表有如下变化:

数据定义表(jbpm4_deployment ) 多了一个字段 :id为 1500001 的流程定义,如下图示。

数据定义属性表(jbpm4_deployprop)也有变化,具体自己部署查看下。


8.1.2 部署方式2-zip包


以.zip压缩包的方式部署,我们将 画图产生的两个文件 打包成 .zip压缩包文件,放在如下图示的位置。

该种方式部署代码如下:

//  部署方式2 ZIP压缩文件
@Test  
public void deploy2(){
   ProcessEngine processEngine = Configuration.getProcessEngine(); 
  InputStream in = this.getClass().getClassLoader().getResourceAsStream("test.zip");
   ZipInputStream zipInputStream = new ZipInputStream(in);
   //  部署
   String deployId = processEngine.getRepositoryService()
     .createDeployment()
     .addResourcesFromZipInputStream(zipInputStream)
     .deploy();
   System.out.println("部署方式2 : deployId:" + deployId);
}

执行完上面部署代码后,控制台打印如下:

部署方式2 : deployId:1510001

注意:

就我们的demo而言:部署方式1 和 部署方式2 此时部署的其实是同一个流程,只是部署方式不一样。

所以其实是将同一个流程部署了两次。表现在数据库表中就是有两个版本的流程部署了。

版本号在第一次部署默认为1,后面部署相同的流程版本号会自动+1。

数据定义属性表(jbpm4_deployprop)数据:


??8.2 查询流程实例


部署后就能查到流程定义。


8.2.1 查询所有


查询所有已经部署的流程定义,代码如下(会查询所有已经部署的流程定义,多版本也会一起返回)

//查询所有流程定义
@Test
public void findAll(){
   List<ProcessDefinition> list = processEngine.getRepositoryService()
     .createProcessDefinitionQuery()
     .orderAsc(ProcessDefinitionQuery.PROPERTY_KEY)
     .list();
   //  展示数据
   List<Map<String, String>> resultList = new ArrayList<Map<String,String>>();
   for(ProcessDefinition d : list){
     Map<String, String> map = new HashMap<>();
     map.put("id",d.getId());
     map.put("name",d.getName());
     map.put("key",d.getKey());
     map.put("version",String.valueOf(d.getVersion()));
     map.put("deploymentId",d.getDeploymentId());
     resultList.add(map);
   }
   System.out.println(resultList);
}

执行上面的查询代码马,控制台打印如下:

[{deploymentId=760001, name=applyFor, id=applyFor-1, version=1, key=applyFor}, {deploymentId=1440015, name=groupTest1125, id=groupTest1125-1, version=1, key=groupTest1125}, 
 {deploymentId=1350008, name=leave, id=leave-1, version=1, key=leave}, {deploymentId=1500001, name=test, id=test-1, version=1, key=test}, 
 {deploymentId=1510001, name=test, id=test-2, version=2, key=test}, 
 {deploymentId=990001, name=test11220846, id=test11220846-1, version=1, key=test11220846},
 {deploymentId=980009, name=testGroup2, id=testGroup2-1, version=1, key=testGroup2}]


8.2.2 查询所有最新版本的流程定义


会查询出每个Key下的最新版本,后面我们的启动就是按照指定key下的最新版本启动的

//  查询所有最新版本的流程定义
@Test  
public void findAllLastVersion(){
   List<ProcessDefinition> list = processEngine.getRepositoryService()
     .createProcessDefinitionQuery()
     .orderAsc(ProcessDefinitionQuery.PROPERTY_VERSION)
     .list();
   //  过滤 过滤出最新版本
   Map<String, ProcessDefinition> mapBefore = new HashMap<String, ProcessDefinition>();
   for(ProcessDefinition definition : list){
     mapBefore.put(definition.getKey(),definition);
   }
   //  展示数据
   List<Map<String, String>> resultList = new ArrayList<Map<String,String>>();
   for(ProcessDefinition d : mapBefore.values()){
     Map<String, String> map = new HashMap<>();
     map.put("id",d.getId());
     map.put("name",d.getName());
     map.put("key",d.getKey());
     map.put("version",String.valueOf(d.getVersion()));
     map.put("deploymentId",d.getDeploymentId());
     resultList.add(map);
   }
   System.out.println(resultList);
}

执行上面的查询代码后,控制台打印如下:

[{deploymentId=990001, name=test11220846, id=test11220846-1, version=1, key=test11220846}, 
{deploymentId=1510001, name=test, id=test-2, version=2, key=test}, 
{deploymentId=980009, name=testGroup2, id=testGroup2-1, version=1, key=testGroup2}, {deploymentId=1350008, name=leave, id=leave-1, version=1, key=leave}, {deploymentId=1440015, name=groupTest1125, id=groupTest1125-1, version=1, key=groupTest1125}, 
{deploymentId=760001, name=applyFor, id=applyFor-1, version=1, key=applyFor}]

注意与查询所有的结果比较:key 为 test 的结果只有一条了,且version=2。

相关文章
|
5天前
|
SQL JSON DataWorks
DataWorks操作报错合集之DataWorks报错显示API不存在,但这个API应该是有的,如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
34 2
|
5天前
|
分布式计算 DataWorks 关系型数据库
DataWorks操作报错合集之在DataWorks同步数据时,遇到乱码问题,该怎么解决(rest api数据源)
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
25 0
|
5天前
|
存储 缓存 运维
DataWorks操作报错合集之DataWorks根据api,调用查询文件列表接口报错如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
26 1
|
5天前
|
缓存 运维 Serverless
Serverless 应用引擎产品使用之阿里函数计算中。将本地电脑上的项目文件部署到阿里云函数计算(FC)上并实现对外提供API和WebUI如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
39 1
|
5天前
|
机器学习/深度学习 人工智能 API
人工智能平台PAI产品使用合集之机器学习PAI-EAS部署好后,服务的公网API和URL怎么配置
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
5天前
|
XML API 数据格式
工作流JBPM操作API组任务
工作流JBPM操作API组任务
20 1
|
5天前
|
API 数据库
工作流JBPM操作API办理任务&流程变量
工作流JBPM操作API办理任务&流程变量
16 0
|
2天前
|
监控 安全 数据挖掘
Email 接口API有哪些?具体分析一下阿里云和AOK的优点
本文介绍了常见的Email接口API,如阿里云邮件推送、AOKSend、SendGrid、Mailgun和Amazon SES。阿里云API以其高稳定性和数据分析功能脱颖而出,支持批量发送和多语言;而AOKSend API以易于集成、高安全性和优秀客户支持为亮点。企业在选择时应考虑自身需求和预算,以优化邮件营销效果。
|
3天前
|
定位技术 API
Angular 调用导入百度地图API接口,2024春招BAT面试真题详解
Angular 调用导入百度地图API接口,2024春招BAT面试真题详解
|
3天前
|
JSON 安全 API
解锁淘宝商品评论API接口:电商数据分析的新视角
淘宝商品评论API接口是淘宝开放平台提供的一组API接口,允许开发者通过编程方式获取淘宝商品评论数据。这些接口可以获取到商品的详细信息、用户评论、评分等数据,为电商数据分析提供了丰富的素材。

热门文章

最新文章

http://www.vxiaotou.com