Videate "completamente compilabili"
copia linkIntroduzione
Nell'articolo precedente abbiamo visto come utilizzare le Subject Area per compilare parzialmente un progetto complesso ed è stata descritta la procedura che permette di aggiungere una videata ad una Subject Area: tale operazione ha l'effetto di rendere la videata "completamente compilabile" qualora l'applicazione venga compilata quando la Subject Area è stata attivata.
Per videata "completamente compilabile" si intende una videata che funzioni esattamente come avrebbe funzionato se l'applicazione fosse stata compilata interamente e quindi che tutti i percorsi di codice che la videata potrebbe seguire siano compilati interamente. Questo è il motivo per cui Instant Developer deve cercare e aggiungere alla Subject Area tutti gli oggetti a cui fanno riferimento tutte le righe di codice contenute in una qualsiasi procedura della videata, in maniera recursiva.
In questo articolo vediamo come Instant Developer calcola quali oggetti sono necessari per garantire la completa compilabilità di una videata.
Come Instant Developer sceglie gli oggetti da aggiungere
Instant Developer garantisce la completa compilabilità di una videata utilizzando la seguente procedura iterativa:
- Data la videata di partenza vengono cercati tutti i "riferimenti esterni" alla videata stessa. Per esempio si controlla se le tabelle o classi utilizzate in tutte le query dei pannelli, alberi e grafici sono già incluse nella Subject Area. Poi si controllano tutte le procedure e gli eventi gestiti nella videata e si verifica se nel codice sono stati utilizzati oggetti esterni alla videata stessa: videate di lookup, altre videate, tabelle in query, classi come tipo di dato in variabili o parametri. Tutti gli oggetti non ancora presenti nella Subject Area vengono aggiunti. In questo modo la videata da cui siamo partiti sarà interamente compilata.
- Poi per ogni nuova videata e classe trovata si ripete il calcolo descritto sopra. Questa volta, però, le videate e classi utilizzate dalla videata principale non vengono analizzate completamente. Qualora questo venisse fatto, infatti, rischieremmo di includere sempre tutte le videate e le classi del progetto anche se abbiamo chiesto ad Instant Developer di compilare solo una determinata videata. I nuovi oggetti vengono analizzati in maniera limitata: non vengono analizzate necessariamente tutte le procedure della videata come visto sopra. Vengono analizzate solo le righe di codice contenute in tutti gli eventi gestiti dalla videata e solo le procedure e funzioni chiamate dalla videata di partenza. In questo modo se la seconda videata (utilizzata dalla videata di partenza) contiene procedure che vengono eseguite quando tale videata viene aperta da altre videate, tali procedure non vengono analizzate. Inoltre non vengono considerate le variabili globali della nuova videata o classe a meno che queste non vengano utilizzate direttamente negli eventi o nelle procedure analizzate.
- Poi vengono analizzate tutte le procedure legate ai timers globali di applicazione e tutte le procedure legate ai timers contenuti nella videata. Questo perché le procedure legate ai timers vengono attivate allo scadere degli stessi e la videata di partenza si deve comportare allo stesso modo sia che l'applicazione venga compilata parzialmente sia che l'applicazione venga compilata interamente.
- Infine vengono analizzati tutti gli eventi gestiti nell'applicazione client. Questo perché dobbiamo garantire che l'applicazione venga correttamente inizializzata (evento di Initialize) e che l'eventuale fase di login all'applicazione venga gestita (eventi di On Login e After Login).

Inclusione della videata Categorie in una Subject Area
Nell'immagine precedente viene mostrato cosa succede quando si aggiunge la videata Categorie ad una Subject Area. Questa viene analizzata e le tabelle utilizzate nelle varie query vengono aggiunte alla Subject Area (Prodotti e Fornitori). Inoltre, dato che una delle query del pannello è una query Document Oriented, anche la classe Categorie viene inserita nella Subject Area. Poi Instant Developer analizza il codice e trova che la procedura Apri Prodotti richiede la lookup dei prodotti. Inoltre scopre che la lookup Fornitori è attaccata ad un campo di pannello della videata Categorie quindi include anche la videata Fornitori. Ora Instant Developer analizza le nuove videate inserite (Prodotti e Fornitori) ma questa volta analizza solo il codice contenuto negli eventi e nelle procedure chiamate dalla videata principale. La videata fornitori contiene sì la procedura Apri Utenti che richiederebbe la videata Utenti. Ma poiché la procedura Apri Utenti non viene direttamente chiamata da nessuna riga di codice della videata Categorie tale videata non viene inclusa. Al termine di questa procedura la videata Categorie sarà completamente compilabile e funzionerà allo stesso modo sia se il progetto viene compilato parzialmente sia se il progetto viene compilato interamente.
Ultima modifica: 23/03/2021 / Validità: da 6.7.2850