

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

# 使用 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 轉換提供立即可用的自訂轉換定義。此定義使用多個轉換輸入：
+ 使用 為 [AWS Transform 大型主機擷取的](https://aws.amazon.com/transform/mainframe/) EZT 業務規則
+ EZT 程式設計參考文件
+ EZT 原始碼
+ 大型主機輸入和輸出資料集

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

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

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

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

**限制**

*範圍限制 *
+ **語言支援** – 此特定轉換模式僅支援 EZT-to-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 版或更新版本

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

**來源技術堆疊**
+ **作業系統** – IBM z/OS
+ **程式設計語言** – Easytrieve、任務控制語言 (JCL)
+ **資料庫** – z/OS 的 IBM DB2、虛擬儲存存取方法 (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/eb89eed0-dd55-485c-a433-9869162eaad9.png)


**工作流程**

此解決方案使用 AWS Transform 自訂language-to-language遷移轉換模式，透過四步驟自動化工作流程將大型主機 Easytrieve (EZT) 應用程式現代化為 Java。

*步驟 1 –  將舊版程式碼提供給適用於 大型主機 AWS Transform 的 ，以：*
+ 分析程式碼
+ 擷取高階商業邏輯
+ 擷取詳細的商業邏輯。

*步驟 2 –  使用所需的輸入建立資料夾：*
+ 使用 為大型主機擷取 AWS Transform 的 EZT 業務規則 
+ EZT 程式設計參考文件 
+ EZT 原始碼
+ 大型主機輸入和輸出資料集

*步驟 3 – 建立並執行自訂轉換定義*

1. 使用 AWS Transform CLI 以自然語言描述轉換目標。 AWS Transform 自訂會分析 BRE、原始程式碼和 EZT 程式設計指南，以產生自訂轉換定義以供開發人員檢閱和核准。

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 custom](https://docs.aws.amazon.com/transform/latest/userguide/custom.html) 是一種代理式 AI 服務，用於將舊版 EZT 應用程式轉換為現代程式設計語言。 
+ [AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/what-is-service.html) 使用代理式 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 自訂支援互動式工作階段 (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>

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


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
|  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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 佈建 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立轉換定義。 | 請依照下列步驟，使用功能驗證建立 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*。 | 應用程式開發人員 | 

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


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 檢閱轉換驗證摘要。 | 在執行 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>AWS Transform 在轉換執行期間， 會透過建置/測試命令自動驗證。 | 應用程式開發人員 | 

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


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 檢閱轉換驗證摘要。 | [\[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>


| 問題 | 解決方案 | 
| --- | --- | 
| *輸入和輸出路徑組態*輸入檔案未讀取，或輸出檔案未正確寫入。  | 指定存放輸入檔案的完整目錄路徑，並清楚指出輸出應寫入的位置。確保已為這些目錄設定適當的存取許可。 最佳實務包括使用絕對路徑而非相對路徑來避免模棱兩可的情況，並驗證所有指定的路徑都具有適當的讀取/寫入許可。  | 
| *繼續中斷的執行*執行中斷或需要從停止的位置繼續執行 | 您可以在 CLI 命令中提供對話 ID，從您離開的地方繼續執行。在先前執行嘗試的日誌中尋找對話 ID。   | 
| *解決記憶體限制*執行期間發生記憶體不足錯誤。 | 您可以要求 AWS Transform 共用目前的記憶體內 JVM 大小，然後根據此資訊增加記憶體配置。此調整有助於因應更大的處理需求。如果記憶體限制在調整後仍存在，請考慮將大型任務分成較小的批次。  | 
| *解決輸出檔案差異*輸出檔案不符合預期，且 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)

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

若要存取與本文件相關聯的其他內容，請解壓縮下列檔案： [attachment.zip](samples/p-attach/71f15422-42cb-4c7e-94fa-051a4f130445/attachments/attachment.zip)