

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Trasforma Easytrieve in linguaggi moderni utilizzando AWS Transform personalizzato
<a name="transform-easytrieve-modern-languages"></a>

*Shubham Roy, Subramanyam Malisetty e Harshitha Shashidhar, Amazon Web Services*

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

[https://techdocs.broadcom.com/us/en/ca-mainframe-software/devops/ca-easytrieve-report-generator/11-6.html](https://techdocs.broadcom.com/us/en/ca-mainframe-software/devops/ca-easytrieve-report-generator/11-6.html) Risolve le sfide della modernizzazione dei carichi di lavoro EZT mainframe proprietari e di nicchia, comunemente utilizzati per l'elaborazione di dati in batch e la generazione di report. Il modello sostituisce approcci di migrazione costosi, lunghi e soggetti a errori che si basano su strumenti proprietari e rare competenze nel mainframe con una soluzione automatizzata di intelligenza artificiale agentica su cui creare. AWS Transform

Questo modello fornisce una definizione di trasformazione personalizzata pronta all'uso per la trasformazione EZT. La definizione utilizza più input di trasformazione:
+ Regole aziendali EZT estratte utilizzando regole personalizzate AWS Transform 
+ Documentazione di riferimento sulla programmazione EZT
+ Codice sorgente EZT
+ Set di dati di input e output del mainframe

AWS Transform custom utilizza questi input per generare applicazioni funzionalmente equivalenti nei linguaggi di destinazione moderni, come Java o Python.

Il processo di trasformazione utilizza l'esecuzione intelligente dei test, il debug automatizzato e le funzionalità di correzione iterativa per convalidare l'equivalenza funzionale rispetto agli output previsti. Supporta inoltre l'apprendimento continuo, abilitando la definizione di trasformazione personalizzata per migliorare la precisione e la coerenza tra le trasformazioni successive. Utilizzando questo modello, le organizzazioni possono ridurre gli sforzi e i rischi legati alla migrazione, far fronte al debito tecnico di nicchia nel settore mainframe e modernizzare i carichi di lavoro EZT AWS per migliorare l'agilità, l'affidabilità, la sicurezza e l'innovazione.

## Prerequisiti e limitazioni
<a name="transform-easytrieve-modern-languages-prereqs"></a>

**Prerequisiti**
+ Un account attivo AWS  
+ Un carico di lavoro EZT mainframe con dati di input e output 

**Limitazioni**

*Limitazioni dell'ambito*
+ **Supporto linguistico:** per questo modello di EZT-to-Java trasformazione specifico è supportata solo la trasformazione. Questo pattern APG è testato su codice EZT in linea in. JCL/Proc
+ **Fuori ambito:** per la trasformazione di altri linguaggi di programmazione mainframe, utilizzare for mainframe. AWS Transform Scopri di più in [Tipi di file supportati per la trasformazione delle applicazioni mainframe](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe.html#transform-app-mainframe-supported-files) nella guida per l' AWS Transform utente.

*Limitazioni del processo*
+ **Dipendenza dalla convalida**: senza dati di output di base, la trasformazione non può essere convalidata. 
+ **Logica proprietaria**: utilità altamente specifiche e sviluppate su misura richiedono documentazione utente aggiuntiva e materiali di riferimento per essere interpretate correttamente dall'agente AI.

*Limitazioni tecniche*
+ **Limiti del servizio**: per i limiti e le quote di servizio AWS Transform personalizzati, consulta la [Guida per AWS Transform l'utente - Quotas](https://docs.aws.amazon.com/transform/latest/userguide/transform-limits.html) e il [riferimento AWS generale - Transform](https://docs.aws.amazon.com/general/latest/gr/aws-transform.html) Quotas.

**Versioni del prodotto**
+ AWS Transform CLI — Versione più recente
+ Node.js — versione 20 o successiva
+ Git — Versione più recente
+ Ambiente di destinazione
  + Java: versione 17 o successiva
  + Spring Boot: la versione 3.x è l'obiettivo principale per le applicazioni refactorizzate
  + Maven — versione 3.6 o successiva

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

**Stack tecnologico di origine**
+ **Sistema operativo**: IBM z/OS
+ **Linguaggio di programmazione** — Easytrieve, Job control language (JCL)
+ **Database**: IBM DB2 for z/OS, Virtual Storage Access Method (VSAM), file flat per mainframe

**Stack tecnologico Target**
+ **Sistema operativo**: Amazon Linux
+ **Elaborazione**: Amazon Elastic Compute Cloud (Amazon EC2) Elastic Compute
+ **Linguaggio di programmazione**: Java
+ **Database** Amazon Relational Database Service (Amazon RDS)

**Architettura di Target**

![diagramma dell'architettura di destinazione per utilizzare AWS Transform custom per trasformare EZT in codice moderno.](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/71f15422-42cb-4c7e-94fa-051a4f130445/images/64cbe607-22d3-440c-b888-9a6a86074563.png)


**Flusso di lavoro**

Questa soluzione utilizza definizioni di trasformazione AWS Transform personalizzate e predefinite per modernizzare le applicazioni mainframe Easytrieve (EZT) in Java attraverso un flusso di lavoro automatizzato in tre fasi. AWS Transform custom gestisce l'intero processo (estrazione delle regole aziendali (BRE), trasformazione del codice e convalida dell'equivalenza funzionale, basandosi sulle definizioni di trasformazione fornite come parte di questa soluzione. È necessaria la convalida umana per convalidare il rapporto di equivalenza funzionale generato dal BRE e di convalida. 

*Passaggio 1: preparare la cartella degli input*

1. **source-code/** — Codice sorgente EZT (file.ezt), flussi di lavoro JCL (file.jcl/.jcl), programmi COBOL, quaderni e schede di controllo

1. **bre-doc/ -** Documento di estrazione delle regole aziendali generato

1. **input-data/** — Set di dati di input di base del mainframe per la convalida

1. **output-data/** — Set di dati di output di base del mainframe per la convalida

1. document\_references/ — Definizioni di trasformazione e **documentazione** di riferimento fornita da:

    - `bre_transformation_definition.md` — Definisce il processo di estrazione delle regole aziendali in 5 fasi

    - `transformation_definition.md` — Definisce il modo in cui Easytrieve costruisce la mappa su Java

    - `summaries.md` — Regole e modelli di trasformazione

    - `ca-easytrieve-report-generator-11-6.txt` — Manuale di riferimento Easytrieve

*Fase 2: Estrarre le regole aziendali utilizzando AWS Transform Custom*

1. Interagisci con la AWS Transform CLI utilizzando il linguaggio naturale per rivedere le definizioni di trasformazione (TD) disponibili e personalizzare il BRE TD in base a criteri e regole specifici

2. Utilizza il TD definitivo per generare il documento BRE: analizza in modo AWS Transform personalizzato gli artefatti di origine del mainframe (Easytrieve, JCL, COBOL, quaderni, schede di controllo) e produce un BRE strutturato con catalogo di regole aziendali, layout di file, data lineage e mappature dei tipi di dati

3. Sposta il documento BRE generato nella cartella da utilizzare nella fase 3 `bre-doc/`

*Fase 3 — Generazione di codice modernizzato equivalente funzionale*

1. Interagisci con la AWS Transform CLI utilizzando il linguaggio naturale per esaminare [le definizioni di trasformazione di base (TD)](https://github.com/aws-samples/sample-mainframe-easytrieve-transform/blob/main/documents/transformation_definition.md) disponibili e personalizzare il TD di base in base a criteri e regole specifici.

1. Quindi, richiama la AWS Transform CLI con il codice sorgente del progetto. AWS Transform custom crea piani di trasformazione, converte EZT in Java dopo l'approvazione, genera file di supporto, crea il JAR eseguibile e convalida i criteri di uscita.

1. Utilizzate l'agente di convalida per testare l'equivalenza funzionale rispetto all'output del mainframe. L' Self-Debugger agente risolve i problemi in modo autonomo. I risultati finali includono codice Java convalidato e report di convalida HTML.

**Automazione e scalabilità**
+ Architettura di esecuzione multimodale Agentic AI: AWS Transform personalizzata sfrutta l'intelligenza artificiale agentica con 3 modalità di esecuzione, conversazionale, interattiva e di automazione completa, per automatizzare attività di trasformazione complesse tra cui analisi del codice, refactoring, pianificazione e test della trasformazione.
+ Sistema di feedback adattivo per l'apprendimento: la piattaforma implementa meccanismi di apprendimento continuo attraverso l'analisi di esempi di codice, l'analisi della documentazione e l'integrazione del feedback degli sviluppatori con definizioni di trasformazione versionate.
+ Architettura di elaborazione simultanea delle applicazioni: il sistema consente l'esecuzione parallela distribuita di più operazioni di trasformazione delle applicazioni contemporaneamente su un'infrastruttura scalabile.

## Tools (Strumenti)
<a name="transform-easytrieve-modern-languages-tools"></a>

**Servizi AWS  **
+ [AWS Transform custom](https://docs.aws.amazon.com/transform/latest/userguide/custom.html) è un servizio di intelligenza artificiale agentica utilizzato per trasformare le applicazioni EZT legacy in linguaggi di programmazione moderni. 
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati. Amazon S3 funge da servizio di storage principale per l'archiviazione AWS Transform personalizzata di definizioni di trasformazione, repository di codice e risultati di elaborazione. 
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle. IAM fornisce il framework di sicurezza per la gestione AWS Transform personalizzata delle autorizzazioni e del controllo degli accessi per le operazioni di trasformazione.

**Altri strumenti**
+ [AWS Transform CLI](https://docs.aws.amazon.com/transform/latest/userguide/custom-command-reference.html) è l'interfaccia a riga di comando AWS Transform personalizzata, che consente agli sviluppatori di definire, eseguire e gestire trasformazioni di codice personalizzate tramite conversazioni in linguaggio naturale e modalità di esecuzione automatizzate. AWS Transform custom supporta sia sessioni interattive (atx custom def exec) sia trasformazioni autonome per la modernizzazione scalabile delle codebase.
+ Sistema di controllo della versione [Git](https://git-scm.com/doc) utilizzato per la protezione delle filiali, il monitoraggio delle modifiche e le funzionalità di rollback durante le applicazioni di correzione automatizzate. 
+ [Java](https://www.java.com/en/) è il linguaggio di programmazione e l'ambiente di sviluppo utilizzati in questo modello. 

**Deposito di codice**

Il codice per questo modello è disponibile in [Easytrieve to Modern Languages Transformation con AWS Transform](https://github.com/aws-samples/sample-mainframe-easytrieve-transform?tab=readme-ov-file#easytrieve-to-modern-languages-transformation-with-aws-transform-custom) Custom on. GitHub

## Best practice
<a name="transform-easytrieve-modern-languages-best-practices"></a>
+ Stabilisci una struttura di progetto standardizzata: crea una struttura a quattro cartelle (codice sorgente, bre-doc, dati di input, dati di output), convalida la completezza e il contenuto del documento prima della trasformazione.
+ Utilizza i file di base per la convalida: utilizza i file di input di base di produzione, esegui il confronto byte per byte con l'output di base, accetta la tolleranza zero per le deviazioni.
+ Utilizza tutti i documenti di riferimento disponibili: per aumentare la precisione della trasformazione, fornisci tutti i documenti di riferimento disponibili, come i requisiti aziendali e le liste di controllo per la codifica.
+ Fornisci input per il miglioramento della qualità: la funzionalità AWS Transform personalizzata estrae automaticamente le informazioni acquisite dalle esecuzioni di trasformazione (feedback degli sviluppatori, problemi di codice) e crea elementi di conoscenza per loro. Dopo ogni trasformazione riuscita, rivedi gli elementi di conoscenza e approva quelli che desideri utilizzare nelle future esecuzioni. Ciò migliora la qualità delle trasformazioni future.

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

### Configurazione AWS Transform personalizzato
<a name="set-up-trn-custom"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Fornisci l'infrastruttura per scopi AWS Transform personalizzati. | Implementa l'infrastruttura pronta per la produzione necessaria per ospitare un ambiente di trasformazione sicuro. Ciò include un'istanza Amazon EC2 privata configurata con gli strumenti necessari, le autorizzazioni IAM e le impostazioni di rete per la conversione del codice Easytrieve. Per effettuare il provisioning dell'ambiente utilizzando l'infrastruttura come codice (IaC), segui le istruzioni di distribuzione nell'archivio [Easytrieve](https://github.com/aws-samples/sample-mainframe-easytrieve-transform) to Modern Languages Transformation with Custom. AWS Transform GitHub  | Sviluppatore di app, amministratore AWS | 
| Prepara i materiali di input per la trasformazione. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | Sviluppatore di app | 

###  Crea una definizione di trasformazione personalizzata
<a name="create-a-custom-transformation-definition"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea una definizione di trasformazione BRE | Segui questi passaggi per creare la definizione di trasformazione personalizzata per BRE (Business Rule Extraction) dal codice sorgente di Easytrieve.<br />1. Vai al repository del codice per questo pattern e copia bre\_transformation\_definition.md dalla cartella documents insieme alla cartella document\_references con la guida alla codifica EZT.<br />2. Carica il contenuto nella AWS Transform CLI, carica in una posizione a tua scelta e annota la posizione del percorso da utilizzare nei passaggi successivi.<br />3. Richiama AWS Transform dalla CLI con il comando atx.<br />4. Fornisci questo prompt nella CLI:<br /> **Crea una trasformazione personalizzata utilizzando il mio file di definizione della trasformazione disponibile su path** <path to content from step \#2 ><br /> AWS Transform crea una nuova definizione di trasformazione personalizzata per la generazione di BRE.<br />5. Rivedi la definizione di trasformazione e apporta le modifiche necessarie. | Sviluppatore di app | 
| Pubblica la definizione di trasformazione BRE | Dopo la revisione e la convalida della definizione di trasformazione BRE, è possibile pubblicarla nel registro AWS Transform personalizzato con un prompt in linguaggio naturale, fornendo un nome di definizione come. Easytrieve-Business-Rule-Extract | Sviluppatore di app | 
| Crea una definizione di trasformazione. | Segui questi passaggi per creare la definizione di trasformazione personalizzata per la trasformazione da EZT a Java con convalida funzionale.[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | Sviluppatore di app | 
| Pubblica la definizione di trasformazione. | Dopo la revisione e la convalida della definizione di trasformazione, è possibile pubblicarla nel registro AWS Transform personalizzato con un prompt in linguaggio naturale, fornendo un nome di definizione come. *Easytrieve-to-Java-Migration* | Sviluppatore di app | 

### Genera un estratto di regole aziendali (BRE)
<a name="generate-a-business-rule-extract-bre"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Esegui il processo di generazione BRE. | Esegui il comando AWS Transform CLI, scegliendo l'opzione non interattiva o interattiva:<br />**Non-interactive esecuzione (completamente autonoma):**<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 />**Esecuzione interattiva (con supervisione umana):**<pre>atx custom def exec -n "Easytrieve-Business-Rule-Extract" -p ~/root/transform-workspace/mainframe-source/source-code</pre><br />Riprendi l'esecuzione interrotta:<pre>atx --resume</pre><br />O<pre>atx --conversation-id <conversation-id>  </pre><br />Sposta il documento BRE generato nella cartella **bre-doc/** da utilizzare come input durante la fase di trasformazione. Easytrieve-to-Java  | Sviluppatore di app | 

### Prepara i dati di base per la convalida.
<a name="prepare-baseline-data-for-validation"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Consulta il riepilogo della convalida della trasformazione. | Prima di eseguire la trasformazione AWS Transform personalizzata, verificate che la `input-data` cartella contenga i file di dati richiesti acquisiti prima dell'esecuzione del processo batch del mainframe. Dopo l'esecuzione del processo batch del mainframe, assicuratevi che la `output-data` cartella acquisisca i file risultanti. Tutti i file sono in Sequential/Text/DB2 formato utilizzando la codifica EBCDIC in base ai requisiti di esecuzione.[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | Sviluppatore di app | 
| Esegui il processo di trasformazione personalizzato. | Esegui il comando AWS Transform CLI, scegliendo l'opzione non interattiva o interattiva:<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 si convalida automaticamente tramite build/test comandi durante l'esecuzione della trasformazione. | Sviluppatore di app | 

### Convalida e distribuisci codice testato
<a name="validate-and-deliver-tested-code"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Consulta il riepilogo della convalida della trasformazione. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | Sviluppatore di app | 
| Accedi ai report di convalida. | Inserisci questi comandi per esaminare gli artefatti di convalida dettagliati:<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> | Sviluppatore di app | 
| Abilita gli elementi di conoscenza per l'apprendimento continuo. | Migliora la precisione delle trasformazioni future promuovendo gli elementi di conoscenza suggeriti nella tua configurazione persistente. Dopo una trasformazione, l'agente memorizza i modelli e le regole di mappatura identificati nella directory della sessione locale. Per rivedere e applicare questi elementi appresi, esegui questi comandi sulla tua istanza 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> | Sviluppatore di app | 

## Risoluzione dei problemi
<a name="transform-easytrieve-modern-languages-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| *Configurazione del percorso di input e output*<br />I file di input non vengono letti o i file di output non vengono scritti correttamente.  | Specificate il percorso completo della directory in cui sono archiviati i file di input e indicate chiaramente la posizione in cui scrivere l'output. Assicurati che siano configurate le autorizzazioni di accesso adeguate per queste directory. <br />Le migliori pratiche includono l'utilizzo di percorsi assoluti anziché percorsi relativi per evitare ambiguità e la verifica che tutti i percorsi specificati esistano con le autorizzazioni appropriate. read/write   | 
| *Ripresa delle esecuzioni interrotte*<br />L'esecuzione è stata interrotta o deve essere continuata dal punto in cui è stata interrotta | Puoi riprendere l'esecuzione dal punto in cui l'avevi interrotta fornendo l'ID della conversazione nel comando CLI.<br />Trova l'ID della conversazione nei registri del tuo precedente tentativo di esecuzione.   | 
| *Risoluzione dei vincoli di memoria*<br />Si verifica un errore di memoria esaurita durante l'esecuzione. | È possibile chiedere AWS Transform di condividere la dimensione corrente della JVM in memoria e quindi aumentare l'allocazione della memoria in base a queste informazioni. Questa regolazione consente di soddisfare requisiti di elaborazione più elevati.<br />Prendi in considerazione la possibilità di suddividere i lavori di grandi dimensioni in batch più piccoli se i vincoli di memoria persistono dopo le regolazioni.  | 
| *Risolvere le discrepanze tra i file di output*<br />I file di output non corrispondono alle aspettative e AWS Transform indicano che non sono possibili ulteriori modifiche. | Fornisci feedback specifici e motivi tecnici che spieghino perché l'uscita corrente non è corretta. Includi documentazione tecnica o commerciale aggiuntiva a supporto delle tue esigenze. Questo contesto dettagliato aiuta a AWS Transform correggere il codice per generare i file di output corretti. [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | 

## Risorse correlate
<a name="transform-easytrieve-modern-languages-resources"></a>
+ [AWS Transform documentazione personalizzata](https://docs.aws.amazon.com/transform/latest/userguide/custom.html)
+ [Generatore di report Easytrieve 11.6](https://techdocs.broadcom.com/us/en/ca-mainframe-software/devops/ca-easytrieve-report-generator/11-6/getting-started.html)