Appearance
createJobQuery
Flowable 7.1.0 摘要:创建作业查询对象,用于查询异步作业、定时作业等。
方法签名与说明
JobQuery createJobQuery()
创建作业查询构建器,用于查询系统中的异步作业、定时器作业等。
Returns:
- JobQuery - 作业查询构建器
常见使用场景
1. 作业监控
监控系统中待执行的异步作业数量和状态。
2. 失败作业处理
查询执行失败的作业,进行重试或错误处理。
3. 定时任务管理
查看和管理流程中的定时任务。
Kotlin + Spring Boot 调用示例
示例1:查询待执行的作业
kotlin
import org.flowable.engine.ManagementService
import org.springframework.stereotype.Service
@Service
class JobMonitorService(
private val managementService: ManagementService
) {
/**
* 查询待执行的作业
* 企业场景:作业监控面板
*/
fun getPendingJobs(): List<Map<String, Any>> {
val jobs = managementService.createJobQuery()
.list()
return jobs.map { job ->
mapOf(
"jobId" to job.id,
"processInstanceId" to job.processInstanceId,
"retries" to job.retries,
"duedate" to job.duedate,
"exceptionMessage" to job.exceptionMessage
)
}
}
}示例2:查询失败的作业
kotlin
import org.flowable.engine.ManagementService
import org.springframework.stereotype.Service
@Service
class FailedJobService(
private val managementService: ManagementService
) {
/**
* 查询失败的作业
* 企业场景:错误监控和告警
*/
fun getFailedJobs(): List<Map<String, Any>> {
val failedJobs = managementService.createJobQuery()
.withException() // 有异常的作业
.list()
println("发现 ${failedJobs.size} 个失败的作业")
return failedJobs.map { job ->
mapOf(
"jobId" to job.id,
"processInstanceId" to job.processInstanceId,
"retries" to job.retries,
"exceptionMessage" to job.exceptionMessage
)
}
}
}示例3:按流程实例查询作业
kotlin
import org.flowable.engine.ManagementService
import org.springframework.stereotype.Service
@Service
class ProcessJobService(
private val managementService: ManagementService
) {
/**
* 查询流程实例的所有作业
* 企业场景:流程实例详情页展示异步任务
*/
fun getJobsByProcessInstance(processInstanceId: String): List<Map<String, Any>> {
val jobs = managementService.createJobQuery()
.processInstanceId(processInstanceId)
.list()
return jobs.map { job ->
mapOf(
"jobId" to job.id,
"jobType" to job.jobType,
"retries" to job.retries,
"duedate" to job.duedate
)
}
}
}示例4:作业管理REST API
kotlin
import org.flowable.engine.ManagementService
import org.springframework.web.bind.annotation.*
@RestController
@RequestMapping("/api/jobs")
class JobQueryController(
private val managementService: ManagementService
) {
@GetMapping
fun listJobs(
@RequestParam(required = false) processInstanceId: String?,
@RequestParam(required = false) withException: Boolean?,
@RequestParam(defaultValue = "1") page: Int,
@RequestParam(defaultValue = "10") size: Int
): Map<String, Any> {
val query = managementService.createJobQuery()
processInstanceId?.let { query.processInstanceId(it) }
if (withException == true) {
query.withException()
}
val total = query.count()
val jobs = query.listPage((page - 1) * size, size)
return mapOf(
"data" to jobs.map { mapOf(
"id" to it.id,
"processInstanceId" to it.processInstanceId,
"retries" to it.retries
)},
"total" to total
)
}
}注意事项
1. 作业类型
- 普通异步作业
- 定时器作业(使用createTimerJobQuery)
- 死信作业(使用createDeadLetterJobQuery)
2. 性能优化
- 添加查询条件,避免全表扫描
- 使用分页查询
相关 API
ManagementService.createJobQuery()- 查询作业ManagementService.createTimerJobQuery()- 查询定时作业ManagementService.createDeadLetterJobQuery()- 查询死信作业ManagementService.executeJob()- 执行作业
本文档说明
- 基于 Flowable 7.1.0 版本编写
- 所有示例均可直接在 Spring Boot + Kotlin 项目中使用