热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Activiti引擎中JobQuery.withException方法详解与实例

本文详细介绍了Activiti引擎中的JobQuery.withException方法,并提供了多个实际应用的代码示例,帮助开发者更好地理解和使用该方法。

在 Java 开发中,特别是在使用 Activiti 工作流引擎时,org.activiti.engine.runtime.JobQuery.withException() 方法是一个非常实用的功能。本文将通过具体的代码示例来展示如何使用 JobQuery.withException() 方法查询因异常而失败的任务。这些示例主要来自于 GitHub、Stack Overflow 和 Maven 等平台上的精选项目,具有很高的参考价值。

withException 方法介绍

英文说明: Only select jobs that failed due to an exception.

中文说明: 仅选择由于异常而失败的作业。

代码示例

示例 1: 来源:org.finra.herd/herd-service

@Override
public List getJobsWithExceptionByProcessInstanceId(String processInstanceId) {
return activitiManagementService.createJobQuery().withException().processInstanceId(processInstanceId).list();
}

示例 2: 来源:org.finra.herd/herd-service

@Override
public long getJobsWithExceptionCountByProcessInstanceId(String processInstanceId) {
return activitiManagementService.createJobQuery().withException().processInstanceId(processInstanceId).count();
}

示例 3: 来源:FINRAOS/herd

@Override
public List getJobsWithExceptionByProcessInstanceId(String processInstanceId) {
return activitiManagementService.createJobQuery().withException().processInstanceId(processInstanceId).list();
}

示例 4: 来源:FINRAOS/herd

@Override
public long getJobsWithExceptionCountByProcessInstanceId(String processInstanceId) {
return activitiManagementService.createJobQuery().withException().processInstanceId(processInstanceId).count();
}

示例 5: 测试用例,来源:FINRAOS/herd

@Test
public void testGetJobsWithExceptionByProcessInstanceId() {
String processInstanceId = "processInstanceId";
JobQuery jobQuery = mock(JobQuery.class);
when(activitiManagementService.createJobQuery()).thenReturn(jobQuery);
when(jobQuery.withException()).thenReturn(jobQuery);
when(jobQuery.processInstanceId(processInstanceId)).thenReturn(jobQuery);
List expectedJobs = new ArrayList<>();
when(jobQuery.list()).thenReturn(expectedJobs);
List actualJobs = activitiService.getJobsWithExceptionByProcessInstanceId(processInstanceId);
assertSame(expectedJobs, actualJobs);
InOrder inOrder = inOrder(jobQuery);
inOrder.verify(jobQuery).withException();
inOrder.verify(jobQuery).processInstanceId(processInstanceId);
inOrder.verify(jobQuery).list();
inOrder.verifyNoMoreInteractions();
}

示例 6: 测试用例,来源:FINRAOS/herd

@Test
public void testGetJobsWithExceptionCountByProcessInstanceId() {
String processInstanceId = "processInstanceId";
JobQuery jobQuery = mock(JobQuery.class);
when(activitiManagementService.createJobQuery()).thenReturn(jobQuery);
when(jobQuery.withException()).thenReturn(jobQuery);
when(jobQuery.processInstanceId(processInstanceId)).thenReturn(jobQuery);
long expectedResult = 1234L;
when(jobQuery.count()).thenReturn(expectedResult);
long actualResult = activitiService.getJobsWithExceptionCountByProcessInstanceId(processInstanceId);
assertEquals(expectedResult, actualResult);
InOrder inOrder = inOrder(jobQuery);
inOrder.verify(jobQuery).withException();
inOrder.verify(jobQuery).processInstanceId(processInstanceId);
inOrder.verify(jobQuery).count();
inOrder.verifyNoMoreInteractions();
}

示例 7: 来源:org.activiti/activiti-rest

query.withException();

示例 8: 来源:org.apache.provisionr/provisionr-commands

@Override
protected Object doExecute() throws Exception {
if (businessKey == null || businessKey.isEmpty()) {
out.println("Please supply a business key");
} else {
// 反转列表以首先启动子进程(它们的 ID 较大)
List processInstanceList = processEngine.getRuntimeService()
.createProcessInstanceQuery().variableValueEquals(CoreProcessVariables.POOL_BUSINESS_KEY, businessKey)
.orderByProcessInstanceId().desc().list();
out.printf("Found %d processes with pool business key %s\n", processInstanceList.size(), businessKey);
int count = 0;
for (ProcessInstance instance : processInstanceList) {
List jobs = processEngine.getManagementService().createJobQuery()
.processInstanceId(instance.getProcessInstanceId()).withException().list();
for (Job job : jobs) {
count++;
processEngine.getManagementService().setJobRetries(job.getId(), JobEntity.DEFAULT_RETRIES);
}
}
out.printf("Number of retries reset for %s jobs\n", count);
}
return null;
}

推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 在 Flutter 开发过程中,开发者经常会遇到 Widget 构造函数中的可选参数 Key。对于初学者来说,理解 Key 的作用和使用场景可能是一个挑战。本文将详细探讨 Key 的概念及其应用场景,并通过实例帮助你更好地掌握这一重要工具。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文介绍了如何在多线程环境中实现异步任务的事务控制,确保任务执行的一致性和可靠性。通过使用计数器和异常标记字段,系统能够准确判断所有异步线程的执行结果,并根据结果决定是否回滚或提交事务。 ... [详细]
  • 本文详细探讨了 org.apache.hadoop.ha.HAServiceTarget 类中的 checkFencingConfigured 方法,包括其功能、应用场景及代码示例。通过实际代码片段,帮助开发者更好地理解和使用该方法。 ... [详细]
author-avatar
blue燃烧的火柴
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有