View a markdown version of this page

使用以下方法将 Easytrieve 转换为现代语言 AWS Transform 自定义 - AWS 规范指引

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

使用以下方法将 Easytrieve 转换为现代语言 AWS Transform 自定义

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

Summary

这种模式为使用自定义语言到语言的转换更快、风险更低的大型机 Broadcom Easytrieve 报告生成器 (EZT) 工作负载提供了规范性指导。AWS Transform它解决了对利基市场和专有大型机 EZT 工作负载进行现代化改造所面临的挑战,这些工作负载通常用于批量数据处理和报告生成。该模式将依赖专有工具和罕见的大型机专业知识的昂贵、漫长且容易出错的迁移方法替换为您创建的代理人工智能自动化解决方案。 AWS Transform

此模式为 EZT 转换提供了一个随时可用的自定义转换定义。该定义使用多个转换输入:

  • 使用AWS Transform 自定义提取的 EZT 业务规则

  • EZT 编程参考文档

  • EZT 源代码

  • 大型机输入和输出数据集

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

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

先决条件和限制

先决条件

  • 一个活跃的 AWS 账户 

  • 包含输入和输出数据的大型机 EZT 工作负载 

限制

范围限制

  • 语言支持- 此特定 EZT-to-Java 转换模式仅支持转换。此 APG 模式是在中的内联 EZT 代码上测试的。 JCL/Proc

  • 超出范围- 用于转换其他大型机编程语言, AWS Transform 用于大型机。要了解更多信息,请参阅 AWS Transform 用户指南中支持的大型机应用程序转换文件类型

流程限制

  • 验证依赖关系-如果没有基线输出数据,则无法验证转换。 

  • 专有逻辑 — 高度具体的定制开发实用程序需要额外的用户文档和参考材料,AI 代理才能正确解释。

技术限制

产品版本

  • AWS Transform CLI — 最新版本

  • Node.js — 版本 20 或更高版本

  • Git — 最新版本

  • 目标环境

    • Java — 版本 17 或更高版本

    • Spring Boot — 版本 3.x 是重构应用程序的主要目标

    • Maven — 版本 3.6 或更高版本

架构

源技术堆栈

  • 操作系统 — IBM z/OS

  • 编程语言 — Easytrieve,作业控制语言 (JCL)

  • 数据库 — 适用于 IBM DB2 z/OS、虚拟存储访问方法 (VSAM)、大型机平面文件

目标技术堆栈

  • 操作系统 — 亚马逊 Linux

  • 计算 — 亚马逊弹性计算云 (Amazon EC2) Amazon EC2

  • 编程语言 — Java

  • 数据库亚马逊关系数据库服务 (Amazon RDS)

目标架构

使用 AWS Transform 自定义将 EZT 转换为现代代码的目标架构图。

Workflow (工作流程)

该解决方案使用 AWS Transform 自定义的预建转换定义,通过三步自动化工作流程将大型机 Easytrieve (EZT) 应用程序现代化为 Java。 AWS Transform custom 处理整个流程,包括业务规则提取 (BRE)、代码转换和功能等效性验证,这些过程由作为本解决方案一部分提供的转换定义驱动。需要人工验证才能验证生成的 BRE 和功能等效报告的验证。

步骤 1-准备输入文件夹

  1. s@@ ource-code/ — EZT 源代码(.ezt 文件)、JCL 作业流(.jcl/.jcl 文件)、COBOL 程序、抄本和控制卡

  2. bre-doc/- 生成的业务规则摘录文档

  3. input-data/ — 用于验证的大型机输入数据集的基准

  4. ou@@ tput-data/ — 用于验证的大型机输出数据集的基准

  5. document_references/ — 转换定义和参考文档由以下人员提供:

    -bre_transformation_definition.md — 定义五阶段业务规则提取流程

    -transformation_definition.md — 定义 Easytrieve 如何构造到 Java 的映射

    -summaries.md — 转换规则和模式

    -ca-easytrieve-report-generator-11-6.txt — Easytrieve 参考手册

第 2 步 — 使用 AWS 自定义转换提取业务规则

1. 使用自然语言与 AWS Transform CLI 互动,查看可用的转换定义 (TD),并根据您的特定标准和规则自定义 BRE TD

2. 使用最终的 TD 生成 BRE 文档 — AWS Transform 自定义分析大型机源工件(Easytrieve、JCL、COBOL、Copybool、Copybool、Copybook、控制卡),并生成包含业务规则目录、文件布局、数据谱系和数据类型映射的结构化 BRE

3. 将生成的 BRE 文档移到bre-doc/文件夹,以便在步骤 3 中使用

第 3 步 — 生成功能等效的现代化代码

  1. 使用自然语言与 AWS Transform CLI 互动,查看可用的基础变换定义 (TD),并根据您的特定标准和规则自定义基本 TD。

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

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

自动化和扩展

  • Agentic AI 多模式执行架构 — AWS Transform 自定义利用具有 3 种执行模式(对话式、交互式和完全自动化)的 agentic AI 来自动执行复杂的转换任务,包括代码分析、重构、转换计划和测试。

  • 自适应学习反馈系统 — 该平台通过代码样本分析、文档解析以及将开发者反馈与版本化转换定义集成来实现持续学习机制。

  • 并行应用程序处理架构 — 该系统支持在可扩展基础架构中同时分布式并行执行多个应用程序转换操作。

工具

AWS 服务  

  • AWS Transform custom 是一项代理人工智能服务,用于将传统的 EZT 应用程序转换为现代编程语言。 

  • Amazon Simple Storage Service(Amazon S3)是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。Amazon S3 充当 AWS Transform 自定义的主要存储服务,用于存储转换定义、代码存储库和处理结果。

  • AWS Identity and Access Management (IAM) 通过控制谁经过身份验证并有权使用 AWS 资源,从而帮助您安全地管理对资源的访问权限。IAM 为转换操作的 AWS Transform 自定义、管理权限和访问控制提供了安全框架。

其他工具

  • AWS Transform CLI 是 AWS Transform 自定义的命令行界面,使开发人员能够通过自然语言对话和自动执行模式定义、执行和管理自定义代码转换。 AWS Transform custom 支持交互式会话(atx custom def exec)和自主转换,以实现代码库的可扩展现代化。

  • Git 版本控制系统用于在自动修复应用期间提供分支保护、更改跟踪和回滚功能。 

  • Java 是这种模式中使用的编程语言和开发环境。 

代码存储库

此模式的代码可在开启 “AWS Transform 自定义” 的 Easytrieve 到现代语言的转换中找到。 GitHub

最佳实践

  • 建立标准化的项目结构 — 创建四文件夹结构(源代码、bre-doc、输入数据、输出数据),验证完整性,并在转换前记录内容。

  • 使用基准文件进行验证 — 使用生产基准输入文件,与基准输出进行逐字节比较,接受零容忍偏差。

  • 使用所有可用的参考文档 — 为了提高转换的准确性,请提供所有可用的参考文档,例如业务需求和编码清单。

  • 为质量改进提供意见 — c AWS Transform ustom 会自动从转换执行中提取经验教训(开发者反馈、代码问题),并为其创建知识项目。每次成功转换后,请查看知识项目并批准您希望在将来的执行中使用的知识项目。这提高了 future 转型的质量。

操作说明

Task说明所需技能

为 AWS Transform 自定义配置基础架构。

部署托管安全转型环境所需的生产就绪型基础架构。这包括一个私有 Amazon EC2 实例,该实例配置了转换 Easytrieve 代码所需的必要工具、IAM 权限和网络设置。要使用基础设施即代码 (IaC) 配置环境,请按照 Easytrieve 使用自定义存储库向现代语言转型中的部署说明进行 AWS Transform操作。 GitHub

AWS 开发人员、AWS 管理人

准备要转换的输入材料。

  1. 输入以下命令来创建文件夹结构:

    mkdir -p /root/transform-workspace/mainframe-source/{source-code,bre-doc,input-data,output-data}

    这将创建以下文件夹:

    • source-code— 存储 EZT 源代码

    • bre-doc— 存储 BRE 文档

    • input-data— 存储用于大型机批处理执行的输入数据(EBCDIC Sequential/Text/DB2 格式的文件)

    • output-data— 批处理执行后将输出数据存储在大型机中(EBCDIC Sequential/Text/DB2 格式的文件)

  2. 输入以下命令来初始化 Git 存储库:

    cd /root/transform-workspace/mainframe-source/source-code git init git add . git commit -m "Initial commit"
应用程序开发人员
Task说明所需技能

创建 BRE 转换定义

按照以下步骤从 Easytrieve 源代码中为 BRE(业务规则提取)创建自定义转换定义。

1. 前往此模式的代码存储库,然后从 documents 文件夹中复制 bre_transformation_definition.md 以及带有 EZT 编码指南的 document_references 文件夹。

2. 在 AWS Transform CLI 中将该内容上传到您选择的位置,并记下后续步骤中要使用的路径位置。

3. 使用 atx 命令 AWS Transform 从 CLI 调用。

4. 在 CLI 中提供以下提示:

使用我的转换定义文件创建自定义转换,该文件位于 path <path to content from step #2 >

AWS Transform 为 BRE 生成创建新的自定义转换定义。

5. 查看转换定义并在需要时进行更改。

应用程序开发人员

发布 BRE 转换定义

审核和验证 BRE 转换定义后,您可以使用自然语言提示将其发布到 AWS Transform 自定义注册表,并提供定义名称,例如 Easytrieve-Business-Rule-Extract。

应用程序开发人员

创建转换定义。

按照以下步骤创建带有功能验证的 EZT 到 Java 转换的自定义转换定义。

  1. 前往此模式的代码存储库并复制该documents文件夹的内容。这应该包括 transformation _definition.md、summaries. md 和包含 EZT 编码指南的文件夹document_references

  2. 在 AWS Transform CLI 中将该内容上传到您选择的位置,并记下后续步骤中要使用的路径位置。

  3. 使用atx命令 AWS Transform 从 CLI 调用。

  4. 在 CLI 中提供以下提示:使用我的转换定义文件创建自定义转换路径为 <path to content from step #2 > EZT 到 Java 的转换 AWS Transform 创建新的自定义转换定义。

  5. 查看转换定义并在需要时进行更改。

应用程序开发人员

发布转换定义。

查看并验证转换定义后,您可以使用自然语言提示将其发布到 AWS Transform自定义注册表,并提供定义名称,例如Easytrieve-to-Java-Migration

应用程序开发人员
Task说明所需技能

运行 BRE 生成作业。

执行 AWS Transform CLI 命令,选择非交互式或交互式选项:

Non-interactive 执行(完全自主):

atx custom def exec --transformation-name "Easytrieve-Business-Rule-Extract" --code-repository-path ~/root/transform-workspace/mainframe-source/source-code --non-interactive --trust-all-tools

交互式执行(由人工监督):

atx custom def exec -n "Easytrieve-Business-Rule-Extract" -p ~/root/transform-workspace/mainframe-source/source-code

恢复中断的执行:

atx --resume

atx --conversation-id <conversation-id>

将生成的 BRE 文档移至 b re-doc/ 文件夹,以便在转换步骤中用作输入。 Easytrieve-to-Java

应用程序开发人员
Task说明所需技能

查看转换验证摘要。

在执行 AWS Transform自定义转换之前,请验证该input-data文件夹是否包含在执行大型机批处理作业之前捕获的所需数据文件。执行大型机批处理作业后,请确保该output-data文件夹捕获生成的文件。根据执行要求,所有文件的 Sequential/Text/DB2 格式均使用 EBCDIC 编码。

  • 将输入数据放在input-data/文件夹中

  • 将基线输出放在output-data/文件夹中

应用程序开发人员

运行自定义转换作业。

执行 AWS Transform CLI 命令,选择非交互式或交互式选项:

:# Non-interactive execution (fully autonomous): atx custom def exec \ --transformation-name "Easytrieve-to-Java-Migration" \ --code-repository-path ~/root/transform-workspace/mainframe-source/source-code \ --build-command "mvn clean install" \ --non-interactive \ --trust-all-tools \ # Interactive execution (with human oversight): atx custom def exec \ -n "Easytrieve-to-Java-Migration" \ -p ~/root/transform-workspace/mainframe-source/source-code \ -c "mvn clean install" # Resume interrupted execution: atx -resume # OR atx --conversation-id <conversation-id>

AWS Transform 在转换执行期间通过 build/test 命令自动验证。

应用程序开发人员
Task说明所需技能

查看转换验证摘要。

  1. 等待 AWS Transform 通过编译和测试命令自动验证代码。

  2. 输入以下命令查找最新的会话:

    LATEST_SESSION=$(ls -t ~/.aws/atx/custom/ | head -1
  3. 输入以下命令查看验证摘要:

    cat ~/.aws/atx/custom/$LATEST_SESSION/artifacts/validation_summary.md
  4. 输入以下命令以检查整体状态:

    grep "OVERALL STATUS" ~/.aws/atx/custom/$LATEST_SESSION/artifacts/validation_summary.md
应用程序开发人员

访问验证报告。

输入以下命令以查看详细的验证工件:

# Full validation report cat ~/.aws/atx/custom/$LATEST_SESSION/artifacts/validation_report.html # Generated code location ls ~/.aws/atx/custom/$LATEST_SESSION/generated/ # Execution logs cat ~/.aws/atx/custom/$LATEST_SESSION/logs/execution.log
应用程序开发人员

启用知识项目以进行持续学习。

通过将建议的知识项提升到您的永久配置中,提高 future 转换的准确性。转换后,代理会将已识别的模式和映射规则存储在您的本地会话目录中。要查看和应用这些学习内容,请在您的 Amazon EC2 实例上运行以下命令:

# List all knowledge items for a specific transformation definition atx custom def list-ki -n <transformation-name> # Retrieve the details of a specific knowledge item atx custom def get-ki -n <transformation-name> --id <id> # Update the status of a knowledge item (ENABLED or DISABLED) atx custom def update-ki-status -n <transformation-name> --id <id> --status ENABLED # Update the knowledge item configuration to enable auto-approval atx custom def update-ki-config -n <transformation-name> --auto-enabled TRUE
应用程序开发人员

问题排查

问题解决方案

输入和输出路径配置

输入文件未被读取,或者输出文件写入不正确。 

指定存储输入文件的完整目录路径,并明确指出应写入输出的位置。确保为这些目录配置了正确的访问权限。 

最佳做法包括使用绝对路径而不是相对路径来避免歧义,以及验证所有指定路径是否存在并具有适当 read/write 权限。 

恢复中断的执行

执行已中断或需要从停止的地方继续执行

通过在 CLI 命令中提供会话 ID,您可以从上次中断的地方继续执行。

在您上一次执行尝试的日志中找到对话 ID。  

解决内存限制

执行期间出现内存不足错误。

您可以要求 AWS Transform 共享当前的内存中 JVM 大小,然后根据此信息增加内存分配。这种调整有助于适应更大的处理要求。

如果调整后内存限制仍然存在,可以考虑将大型作业分成较小的批次。 

解决输出文件差异问题

输出文件与预期不符, AWS Transform 表示无法进行进一步的更改。

提供具体的反馈和技术原因,解释当前输出不正确的原因。包括其他技术或业务文档以支持您的需求。此详细的上下文有助于 AWS Transform更正代码以生成正确的输出文件。 

  • 比较预期产出与实际产出的具体示例 

  • 参考相关文件或标准

  • 明确解释差异对业务的影响  

相关资源