Mi chiedevo quale architettura / pattern scegliere per il seguente problema diviso in tre passaggi:
- Importa la descrizione TestScript da file (ad esempio .xls, .txt)
- TestScript descrittivo
- Esporta descrizione con risultati elaborati come .xml
Ecco cosa ho ottenuto finora:
- Importatore che legge in xls e crea una struttura gerarchica di oggetti
- Parser che crea un Abstract Syntax Tree (If, then, else, end, command) dalla struttura dell'oggetto
- Un processore (VisitorPattern) di AST. Questo processore istanzia l'implementazione del comando, esegue il comando, raccoglie i risultati e controlla il flusso (se, allora, altrimenti)
Attualmente la struttura dell'oggetto importata contiene già un campo per il risultato e può essere serializzato come xml. Ma a mio parere non è molto elegante avere un campo risultato negli oggetti di input.
La ragione principale per cui non mi piace è che non riesco a riutilizzare la struttura dell'oggetto importata per elaborarla più volte. Vorrei dividere l'intero componente anche in tre parti:
- Importa, che crea una struttura gerarchica dell'oggetto che descrive il TestScript (contenente un filepumper e un preprocessore)
- Process, che crea un AST e lo elabora
- Esporta, che prende i risultati e le descrizioni e li scrive
Ecco alcune altre condizioni:
- Non tutti i nodi AST rappresentano un oggetto nella struttura dell'oggetto (descrizione)
- Ma ogni oggetto risultato è connesso a un oggetto descrizione
- Descrizione e risultati sono gerarchici