Cycli. Excel-bestanden importeren
Cycli gebruiken in het bedrijfsproces. Gegevens lezen uit Excel-bestanden.
Om het verdere proces te begrijpen, is het nodig een beetje in de theorie te duiken en het principe van de cycli te begrijpen. Voorheen gingen al onze processen alleen vooruit. Ze konden een specifieke fork kiezen (op de If-Else en Switch blokken), maar we wisten zeker dat elk blok slechts eenmaal zou worden uitgevoerd; er zou geen terugkeer zijn.
Cycli
Cycli bieden de mogelijkheid om een bepaalde sectie meerdere keren te herhalen. Het proces wordt zo gemaakt dat de geselecteerde reeks blokken steeds opnieuw wordt uitgevoerd. Totdat aan de voorwaarde voor het beëindigen van de lus is voldaan.
AppMaster geeft u de mogelijkheid om drie verschillende soorten cycli te gebruiken. Het principe van hun werk is absoluut hetzelfde. De voorwaarde voor het beëindigen van de lus is het enige dat ze van elkaar onderscheidt.
- Loop. De eenvoudigste van alle cycli. De parameter Times (Integer) parameter stelt een vaste waarde in voor het aantal keren dat de gegeven lus moet worden uitgevoerd.
- While loop. Een lus die wordt uitgevoerd totdat aan een bepaalde voorwaarde is voldaan. Deze voorwaarde wordt gespecificeerd in de Condition (Boolean) parameter. Aan het begin van elke lus wordt de waarde Condition gecontroleerd; is deze waarde True, dan wordt de lus uitgevoerd; is deze waarde False, dan stopt de lus. De parameter Limit (Integer) parameter bepaalt de limiet van het aantal herhalingen van de lus om ervoor te zorgen dat de lus niet eindeloos doorloopt. Wanneer deze wordt bereikt, wordt de lus beëindigd, ongeacht de waarde van Condition.
- For each loop. Lus ontworpen om met matrices te werken. Hij neemt een matrix als invoer en laat toe een bepaalde bewerking uit te voeren op elk matrixelement. Wordt zo vaak uitgevoerd als er elementen in de matrix zijn.
Elke cyclus heeft twee uitvoerstromen.
- Loop Body. Het lichaam van de lus zelf. Dat proces, dat het nodige aantal keren wordt herhaald.
- Completed. De thread die wordt uitgevoerd wanneer de lus eindigt. Specificeert wat er vervolgens moet gebeuren nadat de lus is beëindigd. Overigens kan elke lus op commando worden voltooid zonder te wachten tot aan de beginvoorwaarden is voldaan. Om dit te doen hoef je alleen maar het Break Loop blok op de juiste plaats. Het zal onmiddellijk de stroom overbrengen naar Completed.
Read XLSX File
Voor de analyse van het xlsx-bestand gebruiken we het Read XLSX File blok. Het werkingsprincipe ervan is bijna gelijk aan dat van het For each loop blok. Het stelt het tabelbestand voor als een array van strings. En elke rij, op zijn beurt, is ook een array, maar reeds een array van kolommen van de gegeven rij.
Het xlsx-bestand zelf heeft een soortgelijke vorm. De eerste kolom bevat de naam van de sectie, en de tweede bevat de informatie die deze sectie bevat. Tegelijkertijd weten we niet van tevoren op welke regel de informatie staat; die kan op elke willekeurige plaats staan. In dit voorbeeld staat de biografie op de tweede regel, en de login op de achtste, maar de regels en de volgorde waarin ze worden geschreven kunnen willekeurig zijn.
Het bedrijfsproces begint met het ontvangen van een bestand als invoerparameter. Merk op dat het bestandstype, dat wil zeggen de bestands-ID, wordt doorgegeven en niet het hele bestand. We geven hetzelfde bestand door aan het Read XLSX File blok.
Each row, is in dit geval een analogon van Loop Body. Dit betekent dat de lus zo vaak wordt uitgevoerd als er rijen zijn in het xlsx-bestand. Tegelijkertijd krijgen we bij elke cyclus informatie over welke rij nu wordt verwerkt (Row number), alsmede welke kolommen zich in deze rij bevinden (Row columns).
Onze taak is de eerste cel van elke rij te controleren. We verwachten een cel te vinden waarin "Login" of "Bio" staat. Zo begrijpen we dat we een kolom met de nodige informatie hebben gevonden.
Hiervoor hebben we een Array Element blok met een index van 0. Zo krijgen we de inhoud van de eerste cel van de string. Daarna gebruiken we het Switch blok om de gewenste overeenkomst te vinden (Login, Bio).
Wordt die niet gevonden, dan gaat de lus naar de volgende iteratie, waarbij de volgende rij wordt gecontroleerd. Indien gevonden, dan begrijpen we dat de tweede cel van deze rij de informatie moet bevatten die we nodig hebben en gebruiken we het Array Element blok opnieuw (maar met index 1) om deze informatie te verkrijgen.
Het rest alleen nog deze informatie op te slaan. Immers, doet u dit niet meteen, dan gaat de cyclus gewoon door, en gaan de ontvangen gegevens verloren.
Variabelen
De beste oplossing in deze situatie is het gebruik van variabelen. Hun betekenis ligt in het feit dat bepaalde waarden niet onmiddellijk van het ene blok naar het andere worden overgedragen, maar in het geheugen worden opgeslagen en indien nodig worden gebruikt.
Hier zijn twee blokken voor:
- Variable blok. Het kan een willekeurig getal, een string of zelfs een array van objecten zijn. Het is belangrijk te begrijpen dat dit blok zelf niets doet; het heeft geen invoerparameters. Het dient alleen om aan te kondigen dat een plaats in het geheugen is toegewezen voor het schrijven van een bepaalde waarde, met de mogelijkheid er later weer naar te verwijzen en deze waarde te achterhalen.
- Het blok Set Variable blok is bedoeld om een nieuwe waarde naar een variabele te schrijven.
In ons geval definiëren we twee variabelen van het type String en schrijven de gevonden waarden daarin, op de ene plaats Login, en op de tweede Bio. Aan het eind van de lus hoeven we alleen de waarde van deze variabelen door te geven aan het eindblok.
Nu is het tijd om een endpoint aan te maken voor het voltooide bedrijfsproces en het daarmee beschikbaar te maken voor gebruik op de front-end van de webapplicatie.
Eindresultaat
Als resultaat zou het bedrijfsproces dit moeten zijn:
Er zijn afwerkingen om de creatie van de applicatie te voltooien. Laten we teruggaan naar het frontend bedrijfsproces en het afmaken. We moeten:
- Het xlsx-bestandsmodel doorgeven voor het opslaan op de server.
- Het resultaat uitbreiden en de bestands-ID verkrijgen.
- Geef deze ID door aan het eerder gemaakte eindpunt POST /xlsx-data/
- De ontvangen gegevens gebruiken om in de juiste velden weer te geven (en ook om de parameter Disable te resetten, waardoor de mogelijkheid tot bewerking wordt geopend).
Als alles correct is gedaan, zou de uiteindelijke versie er zo uit moeten zien na het laden van informatie uit bestanden.