查询以包括 spring 批处理作业参数值以及作业执行数据

Posted

技术标签:

【中文标题】查询以包括 spring 批处理作业参数值以及作业执行数据【英文标题】:query to include spring batch job param value along with job execution data 【发布时间】:2020-07-27 12:58:40 【问题描述】:

对于 Spring 批处理作业,我有诸如 requestNameresponseId 之类的作业参数,它们位于 BATCH_JOB_EXECUTION_PARAMS 表中。

JOB_EXECUTION_ID | KEY_NAME | STRING_VAL 
2   |             responseId             | f5e1b3e9
2   |             requestName            | DUMMY

我正在使用以下查询检索有关作业执行的详细信息:

SELECT je.JOB_EXECUTION_ID, 
       je.START_TIME, 
       je.END_TIME, 
       je.STATUS, 
       je.EXIT_CODE, 
       je.EXIT_MESSAGE, 
       ji.JOB_INSTANCE_ID, 
       ji.JOB_NAME,
       --add requestName STRING_VAL
FROM BATCH_JOB_EXECUTION je
INNER JOIN BATCH_JOB_EXECUTION_PARAMS p ON je.JOB_EXECUTION_ID = p.JOB_EXECUTION_ID
INNER JOIN BATCH_JOB_INSTANCE ji ON je.JOB_INSTANCE_ID = ji.JOB_INSTANCE_ID
WHERE p.KEY_NAME = 'responseId' AND p.STRING_VAL = 'f5e1b3e9'

如何在我的查询中填充requestName 的值?因此,对于 ID 为 2 的 JobExecution,它会返回一个附加列 REQUEST_NAME,其值为 DUMMY

【问题讨论】:

【参考方案1】:

@MO6H 像这样加入另一个BATCH_JOB_EXECUTION_PARAMS 实例:

SELECT je.JOB_EXECUTION_ID, 
   je.START_TIME, 
   je.END_TIME, 
   je.STATUS, 
   je.EXIT_CODE, 
   je.EXIT_MESSAGE, 
   ji.JOB_INSTANCE_ID, 
   ji.JOB_NAME,
   p2.STRING_VAL AS `REQUEST_NAME` -- add requestName STRING_VAL
FROM BATCH_JOB_EXECUTION je
INNER JOIN BATCH_JOB_EXECUTION_PARAMS p ON je.JOB_EXECUTION_ID = p.JOB_EXECUTION_ID
INNER JOIN BATCH_JOB_INSTANCE ji ON je.JOB_INSTANCE_ID = ji.JOB_INSTANCE_ID
JOIN BATCH_JOB_EXECUTION_PARAMS AS p2 ON p2.JOB_EXECUTION_ID = p.JOB_EXECUTION_ID        
WHERE p.KEY_NAME = 'responseId' 
    AND p.STRING_VAL = 'f5e1b3e9'
    AND p2.KEY_NAME = 'requestName'

如果这不能满足您的要求,请告诉我,我会尽力提供帮助。

【讨论】:

@MO6H 我刚刚意识到您希望额外的列显示为REQUEST_NAME,我刚刚修改了我的答案,因此该列将显示为REQUEST_NAME,然后为您提供您正在寻找的值

以上是关于查询以包括 spring 批处理作业参数值以及作业执行数据的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Batch 中以最后处理的记录作为 jobParameter 启动一个新的作业实例?

带有文件名的Spring批处理作业参数

Spring Batch -单元测试

如何将 JobParameters 传递给 Spring Cloud Task 启动的批处理作业?

从 tasklet 步骤将参数添加到作业上下文并在 Spring Batch 的后续步骤中使用

如何使用 Spring 和 Hibernate 为 Web 应用程序和批处理作业设置事务