批处理 REST API
WebSphere Application Server Liberty 包含用于管理批处理作业的 RESTful 管理接口。
与批处理作业相关联的基本操作包括提交(启动)、停止、重新启动和查看状态。可使用任何 HTTP REST 客户机执行这些操作。在请求中提交的或在响应中返回的任何数据为 JSON 格式。
以下示例显示您可以使用 REST API 执行的功能。
当用户标识只是提交者时的 API
当仅向通过 HTTPS 调用 REST API 的用户标识授予了 batchSubmitter 角色的访问权时,将对 GET ("read") URL 返回的结果进行过滤。提交者只能看到与提交者所提交作业实例相关联的实例和执行数据。与此相反,如果向用户标识授予了 batchAdmin 和 batchMonitor 角色的访问权,那么这些用户标识将能够查看(由使用任何给定参数集的任何给定 URL 返回的)所有实例和执行数据。
如果用户标识只有 batchSubmitter 角色的访问权,那么该用户标识所看到的结果将首先由给定 URL 的文档中描述的标准参数过滤,然后再由“仅返回与提交者本人所提交作业实例相关联的实例和执行数据”进一步过滤。
有关更多信息,请参阅“保护 Liberty 批处理环境”。
作业实例
- GET /ibm/api/batch/jobinstances/
- 此 URI 返回作业实例的列表。查询参数包括:
- page=[page number]:指示要返回的页面(记录子集)。缺省值为 0。
- pageSize=[number of records per page]:指示每页记录数。缺省值为 50。
- 样本请求:
https://localhost:9443/ibm/api/batch/jobinstances
https://localhost:9443/ibm/api/batch/jobinstances?page=13&pagesize=20
- 样本响应:
[ { "jobName":"test_sleepyBatchlet", "instanceId":7, "appName":"SimpleBatchJob#SimpleBatchJob.war", "submitter":"bob", "batchStatus":"COMPLETED", "jobXMLName":"test_sleepyBatchlet", "instanceState":"COMPLETED", "_links":[ { "rel":"self", "href":"https://localhost:9443/ibm/api/batch/jobinstances/7" }, { "rel":"job logs", "href":"https://localhost:9443/ibm/api/batch/jobinstances/7/joblogs" } ] }, { "jobName":"test_sleepyBatchlet", "instanceId":6, "appName":"SimpleBatchJob#SimpleBatchJob.war", "submitter":"bob", "batchStatus":"COMPLETED", "jobXMLName":"test_sleepyBatchlet", "instanceState":"COMPLETED", "_links":[ { "rel":"self", "href":"https://localhost:9443/ibm/api/batch/jobinstances/6" }, { "rel":"job logs", "href":"https://localhost:9443/ibm/api/batch/jobinstances/6/joblogs" } ] } ]
- GET /ibm/api/batch/v2/jobinstances/
- 此 URI 返回通过以下查询参数过滤的作业实例的列表:
- jobInstanceId=[instanceId]:[instanceId]:返回等于和包含于 instanceId 范围中的作业实例。
- jobInstanceId=>[instanceId]:返回等于和大于所提供 instanceId 的作业实例。
- jobInstanceId=<[instanceId]:返回等于和小于所提供 instanceId 的作业实例。
- jobinstanceId=[instanceId],[instanceId],[instanceId]:返回所指定作业实例。
- createTime=[yyyy-MM-dd]:[yyy-MM-dd]:返回此日期范围内(包含上限和下限)的作业实例。
- createTime=[yyyy-MM-dd]:返回给定日期的作业实例。
- createTime=>3d:返回三天之前的日期或之后创建的作业实例。例如,createTime 晚于或等于三天之前的日期开始时间。
- createTime=<3d:返回三天之前的日期或之前创建的作业实例。例如,createTime 早于或等于三天之前的日期结束时间。
- instanceState=[state],[state]:返回具有所提供状态的作业实例。有效实例状态为:SUBMITTED、JMS_QUEUED、JMS_CONSUMED、DISPATCHED、FAILED、STOPPED、COMPLETED 和 ABANDONED。
- exitStatus=[string]:返回与退出状态字符串相匹配的作业实例。字符串条件可在任一端使用通配符 (*) 运算符。
- page=[page number]:指示要返回的页面(记录子集)。缺省值为 0。
- pageSize=[number of records per page]:指示每页记录数。缺省值为 50。
注: 涉及 createTime 的查询中服务器缺省时区的作用提交作业时,作业实例的 createTime 存储在作业存储库中并规范化为 UTC。如果通过使用 yyyy-MM-dd 指定日期(例如,在 createTime=[yyyy-MM-dd] 或 createTime=[yyyy-MM-dd]:[yyy-MM-dd]: 中),那么必须将 yyyy-MM-dd 日期字符串转换为 UTC 时间的特定范围,以便与作业实例表记录中的 createTime 值匹配。要执行此功能,应用程序应使用处理 REST 请求的服务器的缺省时区。系统使用此服务器的时区将日期字符串转换为要匹配 UTC 时间范围。
下表演示查询参数 jobInstanceId=10:13 返回的数据。
* 因为作业存储库将 createTime 存储为 UTC 格式,所以了解表数据显示的 createTime 的格式使用特定服务器(例如“server1”)的服务器缺省时区非常重要。如果已从具有不同缺省时区的另一服务器(非“server1”)的角度构造类似表,那么表将显示另一组 CREATETIME 列值,这些值具有对应的基于时区的时差。在下列示例中,使用的是处理 REST 请求的服务器的缺省时区将 yyyy-MM-dd 日期字符串参数映射至数据库中的 UTC createTime 值。JOBINSTANCEID CREATETIME(server1 的时区中的 *) INSTANCESTATE EXITSTATUS 10 11-05-2015.01:10:00 COMPLETED SUCCESS 11 11-08-2014.02:20:00 COMPLETED SUCCESS 12 11-10-2015.03:30:00 FAILED FAILURE 13 11-11-2015:04:40:00 COMPLETED SUCCESS 以下命令返回相同结果,不管针对哪个服务器发出这些命令都是如此:- jobInstanceId=11:13 将返回 JOBINSTANCEID 11、12 和 13。
- jobInstanceId=>12 将返回 JOBINSTANCEID 12 和 13。
- jobInstanceId=<12 将返回 JOBINSTANCEID 11 和 12。
- jobInstanceId=11,12 将返回 JOBINSTANCEID 11 和 12。
- instanceState=FAILED 将返回 JOBINSTANCEID 12。
- exitStatus=SUCCESS 将返回 JOBINSTANCEID 10、11 和 13。
对于具有不同缺省时区的服务器,以下命令可能返回不同结果。在这些示例中,它们是针对“server1”(用于填充上表的服务器)在 11-11-2015:07:00:00 日期和时间(使用该服务器的缺省时区)发出的。- createTime=>2d 将返回 JOBINSTANCEID 12 和 13(在两天前的日期(即 11-09-2015)或之后)
- createTime=<2d 将返回 JOBINSTANCEID 10 和 11(在两天前的日期(即 11-09-2015)或之前)
- createTime=2015-11-08:2015-11-11 将返回 JOBINSTANCEID 11、12 和 13。
- createTime=2015-11-10 将返回 JOBINSTANCEID 为 12 的记录。
- 样本请求:
https://localhost:9443/ibm/api/batch/v2/jobinstances?jobInstanceId=20:50 https://localhost:9443/ibm/api/batch/jobinstances?createTime=>2d https://localhost:9443/ibm/api/batch/v2/jobinstances?jobInstanceId=4,12,17&instanceState=COMPLETED https://localhost:9443/ibm/api/batch/v2/jobinstances?jobInstanceId=4500:4600&createTime=2015-11-27&instanceState=COMPLETED&exitStatus=*JOB*&page=0&pageSize=1000
GET /ibm/api/batch/v3/jobinstances/
除了 GET /ibm/api/batch/v2/job instances/ URI 的所有函数,此 URI 还会返回通过以下查询参数过滤的作业实例的列表:
- lastUpdatedTime=[yyyy-MM-dd]:返回上次在给定日期更新的作业实例。 实例状态转变时,会更新此时间值。例如,从 SUBMITTED 转换为 DISPATCHED。
- jobParameter.[paramName]=[paramValue]:针对具有将提供的名称/值对用作作业参数的执行,返回作业实例。例如:jobParameter.jesJobName=myJobName。
- sort=[string],[string]:指定用于对结果排序的一个或多个参数。使用 - 字符对参数添加前缀这一操作指定将按降序进行排序。例如:sort=submitter 按提交者对结果进行升序排序。指定 sort=submitter,-lastUpdatedTime 会首先按提交者对结果进行升序排序,然后按 lastUpdatedTime 进行降序排序。
- GET /ibm/api/batch/jobinstances/job instance id
- 此 URI 返回有关指定作业实例的详细信息,例如,与指定作业实例相关联的所有执行。结果按从最新到最旧的顺序返回。最新结果在列表中显示在最前。
- 样本响应:
{ "jobName":"test_sleepyBatchlet", "instanceId":7, "appName":"SimpleBatchJob#SimpleBatchJob.war", "submitter":"bob", "batchStatus":"COMPLETED", "jobXMLName":"test_sleepyBatchlet", "instanceState":"COMPLETED", "_links":[ { "rel":"self", "href":"https://localhost:9443/ibm/api/batch/jobinstances/7" }, { "rel":"job logs", "href":"https://localhost:9443/ibm/api/batch/jobinstances/7/joblogs" }, { "rel":"job execution", "href":"https://localhost:9443/ibm/api/batch/jobinstances/7/jobexecutions/7" } ] }
- POST /ibm/api/batch/jobinstances/
- 使用此 URI 提交(启动)新作业。以下示例说明请求主体,该请求主体以 JSON 格式提交 WAR 模块中打包的作业:
{ "applicationName" : "SimpleBatchJob", "moduleName" : "SimpleBatchJob.war", "jobXMLName" : "test_batchlet_jsl", "jobParameters" : { "prop1" : "prop1value", "prop2" : "prop2value"} }
以下示例说明请求主体,该请求主体以 JSON 格式提交 EJB 模块中打包的作业:{ "applicationName" : "SimpleBatchJob", "moduleName" : "SimpleBatchJobEJB.jar", "componentName" : "MyEJB", "jobXMLName" : "test_batchlet_jsl", "jobParameters" : { "prop1" : "prop1value", "prop2" : "prop2value"} }
applicationName 标识批处理应用程序。它是必需的,除非指定了 moduleName(在此情况下,applicationName 是从 moduleName 派生的,方法是删除 moduleName 的 .war 或 .jar 后缀。)例如,如果未提供 applicationName 并且 moduleName=SimpleBatchJob.war,那么 applicationName 缺省为 SimpleBatchJob。
moduleName 标识批处理应用程序中包含作业工件(例如,JSL)的模块。作业是在该模块的组件上下文中提交的。moduleName 是必需的,除非指定了 applicationName(在此情况下,moduleName 是从 applicationName 派生的,方法是在 applicationName 后附加 .war)。例如,如果 applicationName=SimpleBatchJob 并且未提供 moduleName,那么 moduleName 缺省为 SimpleBatchJob.war。
componentName 标识批处理应用程序 EJB 模块内的 EJB 组件。如果指定,那么该作业在 EJB 的组件上下文中提交。注: 仅当模块为 EJB 模块时,才需要 componentName。如果模块为 WAR 模块,那么不需要 componentName。必须输入 jobXMLName 的值。jobParameters 的值是可选的。
- 作为使用 JSL 作业(在批处理应用程序的 META-INF/batch-jobs 下打包)定义的替代项,可在 REST 作业提交请求中传递 JSL 内嵌项。作为内嵌项提交的 JSL 始终覆盖随批处理应用程序打包的任何 JSL。您可以使用两种方法将 JSL 内嵌项作为 HTTP 请求的一部分提交。
- 以 JSON 属性形式将 JSL 包含在作业提交请求中。将 jobXML 属性添加至 JSON 对象并将 JSL 文件的完整内容作为该属性的值添加至 JSON 字符串。注: 必须将 XML 字符串正确转义以便 JSON 解析器可对其进行解析。大部分 JSON 库将为您完成此功能。以下示例演示用于提交作业的请求主体,此作业使用的单部件 HTTP 请求带有 JSON 以内嵌项方式传递的 JSL。
{ "applicationName" : "SimpleBatchJob", "jobXMLName":"test_multiPartition_3Steps", "jobXML":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> \r\n<job id=\"test_multiPartition_3Steps\" xmlns=\"http://xmlns.jcp.org/xml/ns/javaee\"r\n\tversion=\"1.0> \r\n\t<step id=\"step1"\" next=\"step2\"> \r\n\t\t<batchlet ref=\"simpleBatchlet\"/> \r\n\t\t<partition>\r\n\t\t\t<plan partitions=\"3\"/> \r\n\t\t</partition>\r\n\t</step> \r\n\t<step id=\"step2\" next=\"step3\"> \r\n\t\t<batchlet ref=\"simpleBatchlet\" /> \r\n\t\t<partition>\r\n\t\t\t<plan partitions=\"3\" /> \r\n\t\t</partition>\r\n\t</step>\r\n\t<step id=\"step3\"> \r\n\t\t<batchlet ref=\"simpleBatchlet\" />\r\n\t\t<partition> \r\n\t\t\t<plan partitions=\"3\"/> \r\n\t\t</partition>\r\n\t</step>\r\n</job>" }
注: jobXML 字段必须由 JSON 解析器解析并编组为有效 JSON 对象。jobXMLName 字段是可选顶,因为内嵌 JSL 的作业标识信息用于表示作业名。 - 使用 HTTP 多重部件表单。如果使用 HTTP 多部件表单,那么 JSON 作业提交数据和 XML 作业定义需要作为 HTTP 主体的两个独立部分提交。多重部件表单的 JSON
部件必须命名为 jobdata,该表单的 XML 部件必须命名为 jsl。使用多重部件表单时,XML
不必编组为 JSON 字符串。以下示例演示用于提交作业的请求,此作业使用的多部件 HTTP 请求带有通过 jsl 消息部件以内嵌项方式传递的 JSL。
Content-Type: multipart/form-data;boundary=---------------------------49424d5f4a4241544348 -----------------------------49424d5f4a4241544348 Content-Disposition: form-data; name="jobdata" Content-Type: application/json; charset=UTF-8 { "applicationName" : "SimpleBatchJob", "moduleName" : "SimpleBatchJob.war", "jobXMLName" : "test_multiPartition" } -----------------------------49424d5f4a4241544348 Content-Disposition: form-data; name="jsl" Content-Type: application/xml; charset=UTF-8 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <job id="test_multiPartition" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0"> <step id="step1"> <batchlet ref="simpleBatchlet" /> <partition> <plan partitions="3" /> </partition> </step> </job> -----------------------------49424d5f4a4241544348--
注: jobXMLName 字段是可选顶,因为内嵌 JSL 的作业标识信息用于表示作业名。
- 以 JSON 属性形式将 JSL 包含在作业提交请求中。将 jobXML 属性添加至 JSON 对象并将 JSL 文件的完整内容作为该属性的值添加至 JSON 字符串。
- 以下样本响应演示成功的作业提交:
{ "jobName": "test_sleepyBatchlet", "instanceId": 10, "appName": "SimpleBatchJob#SimpleBatchJob.war", "submitter": "bob", "batchStatus": "STARTING", "jobXMLName": "test_sleepyBatchlet", "instanceState": "SUBMITTED", "_links": [ { "rel": "self", "href": "https://localhost:9443/ibm/api/batch/jobinstances/10" }, { "rel": "job logs", "href": "https://localhost:9443/ibm/api/batch/jobinstances/10/joblogs" } ] }
- PUT /ibm/api/batch/jobinstances/job instance id?action=stop
- 使用此 URI 停止与此作业实例相关联的最新作业执行(如果它正在运行)。如果它未在运行,那么 API 返回错误。
- PUT /ibm/api/batch/jobinstances/job instance id?action=restart
- 使用此 URI 重新启动与此作业实例相关联的最新作业执行(仅当它处于“停止”或“失败”状态时)。如果没有与此实例相关联的作业执行,或最新的作业执行处于 COMPLETED 状态,那么 API 将返回错误。
- PUT /ibm/api/batch/jobinstances/job instance id?action=restart&reusePreviousParams=true
- 使用此 URI 重新启动最新作业执行,并复用与此作业实例相关联的先前执行中的作业参数。先前执行必须为“停止”或“失败”状态。如果没有与此实例相关联的作业执行,或最新的作业执行处于 COMPLETED 状态,那么 API 将返回错误。请注意,reusePreviousParams 是可选设置。缺省设置为 reusePreviousParams=false。注: 如果 reusePreviousParams=true,那么在当前重新启动请求中提交的任何作业参数优先于任何先前作业参数。当前参数覆盖具有相同作业参数键名的先前参数。
- DELETE /ibm/api/batch/jobinstances/job instance id
- 此 URI 清除与此作业实例相关联的所有数据库条目和作业日志。如果作业实例具有活动作业执行,那么此 API 将返回错误。如果删除作业日志时存在错误,那么系统不会尝试从作业存储数据库删除作业实例数据。查询参数包括:
- purgeJobStoreOnly=true|false:如果 purgeJobStoreOnly=true,那么系统不会尝试清除与此作业实例相关联的作业日志。缺省设置为 purgeJobStoreOnly=false。如果作业实例具有活动作业执行,那么此 API 将返回错误。注: 使用单个清除 API 时,不会返回任何清除响应消息。
- purgeJobStoreOnly=true|false:如果 purgeJobStoreOnly=true,那么系统不会尝试清除与此作业实例相关联的作业日志。缺省设置为 purgeJobStoreOnly=false。如果作业实例具有活动作业执行,那么此 API 将返回错误。
- DELETE /ibm/api/batch/v2/jobinstances/
- 此 URI 清除与以下清除过滤参数返回的作业实例相关联的所有数据库条目和作业日志。注: 建议您使用 GET 接口来列示作业,并在执行 DELETE 接口清除作业之前验证它们是否为要清除的正确作业。
- page=[page number]:指示要返回的页面(记录子集)。缺省值为 0。
- pageSize=[number of records per page]:指示每页记录数。缺省值为 50。
- purgeJobStoreOnly=true|false:如果 purgeJobStoreOnly=true,那么系统不会尝试清除与此作业实例相关联的作业日志。缺省设置为 purgeJobStoreOnly=false。如果作业实例具有活动作业执行,那么此 API 将返回错误。
- jobInstanceId=[instanceId]:[instanceId]:清除等于和包含于 instanceId 范围中的作业实例。
- jobInstanceId=>[instanceId]:清除等于和大于所提供 instanceId 的作业实例。
- jobInstanceId=<[instanceId]:清除等于和小于所提供 instanceId 的作业实例。
- jobinstanceId=[instanceId],[instanceId],[instanceId]:清除所指定作业实例。
- createTime=[yyyy-MM-dd]:[yyy-MM-dd]:返回此日期范围内(包含上限和下限)的作业实例。
- createTime=[yyyy-MM-dd]:返回给定日期的作业实例。
- createTime=>3d:返回三天之前的日期或之后创建的作业实例。例如,createTime 晚于或等于三天之前的日期开始时间。
- createTime=<3d:返回三天之前的日期或之前创建的作业实例。例如,createTime 早于或等于三天之前的日期结束时间。
- instanceState=[state],[state]:清除具有所提供状态的作业实例。有效实例状态为:SUBMITTED、JMS_QUEUED、JMS_CONSUMED、DISPATCHED、FAILED、STOPPED、COMPLETED 和 ABANDONED。
- exitStatus=[string]:返回与退出状态字符串相匹配的作业实例。字符串条件可在任一端使用通配符 (*) 运算符。
注: 缺省情况下,除非指定了 page 和 pageSize 参数,否则最多清除 50 个记录。注: 涉及 createTime 的查询中服务器缺省时区的作用提交作业时,作业实例的 createTime 存储在作业存储库中并规范化为 UTC。如果通过 yyyy-MM-dd 指定日期(例如,在 createTime=[yyyy-MM-dd] 或 createTime=[yyyy-MM-dd]:[yyy-MM-dd]: 中),那么必须将 yyyy-MM-dd 日期字符串转换为 UTC 时间的特定范围,以便与作业实例表记录中的 createTime 值匹配。为此,应用程序应使用处理 REST 请求的服务器的缺省时区。系统使用此服务器的时区将日期字符串转换为要匹配 UTC 时间范围。
下表演示查询参数 jobInstanceId=10:13 返回的数据。
* 因为作业存储库将 createTime 存储为 UTC 格式,所以了解表数据显示的 createTime 的格式使用特定服务器(例如“server1”)的服务器缺省时区非常重要。如果已从具有不同缺省时区的另一服务器(非“server1”)的角度构造类似表,那么表将显示另一组 CREATETIME 列值,这些值具有对应的基于时区的时差。在下列示例中,使用的是处理 REST 请求的服务器的缺省时区将 yyyy-MM-dd 日期字符串参数映射至数据库中的 UTC createTime 值。JOBINSTANCEID CREATETIME(server1 的时区中的 *) INSTANCESTATE EXITSTATUS 10 11-05-2015.01:10:00 COMPLETED SUCCESS 11 11-08-2014.02:20:00 COMPLETED SUCCESS 12 11-10-2015.03:30:00 FAILED FAILURE 13 11-11-2015:04:40:00 COMPLETED SUCCESS 以下命令返回相同结果,不管针对哪个服务器发出这些命令都是如此:- jobInstanceId=11:13 将返回 JOBINSTANCEID 11、12 和 13。
- jobInstanceId=>12 将返回 JOBINSTANCEID 12 和 13。
- jobInstanceId=<12 将返回 JOBINSTANCEID 11 和 12。
- jobInstanceId=11,12 将返回 JOBINSTANCEID 11 和 12。
- instanceState=FAILED 将返回 JOBINSTANCEID 12。
- exitStatus=SUCCESS 将返回 JOBINSTANCEID 10、11 和 13。
对于具有不同缺省时区的服务器,以下命令可能返回不同结果。在这些示例中,它们是针对“server1”(用于填充上表的服务器)在 11-11-2015:07:00:00 日期和时间(使用该服务器的缺省时区)发出的。- createTime=>2d 将返回 JOBINSTANCEID 12 和 13(在两天前的日期(即 11-09-2015)或之后)
- createTime=<2d 将返回 JOBINSTANCEID 10 和 11(在两天前的日期(即 11-09-2015)或之前)
- createTime=2015-11-08:2015-11-11 将返回 JOBINSTANCEID 11、12 和 13。
- createTime=2015-11-10 将返回 JOBINSTANCEID 为 12 的记录。
- 样本响应:
[{"instanceId":394,"purgeStatus":"COMPLETED","message":"Successful purge.","redirectUrl":""}, {"instanceId":395,"purgeStatus":"COMPLETED","message":"Successful purge.","redirectUrl":""}, {"instanceId":396,"purgeStatus":"COMPLETED","message":"Successful purge.","redirectUrl":""}, {"instanceId":397,"purgeStatus":"COMPLETED","message":"Successful purge.","redirectUrl":""}, {"instanceId":398,"purgeStatus":"COMPLETED","message":"Successful purge.","redirectUrl":""}]
- 可返回以下 purgeStatus 值:
- COMPLETED
- 指示作业清除已成功完成。
- FAILED
- 指示作业清除失败。
- STILL_ACTIVE
- 指示作业清除失败,因为它仍处于活动状态。
- JOBLOGS_ONLY
- 指示数据库清除失败,但作业日志已成功清除。
- NOT_LOCAL
- 指示作业清除失败,因为作业不在本地。
作业执行
- GET /ibm/api/batch/jobexecutions/job execution id
- 此 URI 返回有关指定作业执行的详细信息并包含关联步骤执行和作业日志的链接。
- 样本请求:
https://localhost:9443/ibm/api/batch/jobexecutions/9
- 样本响应:
{ "jobName":"test_sleepyBatchlet", "executionId":9, "instanceId":9, "batchStatus":"COMPLETED", "exitStatus":"COMPLETED", "createTime":"2015/05/07 16:09:41.025 -0400", "endTime":"2015/05/07 16:09:52.127 -0400", "lastUpdatedTime":"2015/05/07 16:09:52.127 -0400", "startTime":"2015/05/07 16:09:41.327 -0400", "jobParameters":{ }, "restUrl":"https://localhost:9443/ibm/api/batch", "serverId":"localhost/C:/ibm/RAD_workspaces/Liberty7/build.image/wlp/usr/server1", "logpath":"C:\\ibm\\Liberty\\wlp\\usr\\servers\\server1\\logs\\joblogs\\test_sleepyBatchlet\\2015-05-07\\instance.9\\execution.9\\", "stepExecutions":[ { "stepExecutionId":9, "stepName":"step1", "batchStatus":"COMPLETED", "exitStatus":"SleepyBatchlet:i=10;stopRequested=false", "stepExecution":"https://localhost:9443/ibm/api/batch/jobexecutions/9/stepexecutions/step1" } ], "_links":[ { "rel":"self", "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9" }, { "rel":"job instance", "href":"https://localhost:9443/ibm/api/batch/jobinstances/9" }, { "rel":"step executions", "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9/stepexecutions" }, { "rel":"job logs", "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9/joblogs" }, { "rel":"stop url", "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9?action=stop" } ] }
- GET /ibm/api/batch/jobexecutions/job execution id/jobinstance
- 此 URI 返回有关与指定作业执行相关的作业实例的详细信息。
- GET /ibm/api/batch/jobinstances/job instance id/jobexecutions
- 此 URI 返回有关指定作业实例的作业执行的详细信息。这包括指向关联的步骤执行和作业日志的链接。
- GET /ibm/api/batch/jobinstances/job instance id/jobexecutions/job execution sequence number
- 此 URI 返回有关与指定作业实例标识相关的指定作业执行的详细信息。这包括指向关联的步骤执行和作业日志的链接。注: 作业执行序列号表示与指定作业实例相关的第 0 个、第 1 个、第 2 个(以此类推)作业执行。
- PUT /ibm/api/batch/jobexecutions/job execution id?action=stop
- 使用此 URI 停止正在运行的指定作业执行。必需参数包含 action = stop, restart。
- PUT /ibm/api/batch/jobexecutions/job execution id?action=restart
- 使用此 URI 重新启动指定作业执行。必需参数包含 action = stop, restart。
步骤执行
- GET /ibm/api/batch/jobexecutions/job execution id/stepexecutions
- 此 URI 返回指定作业执行的所有步骤执行详细信息的 JSON 数组。如果作业包含分区步骤,那么将返回每个步骤中列示的分区信息。
- 样本请求:
https://localhost:8020/ibm/api/batch/jobexecutions/40/stepexecutions
- 以下样本演示针对分区步骤的响应。
[ { "stepExecutionId":47, "executionId":39, "instanceId":35, "stepName":"step1", "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:08.652 -0400", "endTime":"2015/03/30 11:10:09.817 -0400", "exitStatus":"COMPLETED", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" }, "partitions":[ { "partitionNumber":0, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:09.579 -0400", "endTime":"2015/03/30 11:10:09.706 -0400", "exitStatus":"step1", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } }, { "partitionNumber":1, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:09.257 -0400", "endTime":"2015/03/30 11:10:09.302 -0400", "exitStatus":"step1", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } }, { "partitionNumber":2, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:09.469 -0400", "endTime":"2015/03/30 11:10:09.548 -0400", "exitStatus":"step1", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } } ] }, { "stepExecutionId":51, "executionId":39, "instanceId":35, "stepName":"step2", "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:09.915 -0400", "endTime":"2015/03/30 11:10:10.648 -0400", "exitStatus":"COMPLETED", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" }, "partitions":[ { "partitionNumber":0, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:10.324 -0400", "endTime":"2015/03/30 11:10:10.417 -0400", "exitStatus":"step2", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } }, { "partitionNumber":1, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:10.260 -0400", "endTime":"2015/03/30 11:10:10.347 -0400", "exitStatus":"step2", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } }, { "partitionNumber":2, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:10.507 -0400", "endTime":"2015/03/30 11:10:10.557 -0400", "exitStatus":"step2", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } }, { "_links":[ { "rel":"job execution", "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9" }, { "rel":"job instance", "href":"https://localhost:9443/ibm/api/batch/jobinstances/9" } ] } ]
- GET /ibm/api/batch/jobexecutions/job execution id/stepexecutions/step name
- 此 URI 返回一个 JSON 数组,该数组包含所指定作业执行的步骤执行详细信息及步骤名称。
- GET /ibm/api/batch/jobinstances/job instance id/jobexecutions/job execution sequence number/stepexecutions/step name
- 此 URI 返回一个 JSON 数组,该数组包含所指定作业实例的步骤执行详细信息、作业执行及步骤名称。
- GET /ibm/api/batch/stepexecutions/step execution id
- 此 URI 返回一个 JSON 数组,该数组包含所指定步骤执行的步骤执行详细信息。
作业日志
- GET /ibm/api/batch/jobinstances/job instance id/joblogs
- 此 URI 返回 JSON 数组,此数组带有指定作业实例的所有作业日志部分的 REST 链接。
- GET /ibm/api/batch/jobexecutions/job execution id/joblogs
- 此 URI 返回 JSON 数组,此数组带有指定作业执行的所有作业日志部分的 REST 链接。要点: 以下示例显示 REST 链接的格式。如果您的作业执行包含以下作业日志部分:
,那么对应 REST 链接为:joblogs/instance.inst-id/execution.exec-id/part.1.log joblogs/instance.inst-id/execution.exec-id/part.2.log joblogs/instance.inst-id/execution.exec-id/step.step-name/partition.0/part.1.log joblogs/instance.inst-id/execution.exec-id/step.step-name/partition.1/part.1.log
/ibm/api/batch/jobexecutionsexec-id/joblogs?part=part.1.log /ibm/api/batch/jobexecutionsexec-id/joblogs?part=part.2.log /ibm/api/batch/jobexecutionsexec-id/joblogs?part=step.step-name/partition.0/part.1.log /ibm/api/batch/jobexecutionsexec-id/joblogs?part=step.step-name/partition.1/part.1.log
- 可选参数包括:
- type = text
- 如果指定 text,那么将以纯文本形式返回所有作业日志。所有作业日志部分将汇总到一起。系统会在流中插入用于定界头记录和脚记录的部分以在汇总不同部分时对它们进行定界。
- type = zip
- 如果指定 zip,那么将以压缩文件格式返回指定作业实例或作业执行的所有作业日志。压缩文件中将保留作业日志的目录结构。
- GET /ibm/api/batch/jobinstances/job instance id/joblogs?type=text|zip
- GET /ibm/api/batch/jobexecutions/job execution id/joblogs?type=text|zip
- 已指定 type 参数的这两个 URI 的行为根据值而有所不同。
- type = text
- 如果指定 text,那么将以纯文本形式返回所有作业日志。所有作业日志部分将汇总到一起。系统会在流中插入用于定界头记录和脚记录的部分以在汇总不同部分时对它们进行定界。
- type = zip
如果指定 zip,那么将以压缩文件格式返回指定作业实例或作业执行的所有作业日志。压缩文件中将保留作业日志的目录结构。
- GET /ibm/api/batch/jobexecutions/job execution id/joblogs?part=path to part&type=text|zip
- 指定了 part 参数后,此 URI 将作业日志部件返回为纯文本 (type=text) 或压缩文件 (type=zip)。缺省设置为 type=text。
HTTP 返回码
- HTTP 200 正常
- HTTP 201 已成功创建新响应。
- HTTP 202 已接受请求,但处理未完成。
- HTTP 400 错误请求,带有无效参数。请参阅所返回消息以了解详细信息。
- HTTP 401 无权访问此资源。
- HTTP 403 认证失败。
- HTTP 404 找不到所请求资源或该资源不存在。
- HTTP 409 该请求与该资源的当前状态冲突。请参阅所返回消息以了解详细信息。
- HTTP 500 内部服务器错误。
分布式服务器批处理环境中的 STOP 请求
发送至批处理 REST API 的停止请求必须直接发送至正在运行该作业的执行程序。如果停止请求被发送至未在运行该作业的分派器或执行程序,那么系统通过 HTTP 302 重定向响应消息将该请求将重定向至正确执行程序。HTTP 302 重定向响应中的位置字段指示要用于该停止请求的正确 URL。