

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

# 使用自定义语言将 Easytrieve 转换为现代语言 AWS Transform
<a name="transform-easytrieve-modern-languages"></a>

*Shubham Roy、Subramanyam Malisetty 和 Amazon Web Services 的 Harshitha Shashidhar*

## Summary
<a name="transform-easytrieve-modern-languages-summary"></a>

[这种模式为使用自定义转换对大型机 Broadcom [Easytrieve 报告生成器](https://techdocs.broadcom.com/us/en/ca-mainframe-software/devops/ca-easytrieve-report-generator/11-6.html) (EZT) 工作负载进行更快、风险更低的转型提供了规范性指导。AWS Transform](https://aws.amazon.com/transform/custom/) language-to-language它解决了对利基市场和专有大型机 EZT 工作负载进行现代化改造所面临的挑战，这些工作负载通常用于批量数据处理和报告生成。该模式将依赖专有工具和罕见的大型机专业知识的昂贵、漫长且容易出错的迁移方法替换为您创建的代理人工智能自动化解决方案。 AWS Transform

此模式为 EZT 转换提供了一个随时可用的自定义转换定义。该定义使用多个转换输入：
+ [使用AWS Transform 大型机提取的 EZT 业务规则](https://aws.amazon.com/transform/mainframe/)
+ EZT 编程参考文档
+ EZT 源代码
+ 大型机输入和输出数据集

AWS Transform custom 使用这些输入以现代目标语言（例如 Java 或 Python）生成功能等效的应用程序。

转换过程使用智能测试执行、自动调试和迭代修复功能，根据预期输出验证功能等效性。它还支持持续学习，使自定义变换定义能够提高连续转换的准确性和一致性。使用这种模式，组织可以减少迁移工作量和风险，解决利基大型机技术债务，并对EZT工作负载进行现代化改造， AWS 以提高敏捷性、可靠性、安全性和创新性。

## 先决条件和限制
<a name="transform-easytrieve-modern-languages-prereqs"></a>

**先决条件**
+ 一个活跃的 AWS 账户 
+ 包含输入和输出数据的大型机 EZT 工作负载 

**限制**

*范围限制*
+ **语言支持**-此特定转换模式仅支持 EZT 到 Java 的转换。 
+ **超出范围** — 其他大型机编程语言的转换需要在自定义中 AWS Transform 使用新的自定义转换定义。

*流程限制*
+ **验证依赖关系**-如果没有基线输出数据，则无法验证转换。 
+ **专有逻辑** — 高度具体的定制开发实用程序需要额外的用户文档和参考材料，AI 代理才能正确解释。

*技术限制*
+ **服务限制**-有关 AWS Transform 自定义服务限制和配额，请参阅[AWS Transform 用户指南-配额](https://docs.aws.amazon.com/transform/latest/userguide/transform-limits.html)和[AWS 一般参考-转换配额](https://docs.aws.amazon.com/general/latest/gr/aws-transform.html)。

**产品版本**
+ AWS Transform CLI — 最新版本
+ Node.js — 版本 20 或更高版本
+ Git — 最新版本
+ 目标环境
  + Java — 版本 17 或更高版本
  + Spring Boot — 版本 3.x 是重构应用程序的主要目标
  + Maven — 版本 3.6 或更高版本

## 架构
<a name="transform-easytrieve-modern-languages-architecture"></a>

**源技术堆栈**
+ **操作系统** — IBM z/OS
+ **编程语言** — Easytrieve，作业控制语言 (JCL)
+ **数据库** — DB2 适用于 z/OS 的 IBM、虚拟存储访问方法 (VSAM)、大型机平面文件

**目标技术堆栈**
+ **操作系统** — 亚马逊 Linux
+ **计算** — 亚马逊弹性计算云 (Amazon EC2) Amazon EC2
+ **编程语言** — Java
+ **数据库**亚马逊关系数据库服务 (Amazon RDS)

**目标架构**

![使用 AWS Transform 自定义将 EZT 转换为现代代码的目标架构图。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/71f15422-42cb-4c7e-94fa-051a4f130445/images/eb89eed0-dd55-485c-a433-9869162eaad9.png)


**Workflow (工作流程)**

该解决方案使用 AWS Transform 自定义 language-to-language迁移转换模式，通过四步自动化工作流程，将大型机 Easytrieve (EZT) 应用程序现代化为 Java。

*第 1 步 — 将您的旧代码提供给 Main AWS Transform frame，其中：*
+ 分析代码
+ 提取高级业务逻辑
+ 提取详细的业务逻辑。

*第 2 步-创建包含所需输入内容的文件夹：*
+ 使用AWS Transform 大型机提取的 EZT 业务规则 
+ EZT 编程参考文档 
+ EZT 源代码
+ 大型机输入和输出数据集

*步骤 3-创建并运行自定义转换定义*

1. 使用 C AWS Transform LI 用自然语言描述转型目标。 AWS Transform 自定义分析 BRE、源代码和 EZT 编程指南，生成自定义转换定义供开发人员审查和批准。

1. 然后，使用项目源代码调用 AWS Transform CLI。 AWS Transform custom 创建转换计划，在批准后将 EZT 转换为 Java，生成支持文件，生成可执行的 JAR，并验证退出标准。

1. 使用验证代理根据大型机输出测试功能等效性。自调试器代理会自动修复问题。最终交付内容包括经过验证的 Java 代码和 HTML 验证报告。

**自动化和扩展**
+ Agentic AI 多模式执行架构 — AWS Transform 自定义利用具有 3 种执行模式（对话式、交互式、完全自动化）的 agentic AI 来自动执行复杂的转换任务，包括代码分析、重构、转换计划和测试。
+ 自适应学习反馈系统 — 该平台通过代码样本分析、文档解析以及将开发者反馈与版本化转换定义集成来实现持续学习机制。
+ 并行应用程序处理架构 — 该系统支持在可扩展基础架构中同时分布式并行执行多个应用程序转换操作。

## 工具
<a name="transform-easytrieve-modern-languages-tools"></a>

**AWS 服务  **
+ [AWS Transform custom](https://docs.aws.amazon.com/transform/latest/userguide/custom.html) 是一项代理人工智能服务，用于将传统的 EZT 应用程序转换为现代编程语言。 
+ [AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/what-is-service.html)使用 agentic AI 来帮助您加快传统工作负载（例如.NET、大型机和工作负载）的现代化。 VMware 
+ AWS Transform for [mainframe](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe.html) 用于分析传统的 EZT 应用程序，以提取嵌入式业务逻辑并生成全面的业务规则文档，包括逻辑摘要、缩略词定义和结构化知识库。这些用作 AWS Transform 自定义的输入数据。 
+ [Amazon Simple Storage Service（Amazon S3）](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)是一项基于云的对象存储服务，可帮助您存储、保护和检索任意数量的数据。Amazon S3 充当 AWS Transform 自定义的主要存储服务，用于存储转换定义、代码存储库和处理结果。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 通过控制谁经过身份验证并有权使用 AWS 资源，从而帮助您安全地管理对资源的访问权限。IAM 为转换操作的 AWS Transform 自定义、管理权限和访问控制提供了安全框架。

**其他工具**
+ [AWS Transform CLI](https://docs.aws.amazon.com/transform/latest/userguide/custom-command-reference.html) 是 AWS Transform 自定义的命令行界面，使开发人员能够通过自然语言对话和自动执行模式定义、执行和管理自定义代码转换。 AWS Transform custom 支持交互式会话（atx custom def exec）和自主转换，以实现代码库的可扩展现代化。
+ [Git](https://git-scm.com/doc) 版本控制系统用于在自动修复应用期间提供分支保护、变更跟踪和回滚功能。 
+ [Java](https://www.java.com/en/) 是这种模式中使用的编程语言和开发环境。 

**代码存储库**

此模式的代码可在开启 “[AWS Transform 自定义” 的 Easytrieve 到现代语言的转换](https://github.com/aws-samples/sample-mainframe-easytrieve-transform?tab=readme-ov-file#easytrieve-to-modern-languages-transformation-with-aws-transform-custom)中找到。 GitHub

## 最佳实践
<a name="transform-easytrieve-modern-languages-best-practices"></a>
+ 建立标准化的项目结构 — 创建四文件夹结构（源代码、bre-doc、输入数据、输出数据），验证完整性，并在转换前记录内容。
+ 使用基准文件进行验证-使用生产基准输入文件，与基准输出进行 byte-by-byte比较，接受对偏差的零容忍。
+ 使用所有可用的参考文档 — 为了提高转换的准确性，请提供所有可用的参考文档，例如业务需求和编码清单。
+ 为质量改进提供意见 — c AWS Transform ustom 会自动从转换执行中提取经验教训（开发者反馈、代码问题），并为其创建知识项目。每次成功转换后，请查看知识项目并批准您希望在将来的执行中使用的知识项目。这提高了 future 转型的质量。

## 操作说明
<a name="transform-easytrieve-modern-languages-epics"></a>

### 生成业务规则摘录 (BRE)
<a name="generate-a-business-rule-extract-bre"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
|  AWS Transform 为大型机进行配置。 | 设置环境和所需的 AWS Identity and Access Management (IAM) 权限以支持大型机现代化工作流程。有关更多信息，请参阅 AWS 文档[中的大型机应用程序转换](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html)。 | 应用程序开发人员 | 
| 生成业务规则摘录 (BRE) 文档。 | 从源 EZT 或 COBOL 代码中提取业务逻辑以生成功能文档。有关如何启动提取过程和查看输出的说明，请参阅 AWS Transform 文档中的[提取业务逻辑](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-extract-business-logic)。 | 应用程序开发人员 | 

### 设置 AWS Transform 自定义
<a name="set-up-trn-custom"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 为 AWS Transform 自定义配置基础架构。 | 部署托管安全转型环境所需的生产就绪型基础架构。这包括一个私有 Amazon EC2 实例，该实例配置了用于转换 Easytrieve 代码的必要工具、IAM 权限和网络设置。要使用基础设施即代码 (IaC) 配置环境，请按照 [Easytrieve 使用自定义存储库向现代语言转型中的部署说明进行 AWS Transform](https://github.com/aws-samples/sample-mainframe-easytrieve-transform)操作。 GitHub  | AWS 开发人员、AWS 管理人 | 
| 准备要转换的输入材料。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | 应用程序开发人员 | 

###  创建自定义转换定义
<a name="create-a-custom-transformation-definition"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建转换定义。 | 按照以下步骤创建带有功能验证的 EZT 到 Java 转换的自定义转换定义。[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | 应用程序开发人员 | 
| 发布转换定义。 | 查看并验证转换定义后，您可以使用自然语言提示将其发布到 AWS Transform自定义注册表，并提供定义名称，例如 *easytrieve*-to-Java-Migration。 | 应用程序开发人员 | 

### 准备用于验证的基准数据。
<a name="prepare-baseline-data-for-validation"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 查看转换验证摘要。 | 在执行 AWS Transform自定义转换之前，请验证该`input-data`文件夹是否包含在执行大型机批处理作业之前捕获的所需数据文件。执行大型机批处理作业后，请确保该`output-data`文件夹捕获生成的文件。根据执行要求，所有文件均采用 Sequential/Text/DB 2 种格式，使用 EBCDIC 编码。[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | 应用程序开发人员 | 
| 运行自定义转换作业。 | 执行 AWS Transform CLI 命令，选择非交互式或交互式选项：<pre>:# Non-interactive execution (fully autonomous):<br />atx custom def exec \<br />  --transformation-name "Easytrieve-to-Java-Migration" \<br />  --code-repository-path ~/root/transform-workspace/mainframe-source/source-code \<br />  --build-command "mvn clean install" \<br />  --non-interactive \<br />  --trust-all-tools \<br /><br /># Interactive execution (with human oversight):<br />atx custom def exec \<br />  -n "Easytrieve-to-Java-Migration" \<br />  -p ~/root/transform-workspace/mainframe-source/source-code \<br />  -c "mvn clean install"<br /><br /># Resume interrupted execution:<br />atx -resume<br /># OR<br />atx --conversation-id <conversation-id><br /></pre><br />AWS Transform 在转换执行期间通过 build/test 命令自动验证。 | 应用程序开发人员 | 

### 验证并交付经过测试的代码
<a name="validate-and-deliver-tested-code"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 查看转换验证摘要。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | 应用程序开发人员 | 
| 访问验证报告。 | 输入以下命令以查看详细的验证工件：<pre># Full validation report<br />cat ~/.aws/atx/custom/$LATEST_SESSION/artifacts/validation_report.html<br /><br /># Generated code location<br />ls ~/.aws/atx/custom/$LATEST_SESSION/generated/<br /><br /># Execution logs<br />cat ~/.aws/atx/custom/$LATEST_SESSION/logs/execution.log</pre> | 应用程序开发人员 | 
| 启用知识项目以进行持续学习。 | 通过将建议的知识项提升到您的永久配置中，提高 future 转换的准确性。转换后，代理会将已识别的模式和映射规则存储在您的本地会话目录中。要查看和应用这些学习内容，请在您的 Amazon EC2 实例上运行以下命令：<pre># List all knowledge items for a specific transformation definition<br />atx custom def list-ki -n <transformation-name><br /><br /># Retrieve the details of a specific knowledge item<br />atx custom def get-ki -n <transformation-name> --id <id><br /><br /># Update the status of a knowledge item (ENABLED or DISABLED)<br />atx custom def update-ki-status -n <transformation-name> --id <id> --status ENABLED<br /><br /># Update the knowledge item configuration to enable auto-approval<br />atx custom def update-ki-config -n <transformation-name> --auto-enabled TRUE</pre> | 应用程序开发人员 | 

## 问题排查
<a name="transform-easytrieve-modern-languages-troubleshooting"></a>


| 问题 | 解决方案 | 
| --- | --- | 
| *输入和输出路径配置*<br />输入文件未被读取，或者输出文件写入不正确。  | 指定存储输入文件的完整目录路径，并明确指明应写入输出的位置。确保为这些目录配置了正确的访问权限。 <br />最佳做法包括使用绝对路径而不是相对路径来避免歧义，以及验证所有指定路径是否存在并具有适当 read/write 权限。  | 
| *恢复中断的执行*<br />执行已中断或需要从停止的地方继续执行 | 通过在 CLI 命令中提供会话 ID，您可以从上次中断的地方继续执行。<br />在您上一次执行尝试的日志中找到对话 ID。   | 
| *解决内存限制*<br />执行期间出现内存不足错误。 | 您可以要求 AWS Transform 共享当前的内存中 JVM 大小，然后根据此信息增加内存分配。这种调整有助于适应更大的处理要求。<br />如果调整后内存限制仍然存在，可以考虑将大型作业分成较小的批次。  | 
| *解决输出文件差异问题*<br />输出文件与预期不符， AWS Transform 表示无法进行进一步的更改。 | 提供具体的反馈和技术原因，解释当前输出不正确的原因。包括其他技术或业务文档以支持您的需求。此详细的上下文有助于 AWS Transform更正代码以生成正确的输出文件。 [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | 

## 相关资源
<a name="transform-easytrieve-modern-languages-resources"></a>
+ [AWS Transform 自定义文档](https://docs.aws.amazon.com/transform/latest/userguide/custom.html)
+ [Easytrieve 报告生成器 11.6](https://techdocs.broadcom.com/us/en/ca-mainframe-software/devops/ca-easytrieve-report-generator/11-6/getting-started.html)

## 附件
<a name="attachments-71f15422-42cb-4c7e-94fa-051a4f130445"></a>

要访问与此文档相关联的其他内容，请解压以下文件：[attachment.zip](samples/p-attach/71f15422-42cb-4c7e-94fa-051a4f130445/attachments/attachment.zip)