Crash Course 101
10 moduły
5 Tygodnie

Cykle. Import plików Excel

Kliknij, aby skopiować

Wykorzystanie cykli w procesie biznesowym. Odczyt danych z plików Excela.


Aby zrozumieć dalszy przebieg procesu, należy nieco zagłębić się w teorię i zrozumieć zasadę działania cykli. Wcześniej wszystkie nasze procesy szły tylko do przodu. Mogły one wybrać konkretne widełki (na If-Else i Switch blokach), ale wiedzieliśmy na pewno, że każdy blok zostanie wykonany tylko raz; nie będzie powrotu.

Cykle

Cykle dają możliwość wielokrotnego powtarzania danej sekcji. Proces jest tworzony w taki sposób, że wybrana sekwencja bloków jest wykonywana w kółko. Do momentu spełnienia warunku zakończenia pętli.

AppMaster daje możliwość korzystania z trzech różnych rodzajów cykli. Zasada ich działania jest absolutnie taka sama. Warunek zakończenia pętli jest jedyną rzeczą, która je od siebie odróżnia.

  • Loop. Najprostszy ze wszystkich cykli. Jego Times (Integer) parametr ustawia stałą wartość określającą ile razy dana pętla ma się wykonać.
  • While loop. Pętla, która będzie wykonywana do momentu spełnienia określonego warunku. Warunek ten jest określony w Condition (Boolean) parametrze. Na początku każdej pętli sprawdzana jest wartość Condition; jeśli jest to True, to pętla jest wykonywana; jeśli jest to False, to pętla się zatrzymuje. Parametr Limit (Integer) parametr określa limit liczby powtórzeń pętli, aby zapewnić, że pętla nie będzie działać wiecznie. Gdy zostanie osiągnięty, pętla zakończy się, niezależnie od wartości Condition.
  • For each loop. Pętla zaprojektowana do pracy z tablicami. Przyjmuje tablicę jako wejście i pozwala wykonać pewną operację na każdym elemencie tablicy. Wykonuje się tyle razy, ile jest elementów w tablicy.

Każdy cykl posiada dwa strumienie wyjściowe.

  • Loop Body. Samo ciało pętli. Ten proces, który zostanie powtórzony odpowiednią ilość razy.
  • Completed. Wątek, który zostanie uruchomiony po zakończeniu pętli. Określa, co należy zrobić dalej po zakończeniu pętli. Przy okazji, każdy cykl można zakończyć na polecenie, nie czekając na spełnienie warunków początkowych. Aby to zrobić, wystarczy użyć bloku Break Loop w odpowiednim miejscu. Spowoduje on natychmiastowe przeniesienie strumienia na stronę Completed.

Read XLSX File

Do analizy pliku xlsx użyjemy bloku Read XLSX File blok. Jego zasada działania jest niemal podobna do For each loop blok. Reprezentuje on plik tabeli jako tablicę ciągów znaków. A każdy wiersz z kolei jest również tablicą, ale już tablicą kolumn danego wiersza.


Sam plik xlsx przedstawiony jest w podobnej formie. W pierwszej kolumnie znajduje się nazwa sekcji, a w drugiej informacje, które ta sekcja zawiera. Jednocześnie z góry nie znamy wiersza, w którym dana informacja jest zapisana; może ona pojawić się w dowolnym, dowolnym miejscu. W tym przykładzie biografia jest podana w drugim wierszu, a login w ósmym, ale wiersze i kolejność ich pisania mogą być dowolne.

Proces biznesowy rozpoczyna się od otrzymania pliku jako parametru wejściowego. Należy pamiętać, że przekazywany jest typ danych pliku, czyli identyfikator pliku, a nie cały plik. Ten sam plik przekazujemy do Read XLSX File blok.


Each row, w tym przypadku jest to analog Loop Body. Oznacza to, że pętla zostanie wykonana tyle razy, ile jest wierszy w pliku xlsx. Jednocześnie w każdym cyklu otrzymujemy informację o tym, który wiersz jest teraz przetwarzany (Row number), a także jakie kolumny znajdują się w tym wierszu (Row columns).

Naszym zadaniem jest sprawdzenie pierwszej komórki każdego wiersza. Oczekujemy, że znajdziemy komórkę z napisem "Login" lub "Bio". W ten sposób zrozumiemy, że znaleźliśmy kolumnę z niezbędnymi informacjami.

Aby to zrobić, potrzebujemy Array Element blok o indeksie 0. W ten sposób otrzymujemy zawartość pierwszej komórki ciągu. Następnie za pomocą Switch aby znaleźć pożądane dopasowanie (Login, Bio).

Jeśli nie znajdziemy takiego dopasowania, to pętla przechodzi do kolejnej iteracji, sprawdzając następny wiersz. Jeśli zostanie znaleziony, to rozumiemy, że druga komórka tego wiersza powinna zawierać potrzebne nam informacje i używamy Array Element ponownie (ale z indeksem 1), aby uzyskać tę informację.

Pozostaje tylko zapisać te informacje. W końcu, jeśli nie zrobisz tego od razu, to cykl po prostu pójdzie dalej, a otrzymane dane zostaną utracone.

Zmienne

Najlepszym rozwiązaniem w tej sytuacji byłoby użycie zmiennych. Ich znaczenie polega na tym, że pewne wartości nie są przekazywane natychmiast z jednego bloku do drugiego, ale są przechowywane w pamięci i używane w razie potrzeby.

Do tego celu służą dwa bloki:

  • Variable blok. Może to być dowolna liczba, ciąg znaków, a nawet tablica obiektów. Ważne jest, aby zrozumieć, że ten blok sam w sobie nic nie robi; nie ma żadnych parametrów wejściowych. Służy on jedynie do oznajmienia faktu, że w pamięci przydzielone jest miejsce na zapis jakiejś wartości, z możliwością późniejszego ponownego odwołania się do niego i poznania tej wartości.
  • Blok Set Variable służy do zapisania nowej wartości do zmiennej.

W naszym przypadku zdefiniujemy dwie zmienne typu String i wpiszemy do nich znalezione wartości, w jednym miejscu Login, a w drugim Bio. Na końcu pętli wystarczy, że przekażemy wartość z tych zmiennych do bloku końcowego.


Teraz czas na stworzenie punktu końcowego dla gotowego procesu biznesowego i tym samym udostępnienie go do wykorzystania na front-endzie aplikacji internetowej.


Wynik końcowy

W efekcie proces biznesowy powinien wyglądać tak:


Pozostały prace wykończeniowe, aby zakończyć tworzenie aplikacji. Wróćmy do frontendowego procesu biznesowego i zakończmy go. Potrzebujemy:

  • Przekazać model pliku xlsx do zapisania na serwer.
  • Rozwinąć wynik i uzyskać identyfikator pliku.
  • Przekazać ten identyfikator do wcześniej utworzonego punktu końcowego POST /xlsx-data/
  • Wykorzystać otrzymane dane do wyświetlenia w odpowiednich polach (a także do zresetowania parametru Disable, otwierając możliwość edycji).

Jeśli wszystko zostało wykonane poprawnie, to po wczytaniu informacji z plików ostateczna wersja powinna wyglądać tak.

Was this article helpful?
Nadal szukasz odpowiedzi?