Dotyczy wersji 2020.1.3.x autor: Konrad Wojtycza
Wprowadzenie
Częstą rozterką napotykaną podczas pracy z danymi w WEBCON BPS jest wybór sposobu dostępu do danych zamieszczonych np. w zewnętrznej bazie danych. W studio BPS dostęp i zawężenie wyświetlanych danych może zostać zrealizowane poprzez:
- Zdefiniowanie połączenia do danych i zapytania SQL,
- Utworzenie źródła danych i skorzystanie z filtrów,
W niniejszym artykule zostaną przybliżone obydwa podejścia do korzystania z danych w WEBCON BPS, różnice pomiędzy nimi a także, niebezpieczeństwa związane z konfiguracją.
Przykładowe dane i testowy obieg
W artykule skorzystano z danych udostępnionych przez EMSI, Economic Modeling Specialists Inc., zawierających informacje na temat zmiany struktury zatrudnienia w miastach Wielkiej Brytanii w latach 2011 i 2014, z podziałem na branże.
Wybrany arkusz danych, zawierający ponad 1300 rekordów, został zaimportowany do bazy danych UK_JOB_CHANGE (utworzonej i skonfigurowanej na potrzeby artykułu), do której dostęp posiada testowa instancja WEBCON BPS.
W testowym obiegu skonfigurowane zostały (Rys. 1):
- Data table – connection – atrybut typu Tabela danych, ze skonfigurowanym bezpośrednim połączeniem do bazy danych zawierającej przykładowe dane. Zapytanie SQL zdefiniowane na atrybucie zwraca wszystkie dane z tabeli EMSI_JobChange_UK.
- Data table – detailed query – atrybut typu Tabela danych ze skonfigurowanym bezpośrednim połączeniem do bazy danych. Zapytanie SQL zwraca dane wybrane przez szczegółowe zapytanie.
- Data table – data source – atrybut typu Tabela danych, ze skonfigurowanym połączeniem do źródła danych. Dane wyświetlane przez tabelę, ograniczone są poprzez użycie filtru ustawionego na tym atrybucie ze szczegółowym filtrem danych.
Rys. 1 Testowy obieg i atrybuty
Konfiguracja
W niniejszej sekcji opisana została konfiguracja atrybutów typu Tabela danych z wymienionymi wcześniej sposobami konfiguracji dostępu do danych.
- Połączenie do bazy danych – ogólne zapytanie SQL
W przypadku bezpośredniego połączenia do bazy danych (Rys. 2), w polu „Data source” należy wybrać połączenie do bazy danych z zakładki „Connections” (połączenie powinno zostać uprzednio skonfigurowane w zakładce menu „Data sources”). W prezentowanym przykładzie wybrano połączenie o nazwie WDR04. W polu „SQL query” należy zdefiniować zapytanie, które ma zostać skierowane do bazy danych. W prezentowanym przypadku zapytanie zwróci wszystkie dane znajdujące się w tabeli EMSI_JobChange_UK, oznacza to, że przy ładowaniu formularza za każdym razem pobierana będzie zawartość całej tabeli danych.
Rys. 2 Konfiguracja tabeli danych z bezpośrednim połączeniem do bazy danych
W przypadku zapytań zwracających bardzo duże ilości danych z dużym prawdopodobieństwem napotkamy problemy wydajnościowe podczas ładowania formularza i przeglądania go. Możliwym rozwiązaniem tego problemu jest włączenie opcji stronicowania na atrybucie typu Tabela danych. Aby aktywować stronicowanie, w Zaawansowanej konfiguracji atrybutu należy zaznaczyć checkbox „Stronicowanie” oraz ustawić liczbę wyświetlanych na pojedynczej stronie wierszy (domyślnie 10) (Rys. 3).
Rys. 3 Włączenie opcji Stronicowania w konfiguracji zaawansowanej atrybutu typu Tabela danych
Widok formularza z Tabel danych z włączonym stronicowaniem, widoczny jest na Rys. 4.
Rys. 4 Widok formularza z atrybutem typu Tabela danych z włączonym stronicowaniem
Mimo zaprezentowanego rozwiązania, nie zaleca się konfigurowania w WEBCON BPS atrybutów z ogólnymi zapytaniami do bazy danych. Dotyczy to dużych, ale także relatywnie małych tabel z danymi, ponieważ należy pamiętać, że każda tabela może kiedyś rozrosnąć się do rozmiarów powodujących problemy z wydajnością podczas pobierania zawartości na formularz.
- Połączenie do bazy danych – zapytanie SQL z warunkiem
Konfiguracja w obecnym przykładzie (Rys. 5) różni się od przedstawionej na Rys. 2 zawężeniem zapytania zdefiniowanego w polu „SQL query” poprzez dopisanie warunku WHERE. Z tabeli EMSI_JobChange_UK pobrane zostaną jedynie wiersze dla których wartość Industry = Education.
Rys. 5 Konfiguracja tabeli danych z bezpośrednim połaczeniem do bazy danych i zawężonym zapytaniem
Prezentacja danych wybranych przez powyższe zapytanie SQL na formularzu przedstawiona została na Rys. 6.
Rys. 6 Prezentacja danych wybranych przez zapytanie widoczne na Rys. 4 na formularzu
Z punktu widzenia wydajności ładowania formularza bardzo korzystne jest zawężanie ilości danych, które są wybierane poprzez zapytanie SQL. Zawężenie ilości pobieranych danych można zrealizować również poprzez użycie źródła danych z filtrem z Rys. 7.
Należy jednak pamiętać, że w przypadku konfiguracji połączenia do bazy danych i zdefiniowania zapytania (Rys. 5), możliwość edycji zapytania będzie możliwa jedynie na atrybucie należącym do konkretnej aplikacji, w odróżnieniu od rozwiązania wykorzystującego źródło danych MSSQL (Rys. 8), które będzie ogólnie dostępne w zakładce Data sources > MSSQL database. Dodatkowo, z biznesowego punktu widzenia, w razie potrzeby modyfikacji zakresu danych zwracanych przez zapytanie, osoba edytująca zapytanie SQL powinna znać składnię języka Structured Query Language.
Rys. 7 Źródło danych z zawężonym zapytaniem do bazy danych
Źródło danych z filtrem
Skonfigurowanie źródła danych MSSQL możliwe jest w zakładce Data sources > MSSQL database. Podczas konfiguracji źródła danych należy ustawić wykorzystywane połączenie do bazy danych pole „Connection” oraz zapytanie SQL w polu „SQL query”.
Rys. 8 Źródło danych UK Jobs Change z zapytaniem zwracającym wszystkie rekordy z tabeli EMSI_JobChange_UK
Na Rys. 8 zapytanie zdefiniowane w polu „SQL query” będzie zwracać wszystkie rekordy z tabeli EMSI_JobChange_UK. W przypadku korzystania ze źródła danych, ostatecznie wyświetlane rekordy mogą zostać zawężone poprzez użycie filtru (Rys. 9).
Z punktu widzenia wydajności formularza, nie jest to optymalne rozwiązanie, ponieważ podczas ładowania formularza, najpierw zostaną pobrane wszystkie rekordy z tabeli EMSI_JobChange_UK, które dopiero w kolejnym kroku zostaną przefiltrowane, a wynik filtrowania zostanie wyświetlony na formularzu. Natomiast z biznesowego punktu widzenia, podczas korzystania z filtrów nie jest konieczna znajomość składni SQL.
Rys. 9 Konfiguracja tabeli danych i filtr danych działający na źródle danych UK Jobs Change
Z punktu widzenia prezentowanych danych, zastosowanie filtru z Rys. 9 zwróci takie same dane jak użycie zapytania z Rys. 7.
Rys. 10 Prezentacja danych zawężonych przez filtr widoczny na Rys. 8 na formularzu
Na Rys. 10 zaprezentowany został widok formularza z tabelą danych z rekordami wybranymi poprzez filtr danych.
Podsumowanie
Sposób pobierania danych | Wybór danych | Zawężanie danych | Wskazówki/ ograniczenia | |
Bezpośrednie połączenie | Wszystkie dane zwrócone przez zapytanie SQL | Na atrybucie, Przy użyciu zapytania SQL | Na atrybucie, Przy użyciu zapytania SQL | Unikanie zapytań zwracających szeroki zakres danych, konieczna znajomość składni SQL |
Źródło danych | Dane zwrócone przez zapytanie SQL | Na źródle danych – przy użyciu zapytania SQL, na atrybucie – filtr danych | Na źródle danych – przy użyciu zapytania SQL, na atrybucie – filtr danych | Dane zwrócone przez źródło danych mogą zostać przefiltrowane przez filtr danych, znajomość składni SQL na poziomie filtru nie jest konieczna. |