

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 AWS Transform 自訂將 Easytrieve 轉換為現代語言
<a name="transform-easytrieve-modern-languages"></a>

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

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

此模式為使用 [AWS Transform 自訂](https://aws.amazon.com/transform/custom/) language-to-language 轉換的大型主機 Broadcom [Easytrieve 報告產生器](https://techdocs.broadcom.com/us/en/ca-mainframe-software/devops/ca-easytrieve-report-generator/11-6.html) (EZT) 工作負載提供更快和較低風險轉換的規範性指引。它解決了現代化常用於批次資料處理和報告產生之利基和專屬大型主機 EZT 工作負載的挑戰。此模式會使用您建立的代理式 AI 自動化解決方案，取代依賴專屬工具和罕見大型主機專業知識的昂貴、冗長且容易出錯的遷移方法 AWS Transform。

此模式為 EZT 轉換提供ready-to-use自訂轉換定義。此定義使用多個轉換輸入：
+ 使用 AWS Transform 自訂擷取的 EZT 商業規則
+ EZT 程式設計參考文件
+ EZT 原始碼
+ 大型主機輸入和輸出資料集

AWS Transform 自訂 使用這些輸入，以現代目標語言產生功能上同等的應用程式，例如 Java 或 Python。

轉換程序使用智慧型測試執行、自動偵錯和反覆修正功能，來驗證對預期輸出的功能等效性。它還支援持續學習，使自訂轉換定義能夠提高連續轉換的準確性和一致性。使用這種模式，組織可以減少遷移工作量和風險、解決利基大型主機技術債務，並將 上的 EZT 工作負載現代化 AWS ，以提高敏捷性、可靠性、安全性和創新性。

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

**先決條件**
+ 作用中 AWS 的帳戶 
+ 具有輸入和輸出資料的大型主機 EZT 工作負載 

**限制**

*範圍限制 *
+ **語言支援 - **此特定轉換模式僅支援 EZT-to-Java 轉換。此 APG 模式會在 JCL/Proc 中的內嵌 EZT 程式碼上進行測試。
+ **超出範圍 - ** AWS Transform 用於轉換用於大型主機的其他大型主機程式設計語言。請參閱 AWS Transform 《 使用者指南》中的[用於大型主機應用程式轉換的支援檔案類型](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe.html#transform-app-mainframe-supported-files)。

*程序限制 *
+ **驗證相依性** – 如果沒有基準輸出資料，就無法驗證轉換。 
+ **專屬邏輯** – 高度特定、自訂開發的公用程式需要額外的使用者文件和參考資料，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 版或更新版本

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

**來源技術堆疊**
+ **作業系統** – IBM z/OS
+ **程式設計語言** – Easytrieve、任務控制語言 (JCL)
+ **資料庫** – IBM DB2 for z/OS、虛擬儲存存取方法 (VSAM)、大型主機平面檔案

**目標技術堆疊**
+ **作業系統** – Amazon Linux
+ **運算** – Amazon Elastic Compute Cloud (Amazon EC2)
+ **程式設計語言** – Java
+ **資料庫** Amazon Relational Database Service (Amazon RDS)

**目標架構**

![使用 AWS 轉換自訂將 EZT 轉換為現代程式碼的目標架構圖表。](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/71f15422-42cb-4c7e-94fa-051a4f130445/images/64cbe607-22d3-440c-b888-9a6a86074563.png)


**工作流程**

此解決方案使用 AWS Transform 自訂與預先建置的轉換定義，透過三步驟自動化工作流程將大型主機 Easytrieve (EZT) 應用程式現代化為 Java。 AWS Transform 自訂處理整個程序：業務規則擷取 (BRE)、程式碼轉換和功能等效性驗證，由此解決方案中提供的轉換定義所驅動。需要人工驗證才能驗證產生的 BRE 和驗證功能等效性報告。

*步驟 1 –  準備輸入資料夾*

1. **source-code/** – EZT 原始碼 (.ezt 檔案）、JCL 任務串流 (.jcl/。JCL 檔案）、COBOL 程式、複本和控制卡

1. **bre-doc/ - **產生的商業規則擷取文件

1. **input-data/** – 驗證的基準大型主機輸入資料集

1. **output-data/** – 用於驗證的基準大型主機輸出資料集

1. **document\_references/** – 轉換定義和參考文件，由以下人員提供：

    - `bre_transformation_definition.md` – 定義 5 階段業務規則擷取程序

    - `transformation_definition.md` – 定義 Easytrieve 建構如何映射到 Java

    - `summaries.md` – 轉換規則和模式

    - `ca-easytrieve-report-generator-11-6.txt` – Easytrieve 參考手冊

*步驟 2 – 使用 AWS Transform Custom 擷取業務規則*

1. 使用自然語言與 AWS Transform CLI 互動，以檢閱可用的轉換定義 (TDs)，並自訂 BRE TD 以符合您的特定條件和規則

2. 使用最終 TD 產生 BRE 文件 — AWS Transform 自訂會分析大型主機來源成品 (Easytrieve、JCL、COBOL、複製手冊、控制卡），並產生具有業務規則目錄、檔案配置、資料歷程和資料類型映射的結構化 BRE

3. 將產生的 BRE 文件移至`bre-doc/`資料夾，以便在步驟 3 中使用

*步驟 3 – 產生功能同等的現代化程式碼 *

1. 使用自然語言與 AWS Transform CLI 互動，以檢閱可用的[基礎轉換定義 (TDs)](https://github.com/aws-samples/sample-mainframe-easytrieve-transform/blob/main/documents/transformation_definition.md)，並自訂基礎 TD，以符合您的特定條件和規則。

1. 然後，使用專案原始碼叫用 AWS Transform CLI。 AWS Transform 自訂會建立轉換計劃、在核准時將 EZT 轉換為 Java、產生支援檔案、建置可執行 JAR，以及驗證結束條件。

1. 使用驗證代理程式來測試與大型主機輸出 的功能等效性。自我偵錯工具代理程式會自動修正問題。最終交付項目包括經過驗證的 Java 程式碼和 HTML 驗證報告。

**自動化和擴展**
+ 代理式 AI 多模式執行架構 - AWS Transform 自訂利用代理式 AI 搭配 3 種執行模式 - 對話式、互動式和完整自動化 - 來自動化複雜的轉換任務，包括程式碼分析、重構、轉換規劃和測試。
+ 自適應學習意見回饋系統 – 平台透過程式碼範例分析、文件剖析，以及開發人員意見回饋與版本化轉換定義的整合，來實作持續學習機制。
+ 並行應用程式處理架構 – 系統可跨可擴展的基礎設施同時進行多個應用程式轉換操作的分散式平行執行。

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

**AWS 服務  **
+ [AWS Transform 自訂](https://docs.aws.amazon.com/transform/latest/userguide/custom.html) 是一種代理式 AI 服務，用於將舊版 EZT 應用程式轉換為現代程式設計語言。 
+ [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 自訂支援互動式工作階段 (atx custom def exec) 和自動轉換，以實現程式碼庫的可擴展現代化。
+ [Git](https://git-scm.com/doc) 版本控制系統用於自動修正應用程式期間的分支保護、變更追蹤和復原功能。 
+ [Java](https://www.java.com/en/) 是此模式中使用的程式設計語言和開發環境。 

**程式碼儲存庫**

此模式的程式碼可在搭配 GitHub 上的[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)中取得。

## 最佳實務
<a name="transform-easytrieve-modern-languages-best-practices"></a>
+ 建立標準化專案結構 – 建立四資料夾結構 (source-code、bre-doc、 input-data、 output-data)、驗證完整性，並在轉換之前記錄內容。
+ 使用基準檔案進行驗證 – 使用生產基準輸入檔案、執行與基準輸出byte-by-byte比較、接受偏差的零容忍度。
+ 使用所有可用的參考文件  – 若要提高轉換的準確性，請提供所有可用的參考文件，例如業務需求和編碼檢查清單。
+ 提供改善品質的輸入  – AWS Transform 自訂會自動從轉換執行中擷取學習 （開發人員意見回饋、程式碼問題），並為其建立知識項目。 在每次成功轉換後檢閱知識項目，並核准您希望在未來執行中使用的項目。這可改善未來轉換的品質。

## 史詩
<a name="transform-easytrieve-modern-languages-epics"></a>

### 設定 AWS Transform 自訂
<a name="set-up-trn-custom"></a>


| 任務 | 說明 | 所需的技能 | 
| --- | --- | --- | 
| 佈建 AWS Transform 自訂的基礎設施。 | 部署託管安全轉型環境所需的生產就緒基礎設施。這包括使用轉換 Easytrieve 程式碼所需的工具、IAM 許可和網路設定設定的私有 Amazon EC2 執行個體。若要使用基礎設施做為程式碼 (IaC) 佈建環境，請遵循 [Easytrieve to Modern Languages Transformation with AWS Transform Custom](https://github.com/aws-samples/sample-mainframe-easytrieve-transform) GitHub 儲存庫中的部署說明。 | 應用程式開發人員、AWS 管理員 | 
| 準備用於轉換的輸入資料。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | 應用程式開發人員 | 

###  建立自訂轉換定義
<a name="create-a-custom-transformation-definition"></a>


| 任務 | 說明 | 所需的技能 | 
| --- | --- | --- | 
| 建立 BRE 轉換定義 | 請依照下列步驟，從 Easytrieve 原始程式碼建立 BRE （業務規則擷取） 的自訂轉換定義。<br />1. 前往此模式的程式碼儲存庫，並使用 EZT 編碼指南從文件資料夾以及 document\_references 資料夾複製 bre\_transformation\_definition.md。<br />2. 在 CLI AWS Transform 中將該內容上傳到您選擇的位置，並記下要在後續步驟中使用的路徑位置。<br />3. 使用 atx 命令 AWS Transform 從 CLI 叫用 。<br />4. 在 CLI 中提供此提示：<br /> **使用我的轉換定義檔案建立自訂轉換，可在步驟 \#2> 的內容路徑 <path**<br /> AWS Transform 會為 BRE 產生建立新的自訂轉換定義。<br />5. 檢閱轉換定義，並視需要進行變更。 | 應用程式開發人員 | 
| 發佈 BRE 轉換定義 | 在檢閱和驗證 BRE 轉換定義後，您可以使用自然語言提示將其發佈到 AWS Transform 自訂登錄檔，並提供定義名稱，例如 Easytrieve-Business-Rule-Extract。 | 應用程式開發人員 | 
| 建立轉換定義。 | 請依照下列步驟，使用功能驗證建立 EZT 到 Java 轉換的自訂轉換定義。[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | 應用程式開發人員 | 
| 發佈轉換定義。 | 在檢閱和驗證轉換定義之後，您可以使用自然語言提示將其發佈到 AWS Transform 自訂登錄檔，並提供定義名稱，例如 *Easytrieve-to-Java-Migration*。 | 應用程式開發人員 | 

### 產生業務規則擷取 (BRE)
<a name="generate-a-business-rule-extract-bre"></a>


| 任務 | 說明 | 所需的技能 | 
| --- | --- | --- | 
| 執行 BRE 產生任務。 | 執行 AWS Transform CLI 命令，選擇非互動式或互動式選項：<br />**非互動式執行 （完全自主）：**<pre>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</pre><br />**互動式執行 （人工監督）：**<pre>atx custom def exec -n "Easytrieve-Business-Rule-Extract" -p ~/root/transform-workspace/mainframe-source/source-code</pre><br />繼續中斷的執行：<pre>atx --resume</pre><br />或<pre>atx --conversation-id <conversation-id>  </pre><br />將產生的 BRE 文件移至 **bre-doc/ **資料夾，以在 Easytrieve-to-Java 轉換步驟期間用作輸入。 | 應用程式開發人員 | 

### 準備基準資料以進行驗證。
<a name="prepare-baseline-data-for-validation"></a>


| 任務 | 說明 | 所需的技能 | 
| --- | --- | --- | 
| 檢閱轉換驗證摘要。 | 在執行 AWS Transform 自訂轉換之前，請確認 `input-data` 資料夾包含執行大型主機批次任務之前擷取的必要資料檔案。在大型主機批次任務執行之後，請確定 `output-data` 資料夾會擷取產生的檔案。根據執行需求，所有檔案都是使用 EBCDIC 編碼的Sequential/Text/DB2 格式。[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/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 在轉換執行期間， 會透過建置/測試命令自動驗證。 | 應用程式開發人員 | 

### 驗證和交付經過測試的程式碼
<a name="validate-and-deliver-tested-code"></a>


| 任務 | 說明 | 所需的技能 | 
| --- | --- | --- | 
| 檢閱轉換驗證摘要。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/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> | 應用程式開發人員 | 
| 啟用知識項目以進行持續學習。 | 將建議的知識項目提升為持久性組態，以改善未來的轉型準確性。轉換後，代理程式會將已識別的模式和映射規則存放在本機工作階段目錄中。若要檢閱並套用這些學到的項目，請在 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 />最佳實務包括使用絕對路徑而非相對路徑，以避免模棱兩可的情況，並驗證所有指定的路徑都具有適當的讀取/寫入許可。  | 
| *繼續中斷的執行*<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_tw/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)