Cicli. Importazione di file Excel
Utilizzo dei cicli nei processi aziendali. Lettura dei dati da file Excel.
Per comprendere il processo successivo, è necessario fare una piccola digressione nella teoria e capire il principio dei cicli. In precedenza, tutti i processi andavano solo in avanti. Potevano scegliere una forcella specifica (sulla If-Else e Switch ma sapevamo con certezza che ogni blocco sarebbe stato eseguito una sola volta; non sarebbe stato possibile tornare indietro.
Cicli
I cicli consentono di ripetere più volte una particolare sezione. Il processo viene creato in modo che la sequenza di blocchi selezionata venga eseguita più volte. Fino a quando non viene soddisfatta la condizione di terminazione del ciclo.
AppMaster offre la possibilità di utilizzare tre diversi tipi di cicli. Il principio di funzionamento è assolutamente lo stesso. La condizione di terminazione del ciclo è l'unica cosa che li distingue l'uno dall'altro.
- Loop. Il più semplice di tutti i cicli. Il suo parametro Times (Integer) imposta un valore fisso per il numero di volte in cui il ciclo dato deve essere eseguito.
- While loop. Un ciclo che viene eseguito finché non viene soddisfatta una determinata condizione. Questa condizione è specificata nel parametro Condition (Boolean) . All'inizio di ogni ciclo, viene controllato il valore Condition; se è True, il ciclo viene eseguito; se è False, il ciclo si ferma. Il parametro Limit (Integer) stabilisce il limite del numero di ripetizioni del ciclo, per garantire che il ciclo non venga eseguito all'infinito. Quando viene raggiunto, il ciclo termina, indipendentemente dal valore di Condition.
- For each loop. Loop progettato per lavorare con gli array. Prende in input un array e consente di eseguire una determinata operazione su ciascun elemento dell'array. Viene eseguito tante volte quanti sono gli elementi dell'array.
Ogni ciclo ha due flussi di uscita.
- Loop Body. Il corpo del ciclo stesso. Il processo che verrà ripetuto il numero di volte necessario.
- Completed. Il thread che verrà eseguito al termine del ciclo. Specifica cosa fare dopo la fine del ciclo. A proposito, qualsiasi ciclo può essere completato a comando, senza attendere che le condizioni iniziali siano soddisfatte. Per farlo, basta usare il blocco Break Loop nel posto giusto. Esso trasferirà immediatamente il flusso a Completed.
Read XLSX File
Per analizzare il file xlsx, utilizzeremo il blocco Read XLSX File . Il suo principio di funzionamento è quasi simile a quello del For each loop blocco. Rappresenta il file di tabelle come un array di stringhe. E ogni riga, a sua volta, è un array, ma già un array di colonne della riga in questione.
Il file xlsx stesso si presenta in una forma simile. La prima colonna contiene il nome della sezione e la seconda contiene le informazioni contenute nella sezione. Allo stesso tempo, non conosciamo in anticipo la riga in cui sono scritte le informazioni; esse possono apparire in qualsiasi punto arbitrario. In questo esempio, la biografia è indicata sulla seconda riga e il login sull'ottava, ma le righe e l'ordine in cui sono scritte possono essere qualsiasi.
Il processo aziendale inizia ricevendo un file come parametro di ingresso. Si noti che è il tipo di dati del file, cioè l'ID del file, a essere trasmesso e non l'intero file. Lo stesso file viene passato al blocco Read XLSX File blocco.
Each row, in questo caso, è un analogo di Loop Body. Ciò significa che il ciclo verrà eseguito tante volte quante sono le righe del file xlsx. Allo stesso tempo, a ogni ciclo, riceviamo informazioni su quale riga viene elaborata ora (Row number) e quali colonne sono presenti in questa riga (Row columns).
Il nostro compito è controllare la prima cella di ogni riga. Ci aspettiamo di trovare una cella con la scritta "Login" o "Bio". In questo modo, capiremo di aver trovato una colonna con le informazioni necessarie.
Per fare ciò, abbiamo bisogno di un blocco Array Element con indice 0. In questo modo otteniamo il contenuto della prima cella della stringa. Dopodiché, utilizziamo il blocco Switch per trovare la corrispondenza desiderata (Login, Bio).
Se non viene trovata alcuna corrispondenza, il ciclo passa all'iterazione successiva, controllando la riga successiva. Se viene trovata, allora capiamo che la seconda cella di questa riga dovrebbe contenere le informazioni di cui abbiamo bisogno e utilizziamo nuovamente il blocco Array Element (ma con indice 1) per ottenere queste informazioni.
Non resta che salvare queste informazioni. Dopotutto, se non lo si fa subito, il ciclo continuerà e i dati ricevuti andranno persi.
Variabili
La soluzione migliore in questa situazione è l'uso delle variabili. Il loro significato sta nel fatto che alcuni valori non vengono trasferiti immediatamente da un blocco all'altro, ma vengono memorizzati e utilizzati all'occorrenza.
Esistono due blocchi per questo scopo:
- Variable blocco. Può essere un numero, una stringa o anche un array di oggetti. È importante capire che questo blocco in sé non fa nulla, non ha parametri di ingresso. Serve solo ad annunciare il fatto che è stato allocato un posto in memoria per la scrittura di un valore, con la possibilità di farvi riferimento in seguito per scoprire questo valore.
- Il blocco Set Variable è progettato per scrivere un nuovo valore in una variabile.
Nel nostro caso, definiremo due variabili di tipo String e scriveremo in esse i valori trovati, in un posto Login e nel secondo Bio. Alla fine del ciclo, dobbiamo solo passare il valore di queste variabili al blocco finale.
Ora è il momento di creare un endpoint per il processo aziendale finito e quindi renderlo disponibile per l'uso sul front-end dell'applicazione web.
Risultato finale
Il risultato del processo aziendale dovrebbe essere questo:
Ci sono gli ultimi ritocchi per completare la creazione dell'applicazione. Torniamo al processo aziendale front-end e finiamolo. Abbiamo bisogno di:
- Passare il modello di file xlsx per il salvataggio sul server.
- Espandere il risultato e ottenere l'ID del file.
- Passare questo ID all'endpoint creato in precedenza POST /xlsx-data/
- Utilizzare i dati ricevuti per visualizzarli nei campi appropriati (e anche per reimpostare il parametro Disable, aprendo la possibilità di modifica).
Se tutto è stato fatto correttamente, la versione finale dovrebbe apparire come questa dopo il caricamento delle informazioni dai file.