工作流JBPM操作API启动实例&查询任务

简介: 工作流JBPM操作API启动实例&查询任务

8.5 启动实例


8.5.1 按照key启动(不加参数)

@Test  //  启动 -- 简单的启动
public void startProcessInstace(){
   ProcessEngine processEngine = Configuration.getProcessEngine(); 
   //  会启动该key下的最新版本的流程
   ProcessInstance instance = processEngine.getExecutionService().startProcessInstanceByKey("test");
   System.out.println(instance.getId());
   System.out.println(instance.getName());
   System.out.println(instance.getIsProcessInstance());
   System.out.println(instance.getKey());
   System.out.println(instance.getState());
}

注意:这里出现了 key 的概念。回顾我们在上一步画流程图的时候,并没有指定key,但是 我们在创建流程图的时候对文件进行了命名,如果不指定key,那么默认的key就和name同名。

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


8.5.2 按照key启动(加入参数)

//  启动 -- 并加入一些参数
@Test  
public void startProcessInstance(){
   String processKey = "test";
   Map<String, String> variableMap = new HashMap<String, String>();
   String username = "JackMa";//  申请人 这里的数据是从服务器过去当前登录人
   variableMap.put("申请人", username); 
   //  实际数据从表单获取 
   variableMap.put("申请事由", "扩展东南亚业务");
   variableMap.put("申请金额", String.valueOf(200000));//  前端填写必须是数字,后台转String
   //  将date转换为字符串
   variableMap.put("申请时间", DateUtil.convertDate2String(new Date(), null));
   variableMap.put("备注", "XXX");
   variableMap.put("最新进度",username+"-提交了申请");
   variableMap.put("状态", "进行中...");
   ProcessEngine processEngine = Configuration.getProcessEngine(); 
   ProcessInstance instance = processEngine.getExecutionService().startProcessInstanceByKey(processKey, variableMap);
   System.out.println(instance.getId());
}

执行启动代码,控制台打印如下:

此时 数据库中 jbpm4_variable 表就会有以下数据:


8.5.3 启动流程实例的说明

API也提供了按照id的启动方式,但是在实际业务中用不到。(因为不会去启动一个作废的审批流程)


8.6 查询任务


8.6.1 查询所有未办理任务

//  查询所有未办理的任务列表
@Test  
public void getAllTask(){
   List<Task> list = processEngine.getTaskService()
     .findPersonalTasks(null);
   for(Task task : list){
     System.out.println("id="+task.getId() + 
              ",name=" + task.getName() + 
              ",assignee="+task.getAssignee() + 
              ",createTime="+task.getCreateTime());
   }
}

上述方法会查询出所有未办理的任务:


8.6.2 查询个人未办理任务

//  查询我的未办理的任务列表
@Test  
public void getTaskByName(){
   String userName = "张三";
   List<Task> list = processEngine.getTaskService().findPersonalTasks(userName);
   for(Task task : list){
     System.out.println("id="+task.getId() + 
              ",name="+task.getName() + 
              ",assignee="+task.getAssignee() + 
              ",createTime="+task.getCreateTime());
     System.out.println(task.getExecutionId());
   }
}

查询结果:

可以看出:张三 这个用户有两条未办理的任务。其中executionId去掉 " key." 就会得到 一个新的字段。

例如:executionId=test.1530001 ----> 153001 会对应到 jbpm4_variable 表中的 EXECUTION 字段 , 通过该字段又能得到该表下的参数信息 (该参数信息是在启动实例的时候指定的,后续该数据将会是从前台申请表单拿到,并在启动时加入)。


8.6.3 查询个人的待办组任务


目前为止我们还没有指定组任务(组任务在 8.10),所以该处查询暂时会是空。

//  找到个人 的 分组 任务
@Test  
public void findGroupTasksByUser(){
   String user = "小明";
   List<Task> tasks = processEngine.getTaskService()
     .createTaskQuery()
     .candidate(user)
     .list();
   System.out.println(tasks.size());
   for(Task task : tasks){
     System.out.println(task.getId() + task.getName() + task.getAssignee());
   }
}
相关文章
|
23天前
|
SQL Java API
Java一分钟之-JPA查询:JPQL与Criteria API
【6月更文挑战第14天】本文探讨了Java Persistence API (JPA)中的两种查询方式:JPQL和Criteria API。JPQL是面向对象的SQL,适用于简单查询,而Criteria API则提供类型安全的动态查询构造。文章指出了每种方法的常见问题和避免策略,如混淆实体属性与数据库字段、参数绑定错误、过度复杂化和性能问题。建议开发者根据需求选择适当的方法,并关注查询的可读性、可维护性和性能优化。
28 2
|
9天前
|
敏捷开发 测试技术 API
阿里云云效产品使用问题之如何通过API查询指定人在指定时间内提交了多少行代码
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
27天前
|
DataWorks 安全 API
DataWorks产品使用合集之用API创建的补数据工作流,怎样才能获知工作流的运行状态
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
136 0
|
9天前
|
运维 DataWorks 数据管理
DataWorks操作报错合集之调用RegisterLineageRelation api时报错,是什么原因?
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
16 2
|
10天前
|
人工智能 运维 Serverless
函数计算产品使用问题之启动的实例是否有调用api接口停止功能
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
26天前
|
安全 Java API
Java一分钟之-GraphQL:查询语言与API设计
【6月更文挑战第11天】GraphQL,一种革命性的查询语言,正在改变Web开发中的API构建和使用方式。它允许客户端按需请求数据,减少冗余,提升性能。本文概述了GraphQL的核心理念,如声明式查询、强类型和统一入口,并讨论了Java开发者常遇问题:过度查询、Schema设计和安全性。解决方案包括使用Dataloader、优化Schema和实现授权机制。通过理解原理、关注性能、重视安全和持续实践,开发者能更好地利用GraphQL构建高效API。
26 2
|
27天前
|
分布式计算 DataWorks API
DataWorks操作报错合集之如何解决API调用报400,文件夹找不到的错误
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
4天前
|
API 开发工具
支付系统17------支付宝支付-----API预览以及签名验签说明,出现支付宝扫描二维码的操作,支付完成之后,查询订单的状态,支付成功之后,需要退款调用的接口,退款状态的接口,完成退款之后,通知
支付系统17------支付宝支付-----API预览以及签名验签说明,出现支付宝扫描二维码的操作,支付完成之后,查询订单的状态,支付成功之后,需要退款调用的接口,退款状态的接口,完成退款之后,通知
|
24天前
|
Java 大数据 API
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
66 0
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
|
26天前
|
JavaScript 关系型数据库 Serverless
Serverless 应用引擎操作报错合集之在调用stable Diffusion函数计算api接口返回,报错:"Not Found"一般是什么原因
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。