Wprowadzenie
Aplikacja Obiekty deweloperskie pozwala na rejestrowanie i przeglądanie obiektów deweloperskich różnych typów. W niniejszym artykule opisany został obiekt o typie OQL Search.
Opis
Wyszukiwania OQL (OQL Search) pozwalają na wyszukanie obiektów w bazie danych. Wyszukiwania są używane w formie pomocy wejściowej dla pól, jako pomoc wejściowa aplikacji w obszarze nawigacji lub w aplikacjach (np. aplikacjach zapytań).
Wyszukiwanie jest wieloczęściową instrukcją OQL w formie SELECT. Zbiór wyników polecenia select jest wynikiem wyszukiwania. Instrukcję OQL można podzielić na kilka fragmentów. Podstawowy fragment zawiera SELECT do obiektu biznesowego lub widoku OQL, który może być połączony w razie potrzeby za pomocą JOIN. Dodatkowe fragmenty zawierające JOIN, które są uwzględniane w wyborze tylko wtedy, gdy jest to wymagane (rozdział: Pozakładka OQL).
Zakładka Edytor składa się z kilku podzakładek:
Podzakładka Ogólne
Oznaczenie – nazwa wyszukiwania wyświetlana w wizualizacji.
Prezentacja – definicja typu wizualizacji, jeśli wyszukiwanie jest używane jako pomoc wartości pola:
- Combobox – wynik wyszukiwania jest wyświetlany w małej ramce na dole pola. Nie jest możliwe wprowadzenie parametrów wyboru. Ten typ wizualizacji jest odpowiedni tylko dla małych zestawów wyników.
- Dialog – wynik wyszukiwania jest wyświetlany w oknie dialogowym. Wynik wyszukiwania można ograniczyć za pomocą parametrów wyboru. Ten typ wizualizacji jest odpowiedni dla dużych zestawów wyników.
Hook – specyfikacja klasy, która służy do interwencji w wykonywanie i wyświetlanie wyszukiwania za pomocą zdefiniowanych haków (np. manipulacja parametrami zapytania, manipulacja zestawami wyników lub wyświetlanie pól wyboru).
Aby to zrobić, hak musi implementować określone interfejsy. Wyszukiwanie OQL jest zawarte w dowodzie użycia klasy Java.
Sekcja Baza danych
Dostępne pola:
Baza danych OLTP – używane obiekty biznesowe i widoki OQL znajdują się w bazie danych OLTP. Obiekty używane w instrukcji OQL muszą być utworzone w tej samej bazie danych.
Baza danych OLAP – używane obiekty biznesowe i widoki OQL znajdują się w bazie danych OLAP. Obiekty używane w instrukcji OQL muszą być utworzone w tej samej bazie danych.
Baza danych repozytorium – używane obiekty biznesowe i widoki OQL znajdują się w bazie danych repozytorium. Obiekty używane w instrukcji OQL muszą być utworzone w tej samej bazie danych.
Baza konfiguracyjna – używane obiekty biznesowe i widoki OQL znajdują się w bazie danych konfiguracji. Obiekty używane w instrukcji OQL muszą być utworzone w tej samej bazie danych.
Sekcja Polecenie OQL
Dostępne pola:
Distinct (pole wyboru) – usuwa zduplikowane wyniki. Należy pamiętać, że parametry sortowania, które są niejawnie dodawane do wyszukiwania, są zawarte w polu SELECT. Zmienia to zestaw wyników. Wyświetlony wynik wyszukiwania nie musi odpowiadać oczekiwanemu wynikowi wyszukiwania.
SELECT – wyświetlanie parametrów zwrotnych instrukcji OQL.
GROUP BY – określenie klauzuli GROUP BY. Zazwyczaj należy pozostawić to pole puste, aby klauzula GROUP BY była obliczana automatycznie.
HAVING – specyfikacja klauzuli HAVING.
ORDER BY – określone domyślne sortowanie.
Sekcja Obiekt bazowy
Obiekt bazowy – definicja podstawowego obiektu wyszukiwania. Podczas korzystania z wyszukiwania w obszarze nawigacji do zestawu wyników dodawana jest specjalna wartość zwracana. Nazwa wartości zwrotnej odpowiada nazwie obiektu bazowego. Zawiera ona klucz techniczny, który jest używany do ładowania instancji z obiektu bazowego. Przypisania kluczy są używane do definiowania wartości zwracanej.
Wyszukiwanie OQL jest zawarte na liście wykazu zastosowania obiektu bazowego.
Sekcja Przyporządkowanie klucza
Przypisania kluczy Przypisanie parametrów zwrotnych wyszukiwania, które odpowiadają indeksowi głównemu obiektu bazowego.
Podzakładka OQL
Na tej zakładce definiowana jest polecenie OQL. Instrukcja OQL jest podzielona na fragmenty:
- fragment podstawowy (pierwszy wiersz na liście)
- fragmenty dodatkowe (opcjonalne)
Przycisk [Fragmenty] wyświetla kolumny, w których zdefiniowane są składniki instrukcji OQL wyszukiwania OQL. Dostępne są następujące pola:
FROM – definicja klauzuli From wyrażenia OQL. Obiekt biznesowy lub widok OQL, na którym wykonywane jest wyszukiwanie, jest określony we fragmencie bazowym. Wyszukiwanie można rozszerzyć na inne obiekty za pomocą JOIN . Klauzula ma przypisaną nazwę, która jest używana w dodatkowych fragmentach.
Składnia w obiekcie bazowym jest następująca: {<Name> = <wyrażenie OQL>} Dodatkowy fragment jest dodawany do instrukcji OQL zgodnie z wymaganiami. Klauzula from obiektu podstawowego jest rozszerzana o JOIN.
Składnia dodatkowego fragmentu jest następująca: {<Name>} JOIN <wyrażenie OQL>.
Wyszukiwanie OQL jest zawarte na liście wykazów zastosowania obiektów biznesowych i widoków OQL używanych w instrukcji OQL.
WHERE – definicja klauzuli WHERE instrukcji OQL. Ta specyfikacja może być użyta do statycznego ograniczenia zestawu wyników wyszukiwania. Klauzula WHERE jest wprowadzana bez słowa kluczowego where.
Przycisk [Atrybuty] wyświetla kolejne kolumny, w których wprowadzane są atrybuty wyszukiwania i definiowane są ich właściwości; dostępne są następujące pola:
Atrybut – określenie atrybutu obiektu biznesowego lub widoku OQL z klauzuli From. Nazwa musi być przywoływana przez określony alias. Składnia: Alias:Nazwa Atrybutu lub Funkcja(Alias:Nazwa Atrybutu). Można używać funkcji agregacji AVG, MIN, MAX, SUM. Należy pamiętać, że atrybuty z funkcjami agregacji nie mogą być używane jako funkcje wyszukiwania. Atrybut jest zawarty na liście wykazów zastosowania obiektu biznesowego lub widoku OQL.
Nazwa – nazwa atrybutu. Pozwala na ustawianie parametrów wyboru i pobierania wyników wyszukiwania. Nazwa musi być unikalna w ramach definicji wyszukiwania. Jeśli nowy parametr zostanie dodany do wyszukiwania OQL, które nie znajduje się w jego własnym zakresie, nazwa musi zaczynać się od prefiksu rozwoju bieżącego systemu. W takim przypadku prefiks jest automatycznie wyświetlany podczas tworzenia nowego parametru.
Pierwotny typ danych – wyświetla typ danych atrybutu.
Pozycja kryterium wyszukiwania – definicja atrybutu jako funkcji wyszukiwania w wyszukiwaniu.
Użytkownik może użyć pola, aby ograniczyć zestaw wyników wyszukiwania. Numeracja określa pozycję pola atrybutu wyszukiwania na wyświetlaczu. Zaczyna się od „0” dla pierwszego pola. Właściwości GUI są kontrolowane przez opis danych atrybutu.
Jeśli wyszukiwanie jest ograniczone przez atrybut wyszukiwania z dodatkowego fragmentu, instrukcja QOL jest rozszerzana o dodatkowy fragment.
Należy pamiętać, że atrybuty z funkcjami agregacji nie mogą być używane jako funkcje wyszukiwania.
Pozycja ekranu – wyświetlanie wystąpień atrybutu w zestawie wyników wyszukiwania.
Numeracja określa pozycję na liście (0 to pierwsza kolumna na liście). Właściwości GUI są kontrolowane przez opis danych atrybutu. Jeśli nie określono numeru, pole nie jest wyświetlane w zestawie wyników.
Pozycja zwrotu – atrybut jest zawarty w zestawie wyników wyszukiwania. Numeracja określa pozycję w zestawie zwrotnym (0 to pierwsza pozycja w zestawie zwrotnym).
Klucz – identyfikacja unikalnych atrybutów klucza. Jest to wymagane do ponownego uruchomienia wyszukiwania. Jest to szczególnie przydatne w przypadku dużych zestawów wyników. Rekordy danych są ładowane strona po stronie. Ostatni rekord danych na stronie jest zapamiętywany i wyszukiwanie jest ponownie uruchamiane z tym rekordem. Kluczowe atrybuty powinny być zawsze oznaczone.
Specjalne zachowanie – definicja specjalnego zachowania atrybutu:
- Identyfikacja – przenosi wartość z pól z pomocą wprowadzania pola do atrybutu. Jeśli w polu nie zostanie wprowadzona żadna wartość, wyszukiwanie rozpocznie się automatycznie. Jeśli wyszukiwanie przyniesie wynik, zawartość zostanie zapisana z powrotem w polu wywołującym. W każdej definicji wyszukiwania można określić tylko jedno pole identyfikacyjne.
- Oznaczenie – jest używane tylko dla ExtendedTextField. Jeśli zestaw wyników wyszukiwania jest wizualizowany jako ComboBox, zawartość kodu i tekstu są wyświetlane obok siebie. Gdy wynik wyszukiwania jest przenoszony, zawartość atrybutu tekstowego jest przenoszona do tylnej części ExtendedTextField.
- Niewidoczny – są to ukryte parametry zapytania. Pola te są tworzone i dodawane do interfejsu. Pola są następnie przełączane na niewidoczne. Specjalne zachowanie może być użyte tylko dla zapytania.
- Znacznik usuwania – może być oparte tylko na znaczniku czasu. Z reguły jest to atrybut de-leteTime części UpdateInformation obiektu biznesowego. Parametr musi być również oznaczony jako pole zapytania i wyświetlania. W ramach wyszukiwania specjalne zachowanie „wskaźnik usunięcia” może być przypisane tylko do jednego parametru.
- Kontekst wyszukiwania – nie są tworzone żadne pola wyboru. Są one używane tylko w kontekście wyszukiwania.
Możliwe sortowanie – wskazuje, czy atrybut jest dostępny jako parametr sortowania. Użytkownik decyduje, czy sortować według tego atrybutu. Jeśli atrybut z dodatkowego fragmentu zostanie uwzględniony w sortowaniu wyszukiwania przez użytkownika, instrukcja OQL zostanie rozszerzona o dodatkowy fragment.
Pozycja kryterium sortowania – atrybut jest uwzględniany w sortowaniu. Numeracja określa pozycję w sortowaniu (w klauzuli ORDER BY). Dodatkowe fragmenty, w których atrybut jest uwzględniany w sortowaniu jako cecha sortowania, są zawsze zawarte w instrukcji OQL.
Kierunek sortowania – określa kierunek sortowania (rosnąco, malejąco).
Przycisk [Logiczne typy danych] pozwala na wyświetlanie dodatkowych kolumn, w których można wpływać na właściwości GUI wyszukiwania. Dostępne są następujące pola:
Logiczny typ danych (cecha wyszukiwania) – logiczny typ danych, za pomocą którego określane są właściwości GUI pola wyboru.
Wyszukiwanie OQL znajduje się na liście wykazów zastosowania logicznego typu danych.
Logiczny typ danych (wyświetlanie) – zapytanie OQL znajduje się na liście wykazów zastosowania logicznego typu danych.
Podczas wyszukiwania zarejestrowanych regionów wybór można ograniczyć do określonych skrótów i opisów regionów. Opcjonalnie wybór można ograniczyć do określonego kraju.
- Wyszukiwanie OQL: com.cisag.app.<…>.obj.region
- Obiekt bazowy: Obiekt biznesowy com.cisag.app.<…>.obj.Region
- Przyporządkowanie klucza: guid (region obiektu biznesowego) – guid (region wyszukiwania OQL)
Główny fragment:
FROM: {REGION = com.cisag.app.<…>.obj.Region r}
Atrybuty:
Kolumna | Nazwa | Wybór | Wyświetlenie | Wynik | Zwrot | Klucz | Sortowanie | Domyślne sortowanie | Kierunek sortowania |
r:description | description | 1 | 1 | Opis | 2 | – | Tak | 1 | Rosnąco |
r:country | country | – | – | Brak | 3 | – | – | – | – |
r:code | code | 0 | 0 | Identyfikacja | 1 | – | Tak | 0 | Rosnąco |
r:guid | guid | – | – | Brak | 0 | Tak | – | – | – |
Wtórny fragment:
FROM: {REGION} join com.cisag.app.<…>.obj.Country c on c:guid = r:country
Atrybuty:
Kolumna | Nazwa | Wybór | Wyświetlenie | Wynik | Zwrot | Klucz | Sortowanie | Domyślne sortowanie | Kierunek sortowania |
c:isoCode | isoCode | 2 | – | Tak | – |
Podzakładka Układ
Domyślnie wynik wyszukiwania OQL jest wizualizowany w siatce. Układ wyników wyszukiwania można zdefiniować za pomocą tej zakładki. Siatka oferuje różne funkcje układu, takie jak wyświetlanie wielowierszowe, formatowanie kolumn itp. Ponieważ wyszukiwania OQL można używać zarówno jako wyszukiwania w dialogu, jak i wyszukiwania w obszarze nawigacji, na zakładce wyświetlana jest siatka dla każdego z tych dwóch przypadków. Siatka dla wyszukiwania w obszarze nawigatora ma taką samą szerokość jak siatka, która będzie później używana do wyświetlania wyników wyszukiwania. Układ można zatem zdefiniować niezależnie od siebie dla obu przypadków.
Możliwe jest użycie hooków do dodania kolumn do wyniku wyszukiwania, które nie zostały zdefiniowane w wyszukiwaniu OQL. Klasa Java implementująca hook jest ładowana w celu przeanalizowania zawartych w niej informacji. Dostępne są następujące opcje ładowania klasy Java hooka:
z folderem roboczym – jeśli folder roboczy jest brany pod uwagę podczas ładowania klasy Java, klasa jest ładowana bezpośrednio z folderu Classes w folderze użytkownika lub folderze wspólnym folderu roboczego. Klasę można załadować ponownie w dowolnym momencie; nie jest konieczne ponowne uruchamianie serwera aplikacji.
Jeśli nie jest możliwe załadowanie i/lub przeanalizowanie klasy z folderem roboczym, klasa musi zostać załadowana bez folderu roboczego.
bez folderu roboczego – jeśli folder roboczy nie jest brany pod uwagę podczas ładowania klasy Java, klasa jest ładowana za pośrednictwem ścieżki klasy serwera aplikacji. Jeśli klasa ulegnie zmianie, serwer aplikacji musi zostać ponownie uruchomiony. Jeśli serwer aplikacji działa w środowisku programistycznym, które umożliwia zamianę klas w czasie wykonywania, klasę można również przeładować za pomocą tego mechanizmu.
Aplikacja uwzględnia te hooki dodaje te kolumny do siatek. Oznacza to, że wygląd tych kolumn może być również definiowany przez funkcje układu siatki.
Dostępne przyciski:
[Utwórz nowy layout z folderu „work”] – tworzy siatkę z kolumnami wyników zdefiniowanymi w zapytaniu OQL. Jeśli do wyszukiwania używany jest hook, klasa hooka jest otwierana z folderu roboczego. Ponieważ zmieniona klasa hooka nie musi znajdować się w ścieżce klas serwera aplikacji, ale jest ładowana bezpośrednio z folderu roboczego, funkcja ta może być używana na dowolnym serwerze aplikacji w systemie.
[Utwórz istniejący layout bez folderu „work”] – tworzy siatkę z kolumnami wyników zdefiniowanymi w wyszukiwaniu OQL. Jeśli do wyszukiwania używany jest hook, klasa jest ładowana bez uwzględniania folderu roboczego. W przypadku zmiany klasy hooka należy upewnić się, że zmieniona klasa znajduje się w ścieżce klas serwera aplikacji.
[Otwórz istniejący layout za pomocą folderu „work”] – ładuje istniejące layouty. Jeśli do wyszukiwania używany jest hook, klasa hooka jest ładowana z folderu roboczego. Ponieważ zmieniona klasa hooka nie musi znajdować się w ścieżce klas serwera aplikacji, ale jest ładowana bezpośrednio z folderu roboczego, funkcja ta może być używana na dowolnym serwerze aplikacji w systemie.
[Otwórz istniejący layout bez folderu „work”] – otwiera istniejące layouty wyszukiwania. Jeśli do wyszukiwania używany jest hook, klasa jest ładowana bez uwzględniania folderu roboczego. W przypadku zmiany klasy hooka należy upewnić się, że zmieniona klasa znajduje się w ścieżce klas serwera aplikacji.
[Usuń układ] – usuwa istniejące układy wyszukiwania.