

AWS 大型机现代化服务（托管运行时环境体验）不再向新客户开放。有关类似于 AWS 大型机现代化服务（托管运行时环境体验）的功能，请浏览 AWS 大型机现代化服务（自我管理体验）。现有客户可以继续正常使用该服务。有关更多信息，请参阅[AWS 大型机现代化可用性变更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 适用于大型机用户的 T AWS ransform 的数据结构
<a name="ba-endpoints-apx"></a>

您可以在下一节中了解适用于大型机引擎的 Tr AWS ansform 的各种数据结构。

**Topics**
+ [作业执行详细信息消息结构](#job-execution-details)
+ [事务启动结果结构](#transaction-outcome)
+ [事务启动记录结果结构](#transaction-record-outcome)
+ [队列中作业的可能状态](#jobs-status)
+ [提交作业和计划作业输入](#submit-job)
+ [计划作业响应列表](#list-scheduled-jobs)
+ [重复作业响应列表](#list-on-hold-jobs)

## 作业执行详细信息消息结构
<a name="job-execution-details"></a>

每个作业执行的详细信息都将包含以下字段：

scriptId  
被调用脚本的标识符。

caller  
调用方的 IP 地址。

identifier  
唯一的作业执行标识符。

startTime  
作业执行开始日期和时间。

endTime  
作业执行结束日期和时间。

status  
作业执行的状态。可能为以下值之一：  
+ `DONE`：作业执行正常结束。
+ `TRIGGERED`：作业执行已触发但尚未启动。
+ `RUNNING`：作业执行正在运行。
+ `KILLED`：作业执行已被终止。
+ `FAILED`：作业执行失败。

executionResult  
用于汇总作业执行结果的消息。如果作业执行尚未完成，则此消息可以是简单消息，也可以是包含以下字段的 JSON 结构：  
+ exitCode：数字退出码；负值表示故障情况。
+ program：该任务启动的最新程序。
+ status：可能为以下值之一：
  + `Error`：当 exitCode = -1 时；该值表示作业执行期间发生（技术）错误。
  + `Failed`：当 exitcode = -2 时；该值表示服务程序执行期间发生故障（例如 ABEND 情况）。
  + `Succeeded`：当 exitCode >= 0 时；
+ stepName：作业中最近执行的步骤的名称。

executionMode  
可以是 SYNCHRONOUS 或 ASYNCHRONOUS，具体取决于作业的启动方式。

示例输出：

```
{
    "scriptId": "INTCALC",
    "caller": "127.0.0.1",
    "identifier": "97d410be-efa7-4bd3-b7b9-d080e5769771",
    "startTime": "06-09-2023 11:42:41",
    "endTime": "06-09-2023 11:42:42",
    "status": "DONE",
    "executionResult": "{ \"exitCode\": -1, \"stepName\": \"STEP15\", \"program\": \"CBACT04C\", \"status\": \"Error\" }",
    "executionMode": "ASYNCHRONOUS"
  }
```

## 事务启动结果结构
<a name="transaction-outcome"></a>

 该结构可以包含以下字段：

outCome  
代表事务执行结果的字符串。可能的值有：  
+ `Success`：事务执行正常结束。
+ `Failure`：事务执行未能正常结束，遇到了一些问题。

commarea  
表示 COMMAREA 最终值（byte64 编码字节数组）的字符串，可以是空字符串。

containerRecord  
（可选）表示容器的记录内容（byte64 编码字节数组）的字符串。

serverDescription  
可能包含有关服务于请求的服务器信息（用于调试目的），可以是空字符串。

abendCode  
（可选）如果启动的事务所引用的程序中止，则在此字段中将以字符串形式返回中止代码值。

示例响应：

成功

```
{
    "outCome": "Success",
    "commarea": "",
    "serverDescription": ""
  }
```

Failure

```
{
    "outCome": "Failure",
    "commarea": "",
    "serverDescription": "",
    "abendCode": "AEIA"
  }
```

## 事务启动记录结果结构
<a name="transaction-record-outcome"></a>

该结构可以包含以下字段：

recordContent  
表示 COMMAREA 的记录内容（byte64 编码字节数组）的字符串。

containerRecord  
表示容器的记录内容（byte64 编码字节数组）的字符串。

serverDescription  
可能包含有关服务于请求的服务器信息（用于调试目的），可以是空字符串。

示例响应：

成功

```
{
    "recordContent": "",
    "serverDescription": ""
}
```

## 队列中作业的可能状态
<a name="jobs-status"></a>

在队列中，作业可具有以下状态：

ACTIVE  
作业目前正在队列中运行。

EXECUTION\$1WAIT  
作业正在等待线程可用。

SCHEDULED  
作业计划在特定的日期和时间执行。

HOLD  
作业正在等待释放后再运行。

COMPLETED  
作业已成功执行。

FAILED  
作业执行失败。

UNKNOWN  
状态未知。

## 提交作业和计划作业输入
<a name="submit-job"></a>

提交作业和计划作业输入是 `com.netfective.bluage.gapwalk.rt.jobqueue.SubmitJobMessage` 对象的 JSON 序列化。以下示例输入显示了此类 Bean 的所有字段。

提交作业的示例输入：

```
{
    "messageQueueName":null,
    "scheduleDate":null,
    "scheduleTime":null,
    "programName":"PTA0044",
    "programParams":
     {"wmind":"B"},
    "localDataAreaValue":"",
    "userName":"USER1",
    "jobName":"PTA0044",
    "jobNumber":9,
    "jobPriority":5,
    "executionDate":"20181231",
    "jobQueue":"queue1",
    "jobOnHold":false
}
```

计划作业的示例输入：

```
{
     "scheduleCron": "*/2 * * * * ?",
     "programName":"LOGPGM",
     "programParams": {
         "cl_sbmjob_param_json": "[\"./output/schedule-job-log.txt\", \"Every 2 seconds!\"]"
     },
     "localDataAreaValue":"",
     "userName":"PVO",
     "jobName":"LOGGERJOB",
     "jobPriority":5,
     "jobQueue":"queue1",
     "scheduleMisfirePolicy": 4,
     "startTime": "2003/05/04 07:00:00.000 GMT-06:00",
     "endTime": "2003/05/04 07:00:07.000 GMT-06:00"
 }
```

jobNumber  
如果作业号为 0，则将使用作业编号序列中的下一个编号自动生成作业编号。该值应设置为 0（测试目的除外）。

jobPriority  
中的默认任务优先级 AS400 为 5。有效范围为 0 – 9，0 为最高优先级。

jobOnHold  
如果作业被暂停提交，则不会立即执行，而仅在有人将其“释放”时才会执行。可以使用 REST API（/release 或 /releasease-all）释放作业。

scheduleDate 和 scheduleTime  
如果这些值不为空，则作业将在指定的日期和时间执行。

Date  
可以提供 format MMddyy 或 ddMMyyyy （输入的大小将决定使用哪种格式）

时间  
可以提供格式 HHmm 或 HHmmss （输入的大小将决定使用哪种格式）

programParams  
将作为映射传递给程序。

scheduleMisfirePolicy  
定义触发器失效时使用的策略。有以下可能值：  

1. 释放第一个失效并丢弃其他失效。

1. 提交因第一个失效而暂停的作业并丢弃其他失效。

1. 丢弃失效。

1. 释放所有失效。作业队列将运行所有作业。

## 计划作业响应列表
<a name="list-scheduled-jobs"></a>

 以下是列表作业的作业队列端点的结构。用于提交该作业的提交作业消息是响应的一部分。此端点结构可用于追踪或测试/重新提交。作业完成后，开始日期和结束日期也会填充。

```
[
  {
    "jobName": "PTA0044",
    "userName": "USER1",
    "jobNumber": 9,
    "jobPriority": 5,
    "status": "HOLD",
    "jobDelay": 0,
    "startDate": null,
    "endDate": null,
    "jobQueue": "queue1",
    "message": {
      "messageQueueName": null,
      "scheduleDate": null,
      "scheduleTime": null,
      "programName": "PTA0044",
      "programParams": {"wmind": "B"},
      "localDataAreaValue": "",
      "userName": "USER1",
      "jobName": "PTA0044",
      "jobNumber": 9,
      "jobPriority": 5,
      "executionDate": "20181231",
      "jobQueue": "queue1",
      "jobOnHold": true,
      "scheduleCron": null,
      "save": false,
      "scheduleMisfirePolicy": 4,
      "omitdates": null
    },
    "executionId": 1,
    "jobScheduledId": 0,
    "jobScheduledAt": null
  },
  {
    "jobName": "PTA0044",
    "userName": "USER1",
    "jobNumber": 9,
    "jobPriority": 5,
    "status": "COMPLETED",
    "jobDelay": 0,
    "startDate": "2022-10-13T22:48:34.025+00:00",
    "endDate": "2022-10-13T22:52:54.475+00:00",
    "jobQueue": "queue1",
    "message": {
      "messageQueueName": null,
      "scheduleDate": null,
      "scheduleTime": null,
      "programName": "PTA0044",
      "programParams": {"wmind": "B"},
      "localDataAreaValue": "",
      "userName": "USER1",
      "jobName": "PTA0044",
      "jobNumber": 9,
      "jobPriority": 5,
      "executionDate": "20181231",
      "jobQueue": "queue1",
      "jobOnHold": true,
      "scheduleCron": "*/20 * * * * ?",
      "save": false,
      "scheduleMisfirePolicy": 4,
      "omitdates": null
    },
    "executionId": 2,
    "jobScheduledId": 0,
    "jobScheduledAt": null
  }
]
```

## 重复作业响应列表
<a name="list-on-hold-jobs"></a>

以下是 /schedule/list 作业队列端点的结构。

```
[
  {
    "id": 1,
    "status": "ACTIVE",
    "jobNumber": 1,
    "userName": "PVO",
    "msg": {
      "messageQueueName": null,
      "scheduleDate": null,
      "scheduleTime": null,
      "startTime": "2024/03/07 21:12:00.000 UTC",
      "endTime": "2024/03/07 21:13:59.000 UTC",
      "programName": "LOGPGM",
      "programParams": {"cl_sbmjob_param_json": "[\"./output/schedule-job-log.txt\", \"Every 20 seconds!\"]"},
      "localDataAreaValue": "",
      "userName": "PVO",
      "jobName": "LOGGERJOB",
      "jobNumber": 1,
      "jobScheduleId": 1,
      "jobPriority": 5,
      "executionDate": null,
      "jobQueue": "queue1",
      "jobOnHold": false,
      "scheduleCron": "*/20 * * * * ?",
      "save": false,
      "scheduleMisfirePolicy": 4,
      "omitdates": null
    },
    "lastUpdatedAt": "2024-03-07T21:11:13.282+00:00",
    "lastUpdatedBy": ""
  }
]
```