Przejdź do treści

Wyszukiwarka asortymentów GQS

Założenia

Główną funkcjonalnością wyszukiwarki Global Quick Search jest szybkie wyszukiwanie pożądanych obiektów biznesowych w systemie. Wyszukiwanie GQS korzysta z indeksowania, które polega na skanowaniu utworzonych indeksów w bazie, w celu znalezienia odpowiednich wyników. Indeksowanie ma na celu przyspieszenie procesu wyszukiwania danych poprzez utworzenie specjalnej struktury danych, która zawiera kluczowe informacje dla wyszukiwania. Indeks przechowuje informacje o tym, gdzie znajdują się dane w bazie danych, co pozwala na szybsze odnalezienie odpowiednich wyników. Algorytmy te są zoptymalizowane tak, aby przyspieszyć proces wyszukiwania, eliminując potrzebę przeglądania wszystkich rekordów w bazie danych. Indeksowanie jest procesem dynamicznym, który musi być aktualizowany wraz z wprowadzaniem, modyfikacją lub usunięciem danych towarowych. Kiedy nowe dane są dodawane do bazy lub istniejące dane są modyfikowane, indeks musi być odpowiednio zaktualizowany, aby odzwierciedlić te zmiany. Wyszukiwanie jest wykonywane równocześnie na wielu parametrach, takich jak nazwa, opis, kody itp., na podstawie nadanych im rang. Mechanizm wyszukiwania zaczyna działać od razu po pierwszej indeksacji danych, po przetworzeniu zdarzenia EDA. Indeksowanie w GQS zostało szczegółowo opisane w instrukcji Global Quick Search (GQS). Reguły indeksacji mogą być zakładane przez kod indeksujący (przez dewelopera) lub ręcznie, z poziomu aplikacji. Każda reguła może zostać usunięta lub zmodyfikowana. Jeśli reguła została założona automatycznie poprzez kod indeksujący, to także można ją zmodyfikować ręcznie w aplikacji. Zmiany reguł indeksowania wymagają znajomości rozwiązań w kodzie źródłowym (np. znajomość nazw tabel bazodanowych), dlatego nie powinny być samodzielnie modyfikowane przez administratora.

W ramach konfiguracji wyszukiwarki towarów można zdefiniować:

Wszelkie zmiany w indeksach (zarówno na towarach jak i konfiguracji) powinny być na bieżąco monitorowane w zdarzeniach EDA.

Uprawnienia

Wyszukiwarka obiektów GQS jest dostępna dla każdego operatora, który ma założone konto w aplikacji. Widoczność poszczególnych typów obiektów jest konfigurowalna przez reguły indeksujące, które je opisują. Jeśli w regule obiekty zostaną oznaczone jako publiczne, to będą mogły być wyszukane przez każdego operatora. Poszczególne rodzaje wyszukiwanych obiektów mogą zostać jednak ograniczone dla konkretnej grupy lub grup operatorów. Przykładowo, jeśli w regule opisującej obiekt Klient zostanie ograniczony do grupy Ceny zakupu, to klienci będą wyszukiwani tylko przez operatorów, którzy należą do wskazanej grupy. Operator może zostać dodany do konkretnej grupy operatorów z poziomu ustawień operatora (w zakładce Administrator).

Aby określić grupę operatorów, dla której będą widoczne obiekty danego typu (reguły opisujące dany obiekt) w wyszukiwarce, należy:

  1. Przejść do zakładki Administrator i kliknąć na przycisk Reguły indeksacji GQS.

  1. Wyświetli się okno Reguły indeksacji GQS, które pozwala na zarządzanie indeksacją względem istniejących obiektów w aplikacji. W tabeli będzie widoczna informacja o tym, czy w regule indeksującej dany obiekt jest publiczny. Należy zaznaczyć wybraną regułę i kliknąć na przycisk Popraw.

  1. Wyświetli się okno, pozwalające na zarządzanie regułą indeksującą wybrany rodzaj obiektu. Szczegóły indeksacji zostały opisane w rozdziale Indeksowanie GQS.

Aby zdefiniować grupę operatorów, dla których będzie widoczny wybrany typ obiektu, należy:

1) Zaznaczyć grupę lub kilka grup operatorów, którzy będą mogli korzystać z reguły wyszukującej obiekty danego rodzaju w polu Grupy operatorów, które widzą dane zaindeksowane tą regułą.

2) Zaznaczyć pole Dane zaindeksowane tą regułą są widoczne dla wszystkich operatorów. Reguła zostanie oznaczona jako publiczna, a obiekty, które zostały przez nią opisane będą mogły zostać wyszukane przez każdego operatora.

4. Wprowadzone zmiany należy zatwierdzić przyciskiem Zapisz. Kryteria wyszukiwania zostaną zaktualizowane według wprowadzonych preferencji.

Indeksowanie GQS

Indeksowanie jest kluczowym procesem w systemach wyszukiwania danych za pomocą Global Quick Search. Indeks przechowuje informacje o tym, gdzie znajdują się dane w bazie danych, co pozwala na szybsze odnalezienie odpowiednich wyników. Podczas procesu indeksowania, system analizuje dane związane z obiektem, takie jak nazwa, opis, kody, ceny, opis itp. i tworzy indeks tych informacji. Dane mogą być indeksowane w GQS programistycznie przez integrację z punktem kontroli nad procesami dodawania, modyfikowania i usuwania danych, które mają być indeksowane. W tym celu wykorzystuje się mechanizm Event-Driven Architecture (EDA), który pozwala na tworzenie i reagowanie na różnego rodzaju zdarzenia. Zdarzenia EDA mogą być tworzone na bieżące potrzeby i będą emitowane na szynę EDA za każdym razem, gdy nastąpi jakakolwiek zmiana w danym obiekcie. Jednym z handlerów (fragmentu kodu, który jest wywoływany w odpowiedzi na wystąpienie określonego zdarzenia lub warunku), które mogą reagować na takie zdarzenie, może być handler odpowiedzialny za indeksację tych danych w silniku GQS. Szczegóły techniczne indeksowania danych w GQS zostały przedstawione w instrukcji Global Quick Search (GQS).

Proces indeksacji obejmuje dwie podstawowe operacje, a każda z nich jest rejestrowana przez zdarzenia EDA i może być monitorowana z poziomu aplikacji:

  • Dodanie lub aktualizacja indeksu w silniku GQS - kiedy dane są dodawane lub modyfikowane, należy zaktualizować indeks, aby GQS mógł prawidłowo wyszukiwać i sortować te dane.

  • Usunięcie indeksu w silniku GQS - kiedy dane są usuwane, odpowiedni indeks powinien zostać również usunięty, aby uniknąć odniesień do nieistniejących już danych.

Mechanizm wyszukiwania zaczyna działać natychmiast, gdy nastąpi pierwsza indeksacja danych, a zdarzenie EDA zostanie przetworzone.

Reguły indeksacji

Proces indeksacji obejmuje również programowe zakładanie reguł indeksacji, które definiują, w jaki sposób dane są przetwarzane i indeksowane. Reguły mogą być także modyfikowane ręcznie z poziomu aplikacji (niezależnie od tego, czy reguła została założona w aplikacji, czy przez kod indeksujący). Nie zaleca się samodzielnego zakładania nowych reguł indeksacji przez administratora ze względu na konieczność znajomości rozwiązań w kodzie źródłowym (np. znajomość nazw tabel bazodanowych).

Reguły indeksacji mogą zawierać:

  • informacje o tym, które parametry obiektów powinny być uwzględnione w procesie indeksacji np. nazwy, opisy, kody, ceny, stany magazynowe, KTM itp. Przy czym istotne jest aby wybrać te parametry, które są kluczowe dla wyszukiwania i spełniają potrzeby użytkowników.

  • normalizacja danych - przed indeksacją, dane obiektów mogą być znormalizowane, czyli przekształcane w jednolity format, co pozwala na zachowanie spójności i dokładności wyszukiwania, eliminując różnice w zapisie danych.

  • ustalanie rang - reguły indeksacji mogą określać rangi (priorytety) dla poszczególnych atrybutów towarów. Rangi wskazują na to, jak istotne są poszczególne atrybuty dla oceny trafności wyników wyszukiwania. Przykładowo, nazwa produktu może mieć większą rangę niż opis, jeśli użytkownik najbardziej skupia się na trafności wyników według nazw.

Aby dodać nową regułę indeksowania GQS z poziomu aplikacji, należy:

  1. Przejść do zakładki Administrator i kliknąć na przycisk Reguły indeksacji GQS.

  1. Wyświetli się okno Reguły indeksacji GQS, które pozwala na zarządzanie regułami indeksacji względem istniejących obiektów w aplikacji. Należy kliknąć na przycisk Dołącz.

  1. Wyświetli się okno Dodaj nową regułę indeksowania. Do prawidłowej konfiguracji reguły niezbędna jest znajomość tabel bazodanowych, wykorzystywanych w aplikacji.

Okno zawiera następujące elementy:

  • Nazwa reguły - nazwa, opisująca indeksowany zbiór danych (pole obowiązkowe);

  • Ikona - symbol ikony danej reguły indeksowania, która będzie widoczna w oknie wyszukiwania wszystkich obiektów (niewidoczna w oknie wyszukiwarki towarów) (pole dodatkowe);

  • Tabela indeksowana - nazwa głównej tabeli bazodanowej, z którym zostaną skojarzone indeksowane obiekty danego rodzaju (pole obowiązkowe);

  • Obiekt Biznesowy odpowiedzialny za prezentację - obiekt, implementujący metodę statyczną. Metoda wyświetla okno prezentujące dane elementu, który został znaleziony w wyniku wyszukiwania. Jest uruchamiana automatycznie po dwukrotnym kliknięciu na wynik wyszukiwania (pole obowiązkowe);

  • Dane zaindeksowane tą regułą są widoczne dla wszystkich operatorów - pole dodatkowe, które oznacza regułę indeksowania jako publiczną;

  • Grupy operatorów, które widzą dane zaindeksowane tą regułą - pole dodatkowe, które pozwala na ograniczenie wyników wyszukiwania w obrębie indeksów z tej reguły indeksowania do konkretnych grup operatorów.

Należy uzupełnić wszystkie pola obowiązkowe i wybrać ze słownika Obiekt Biznesowy odpowiedzialny za prezentację odpowiedni obiekt.

  1. (Opcjonalne) W trakcie tworzenia reguły indeksacji możliwe jest definiowanie uprawnień dla konkretnych grup operatorów. Proces został opisany w rozdziale Uprawnienia.

  2. Po wprowadzeniu niezbędnych danych oraz określeniu uprawnień, należy zatwierdzić wprowadzone zmiany przyciskiem Zapisz. Po dodaniu nowej reguły, widok wróci do okna głównego reguł indeksacji GQS.

  1. (Opcjonalne) Po dodaniu nowego obiektu do kartoteki (np. towaru) lub jego modyfikacji (np. zmiana nazwy), indeksacja zachodzi automatycznie. Jednak w przypadku systemowych błędów indeksowania, może zaistnieć sytuacja, gdzie towar jednak nie zostanie odpowiednio zaindeksowany (nie będzie mógł zostać wyszukany). W takim przypadku należy kliknąć na przycisk Indeksuj ponownie wszystko, aby przebudować wszystkie istniejące indeksy i umożliwić wyszukiwanie wszystkich obiektów.

  1. Z systemowego paska zadań wyświetli się komunikat, informujący o inicjacji reindeksacji. Dalsze monitorowanie postępu jest możliwe z poziomu monitora EDA. Proces został opisany w rozdziale Zdarzenia EDA.

Zdarzenia EDA

Zdarzenie (Event) w EDA (Event-Driven Architecture) jest elementem, który odgrywa kluczową rolę w przepływie informacji i realizacji procesów w systemie opartym na architekturze systemów sterowanych zdarzeniowo. Zdarzenia to istotne momenty, które występują w systemie lub poza nim i mają znaczenie dla funkcjonowania procesów w aplikacji. Służą jako bodziec do wywołania reakcji i uruchomienia odpowiednich procesów lub logiki biznesowej. Poszczególne komponenty systemu mogą analizować otrzymane zdarzenia i podejmować działania na ich podstawie. W architekturze EDA systemy i komponenty mogą publikować zdarzenia w odpowiednich momentach, gdy te zdarzenia występują. Publikowanie zdarzeń polega na informowaniu systemu lub innych komponentów o ich wystąpieniu poprzez przekazanie danych związanych z zdarzeniem. Dla indeksowania GQS zdarzeniem będzie utworzenie, modyfikacja lub usunięcie indeksu. Jeśli indeks zostanie w jakiś sposób zmodyfikowany, to nie będzie możliwe jego wyszukanie, do czasu aż zdarzenie nie zostanie przetworzone przez EDA. Zdarzenia są przetwarzane w sposób asynchroniczny, czyli główna operacja (np. dodania towaru do kartoteki) jest widoczna w aplikacji natychmiast, a operacja towarzysząca (np. wyszukanie tego towaru) zachodzi po jakimś czasie od wprowadzenia zmian (po przetworzeniu eventów indeksujących). Przetwarzanie eventów zajmuje zazwyczaj kilka minut. Wszystkie zdarzenia EDA mogą być weryfikowane za pomocą monitora EDA, w którym są rejestrowane zdarzenia. Każde zdarzenie posiada swój status tj. Przetworzony poprawnie przez co najmniej jeden handler, Nieprzetworzony, Anulowany, Przetworzony z błędem przez przynajmniej jeden handler, który informuje o aktualnym postępie indeksowania. Do korzystania z monitora przydatna jest także znajomość komunikatów poszczególnych dla zdarzeń, np. X.GoodChanged, gdzie X to nazwa projektu, a GoodChanged oznacza modyfikację jakiegoś parametru asortymentu. Każde rodzaj zdarzenia posiada odpowiadający mu komunikat. Szczegóły architektury EDA zostały opisane w instrukcji EDA.

Aby zweryfikować typ i status wprowadzonych zmian w indeksach, należy:

  1. Przejść do zakładki Administrator, kliknąć na przycisk EDA i wybrać funkcję Monitor.

  1. Wyświetli się okno Monitor EDA, w którym będą widoczne wszystkie zdarzenia wraz z informacjami o jego czasie wysłania, użytkowniku, który je utworzył, statusie, typie komunikatu i szeregiem danych technicznych. Tylko efekty zdarzeń, które posiadają status Przetworzony poprawnie przez co najmniej jeden handler będzie widoczny w aplikacji.

  1. (Opcjonalne) Jeśli status zdarzenia przez długi czas nie ulega zmianie, to możliwe jest jego ponowne przesłanie. W tym celu należy zaznaczyć wybrane zdarzenie i kliknąć na przycisk Wyślij ponownie i wybrać opcje Zaznaczony komunikat. Po wykonaniu operacji należy odczekać kilka minut i sprawdzić ponownie jego status.

Konfiguracja atrybutów

Każdy obiekt w aplikacji posiada swoje podstawowe parametry identyfikacyjne np. nazwę, czy opis, które są elementem głównej tabeli bazodanowej. Oprócz tego, obiekty biznesowe mogą posiadać dodatkowe właściwości, tzw. atrybuty. Atrybutem towaru jest konkretna cecha (np. kolor), która zazwyczaj posiada słownikową wartość, wybieraną z listy (np. kolor fioletowy). Możliwe jest wprowadzenie do systemu atrybutu, który nie posiada podanych wartości np. godziny produkcji i zdefiniowanie dla niego odpowiedniego przedziału. Atrybuty podlegają priorytetyzacji, czyli każdy z nich posiada rangę, która określa jak istotne jest jego wyszukiwanie. Zakres rang to 0 do 100, gdzie 0 oznacza najniższą rangę, a 100 najwyższą. Atrybuty o najwyższej randze będą wyświetlać się na szczycie listy wyszukiwania, po wprowadzeniu odpowiedniego zapytania. Podstawowe parametry towaru również posiadają rangi, jednak są one definiowane odgórnie z poziomu bazy danych i nie można ich samodzielnie konfigurować w aplikacji. Indeksowanie atrybutów może zachodzić zarówno na podstawie ich cech, jak i ich wartości.

Aby zmodyfikować indeksowanie atrybutu przez GQS, należy:

  1. a. Przejść do zakładki Kartoteki i kliknąć na przycisk Konfiguracja (w obszarze Konfiguracja), a następnie z menu Asortyment wybrać funkcję Cechy.

b. Przejść do zakładki Administrator i kliknąć na przycisk Kartoteki (w obszarze Konfiguracja funkcjonalna), a następnie z menu Asortyment wybrać funkcję Cechy.

  1. Wyświetli się okno Definicje cech, pozwalające na zarządzanie poszczególnymi atrybutami.

Okno zawiera następujące elementy:

  • Dołącz, Popraw, Usuń - standardowe funkcje zarządzania rekordami;

  • Wyświetl - funkcja wyświetla okno główne wybranej cechy, bez możliwości jej modyfikacji;

  • przyciski z ikoną strzałki - zmieniają pozycję wybranego elementu;

  • Zakładki:

    • Wartości powiązań cech - pozwala na zweryfikowanie i modyfikację (za pomocą przycisku Wartość) powiązań pomiędzy wybraną cechą, a jej wartościami;

    • Przedziały - pozwala na zarządzanie przedziałami dla wybranej cechy;

    • Słownik wartości - pozwala na zdefiniowanie listy wartości jakie będą dostępne dla danej cechy.

Należy zaznaczyć wybraną cechę w tabeli i kliknąć na przycisk Popraw, aby zdefiniować parametry indeksowania atrybutu.

  1. Wyświetli się okno Cecha, pozwalające na określenie szeregu parametrów wybranej cechy. Aby dana cecha stała się atrybutem, to w polu Rodzaj musi zostać wybrana wartość atrybut. W innym przypadku cecha nie będzie mogła zostać dodana jako atrybut w kartotece asortymentów.

  1. Aby wyszukiwanie na podstawie wybranej cechy (atrybutu) było możliwe, należy w polu Indeksuj w GQS ustawić wartość Indeksu według cechy lub Indeksuj według wartości. Wyszukiwanie atrybutów będzie wykonywane na podstawie wybranego parametru. Jeśli w polu zostanie wybrana opcja Nie indeksuj, to w trakcie wyszukiwania atrybut nie będzie brany pod uwagę, jednak sam obiekt będzie nadal możliwy do wyszukania na podstawie jego podstawowych parametrów.

  1. (Opcjonalne) Jeśli wybrano opcję indeksowania atrybutu, to należy uzupełnić wartość w polu Ranga. Po kliknięciu na pole, automatycznie podpowie się wartość 50 (czyli najbardziej środkowa wartość). Jeśli atrybut nie będzie podlegał indeksowaniu (w polu Indeksuj w GQS będzie wybrana wartość Nie indeksuj), to pole Ranga będzie zablokowane.

  1. Wprowadzone zmiany należy zatwierdzić przyciskiem Zatwierdź. Atrybut będzie indeksowany lub nie (w zależności od wybranej opcji), zaraz po przetworzeniu zdarzenia przez EDA.