Dynamiczne obiekty biznesowe

Wprowadzenie

Obiekty biznesowe są tworzone i modyfikowane wyłącznie w systemie deweloperskim. Zmiany w nich muszą zostać przeniesione z systemu deweloperskiego, poprzez system testowy, do systemu produkcyjnego za pomocą aktualizacji oprogramowania.

Procedura ta jest zbyt statyczna dla następujących przypadków:

  • Dodatkowe pola w obiektach biznesowych
  • Charakterystyka artykułu
  • Parametry produkcyjne

Wszystkie te przypadki wymagają, aby nowe pola zostały dodane do schematu obiektu biznesowego w trakcie pracy systemu lub aby zostały utworzone nowe obiekty biznesowe.

W tym celu w systemie są obsługiwane dynamiczne obiekty biznesowe. Schemat dynamicznego obiektu biznesowego może być tworzony i zmieniany przez Persistence service w dowolnym systemie w dowolnym momencie. Dostęp do odczytu i zapisu zawartości dynamicznego obiektu biznesowego odbywa się w taki sam sposób, jak dostęp do zwykłych obiektów biznesowych – za pośrednictwem Persistence service. Wydajność dostępu do dynamicznych obiektów biznesowych jest podobna do wydajności dostępu do zwykłych obiektów biznesowych.

System może zapisywać dynamiczne obiekty biznesowe na dwa sposoby:

  1. Przechowywanie jako tabela bazy danych – dla każdego schematu dynamicznego obiektu biznesowego tworzona jest jedna lub więcej tabel bazy danych, w których przechowywane są instancje.
  2. Przechowywanie jako BLOB – instancje dynamicznego obiektu biznesowego są przechowywane w obiektach BLOB.

Typy te różnią się w szczególności pod względem opcji wyszukiwania i wymagań dotyczących pamięci. Decyzję o bardziej korzystnym typie przechowywania należy podjąć w zależności od przypadku użycia.

Jeśli dynamiczne obiekty biznesowe są przechowywane w tabelach bazy danych, można użyć atrybutów w konfigurowalnych wyszukiwaniach i indywidualnych indeksach.

Grupa docelowa

  • Programiści
  • Konsultanci techniczni

3 Definicja
Dynamiczny obiekt biznesowy
Dynamiczny obiekt biznesowy odpowiada obiektowi biznesowemu, ale może być tworzony i zmieniany w dowolnym systemie w dowolnym czasie.
Każdy dynamiczny obiekt biznesowy jest opisany przez swój schemat. Schemat zawiera między innymi informacje o tym, jakie atrybuty ma dynamiczny obiekt biznesowy i jaki ma typ danych. Schemat odpowiada opisowi obiektu biznesowego jako obiektu programistycznego.
Instancja dynamicznego obiektu biznesowego jest cechą powiązanego schematu. Persistence service może odczytywać, zapisywać i usuwać instancje dynamicznych obiektów biznesowych. Dla schematu może istnieć dowolna liczba instancji. Instancje dynamicznych obiektów biznesowych mogą być zapisywane w tabelach bazy danych utworzonych zgodnie ze schematem lub jako obiekty BLOB.

Opis

Aplikacje korzystające z dynamicznych obiektów biznesowych zarządzają ich schematem i instancjami.

W przeciwieństwie do standardowych obiektów biznesowych, schemat dynamicznego obiektu biznesowego nie jest zarządzany przez centralną aplikację (taką jak aplikacja Obiekty deweloperskie). Każda aplikacja, która korzysta z dynamicznych obiektów biznesowych, może również zarządzać ich schematem.

Schemat dynamicznego obiektu biznesowego jest specyficzny dla OLTP. Oznacza to, że schemat ten istnieje tylko w dokładnie jednej bazie danych OLTP. Schemat dynamicznego obiektu biznesowego nie może być dostarczany do innych systemów za pomocą aktualizacji oprogramowania ani kopiowany do innych baz danych.

Obsługiwane typy danych

Dynamiczne obiekty biznesowe obsługują następujące typy danych jako atrybuty:

Typ Danych Java Opis
com.cisag.pgm.datatype.CisDecimal Liczba dziesiętna składająca się z 21 cyfr, w tym 6 miejsc po przecinku.
com.cisag.app.general.obj.Quantity Specyfikacja ilości.
com.cisag.app.general.obj.DomesticAmount Waluta kraju.
com.cisag.app.general.obj.ForeignAmount Waluta obca.
java.util.Date Timestamp (znacznik czasu).
com.cisag.pgm.datatype.CisDate Data ze strefą czasową.
short Wartość stałej ValueSet
byte[] Guid
String Ciąg znaków.
byte[] Klucz główny dowolnego obiektu biznesowego. Ten typ danych przechowuje relacje z innymi jednostkami biznesowymi.

Każdy atrybut może być utworzony jako pojedyncza wartość lub jako lista wartości.

Typ Opis Przykład
Wartość Atrybut może mieć dokładnie jedną wartość w instancji. Atrybut waga może mieć wartość 3 kg w instancji.
Lista wartości Atrybut może mieć kilka wartości w instancji. Wartości te są sortowane. Atrybut smak może mieć wartości słodki, kwaśny, pikantny w jednej instancji.

Przechowywanie

Sposób przechowywania dynamicznych obiektów biznesowych określa opcje dostępu do dynamicznego obiektu biznesowego.

Przechowywanie jako tabela bazy danych

Jeżeli dynamiczny obiekt biznesowy ma zostać zapisany jako tabela bazy danych, dla każdego schematu tworzy się jedną lub więcej tabel bazy danych. Instancje są zapisywane w tych tabelach bazy danych. Liczba tabel bazy danych zależy od liczby i rozmiaru atrybutów w schemacie.

Aby załadować dynamiczny obiekt biznesowy, wykonuje się dostęp do odczytu do każdej powiązanej tabeli bazy danych. Jeśli dynamiczny obiekt biznesowy ma dużą liczbę atrybutów lub list wartości, należy do niego odpowiednio duża liczba tabel bazy danych. Aby przyspieszyć dostęp do odczytu do instancji dynamicznego obiektu biznesowego, dynamiczny obiekt biznesowy jest przechowywany redundantnie jako BLOB w pewnej liczby tabel. Nadmiarowe przechowywanie jako BLOB umożliwia załadowanie dynamicznego obiektu biznesowego z dostępem do bazy danych. Podczas zapisu dynamicznego obiektu biznesowego wymagany jest jednak jeszcze jeden dostęp do bazy danych.

Rozmieszczenie atrybutów w tabelach bazy danych ma duży wpływ na czasy odpowiedzi dla zapytań wyszukiwania. Wszystkie tabele, które zawierają atrybuty wymagane dla zapytania wyszukiwania, muszą być połączone z zapytaniem wyszukiwania. Aby zmniejszyć liczbę połączeń, warto zminimalizować liczbę tabel bazy danych wymaganych dla zapytania wyszukiwania.

Każdemu atrybutowi można opcjonalnie przypisać ścieżkę klasyfikacji (np. „x-y-01”). Atrybuty z tą samą klasyfikacją są najlepiej przechowywane w tej samej tabeli bazy danych. Oznacza to, że jeśli w momencie generowania dynamicznego obiektu biznesowego wiadomo, które atrybuty będą prawdopodobnie współdzielone, wówczas tym współdzielonym atrybutom powinna zostać przypisana ta sama klasyfikacja.

Przykład
Cechy artykułu są przechowywane w dynamicznych obiektach biznesowych, a każda cecha jest przypisana do klasyfikacji z klasyfikacji cech artykułu. Podczas wyszukiwania artykułów według cech artykułu należy najpierw wybrać klasyfikację. Następnie można wyszukiwać tylko te cechy, które są przypisane do wybranej klasyfikacji lub jej przedrostka (np. jeśli wybrano „x-y-01”, uwzględniane są również cechy klasyfikacji „x-y” i „x”).
Zalety zapisywania w postaci tabeli bazy danych
  • Instancje mogą być przeszukiwane. Atrybuty mogą być używane w konfigurowalnych wyszukiwaniach.
  • Indeksy mogą być tworzone w celu optymalizacji dostępu.
  • Dynamiczny obiekt biznesowy może być powiązany z istniejącymi obiektami biznesowymi, na przykład jako rozszerzenie „pól dodatkowych”.
  • Dostęp do zawartości dynamicznego obiektu biznesowego można uzyskać za pomocą języka OQL.
Wady zapisywania jako tabela bazy danych
  • Zwiększone zapotrzebowanie na miejsce w bazie danych.
  • Zwiększony czas do wygenerowania tabel bazy danych.
Przechowywanie jako BLOB

Jeśli dynamiczny obiekt biznesowy ma zostać zapisany jako BLOB, wówczas wszystkie instancje dynamicznego obiektu biznesowego są zapisywane w tabeli z BLOB.

Zalety zapisywania jako BLOB
  • Niskie zapotrzebowanie na pamięć w bazie danych.
  • Krótszy czas wymagany do utworzenia lub zmiany schematu.
Wady zapisu jako tabela bazy danych
  • Brak opcji wyszukiwania w instancjach.
  • Dynamiczny obiekt biznesowy nie może być powiązany z istniejącymi obiektami biznesowymi jako rozszerzenie.
  • Zawartość dynamicznego obiektu biznesowego nie może być dostępna za pomocą OQL.
Wybór sposobu przechowywania danych

Decyzja o sposobie przechowywania dynamicznego obiektu biznesowego zależy od konkretnego przypadku użycia. Z tego powodu odpowiednie przypadki użycia w standardzie są klasyfikowane według następujących kryteriów:

Kryterium Opis
Wyszukiwanie Czy dynamiczne obiekty biznesowe powinny być przeszukiwane.
Liczba schematów Oczekiwana liczba różnych schematów dynamicznych obiektów biznesowych w danym przypadku użycia.
Liczba atrybutów Oczekiwana liczba atrybutów w schemacie.
Liczba wystąpień Oczekiwana liczba wystąpień (instancji) dla schematu.
Średnia proporcja Średnia proporcja atrybutów schematu, do których faktycznie przypisano wartość w instancjach.

Klasyfikacja przypadków użycia według powyższych kryteriów:

Kryterium Produkcja Inne pola Cechy artykułu
Wyszukiwanie Tak Nie Tak
Liczba schematów Niska Wysoka Bardzo niska
Liczba atrybutów Niska Średnia Wysoka
Liczba instancji Wysoka Niska Wysoka
Gęstość cech Wysoka Średnia Niska

Kryteria te wykorzystuje się do określenia, czy dynamiczny obiekt biznesowy powinien zostać zapisany jako tabela bazy danych, czy jako BLOB. W szczególności, decydujące znaczenie ma to, czy na instancjach ma być wykonywane wyszukiwanie. Wyszukiwanie jest możliwe tylko wtedy, gdy dynamiczny obiekt biznesowy jest zapisany w tabelach bazy danych.

Liczba schematów, w połączeniu z liczbą atrybutów i instancji, pozwala oszacować maksymalną wymaganą przestrzeń dyskową. W przypadku przechowywania jako tabela bazy danych, pamięć ta nie jest optymalnie wykorzystywana, zwłaszcza przy niskiej gęstości atrybutów, ponieważ przestrzeń dyskowa jest również wymagana dla niezdefiniowanych atrybutów instancji. W przypadku zapisu jako BLOB, atrybuty, które nie są scharakteryzowane, nie wymagają miejsca w pamięci.

Przypadki użycia takie jak Inne pola i Cechy artykułu są zapisywane jako tabela bazy danych, natomiast Parametry produkcji jako BLOB.

Integracja z systemem

Dynamiczne obiekty biznesowe są częścią silnika systemu i są obsługiwane przez cały czas:

Obszar Opis
Sterownik ODBC Zawartość dynamicznych obiektów biznesowych może być wyświetlana w raportach i dokumentach. Dynamiczne obiekty biznesowe zapisane jako tabele bazy danych mogą być używane w wyszukiwaniach za pomocą konfigurowalnych wyszukiwań.
Indeksy indywidualne Indeksy można tworzyć dla dynamicznych obiektów biznesowych zapisanych jako tabele bazy danych w celu poprawy wydajności wyszukiwania lub dostępu ODBC.
Eksport/Import Zawartość dynamicznych obiektów biznesowych może być eksportowana lub importowana.
OQL/Konsola OQL Konsola OQL może być używana do odczytu zawartości dynamicznych obiektów biznesowych.

Więcej informacji na temat obsługi dynamicznych obiektów biznesowych można znaleźć w dokumentacji dla tych obszarów.

Programowanie w aplikacjach

Schemat dynamicznego obiektu biznesowego zawiera tylko dane wymagane dla Persistence service. Do programowania w aplikacjach biznesowych konieczne są dalsze informacje, takie jak te wymagane do wyświetlania w interfejsie oraz do sprawdzania spójności wpisów.

Klasy wymagane do uzyskania dostępu do dynamicznych obiektów biznesowych znajdują się w przestrzeni nazw com.cisag.app.general.extension.

Nazwa schematu dynamicznego obiektu biznesowego, który przechowuje dodatkowe pola, jest generowana na podstawie nazwy obiektu biznesowego:

  1. Nazwa schematu zaczyna się od EXT.
  2. Następuje po niej nazwa obiektu biznesowego bez jego przestrzeni nazw.
  3. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część tej przestrzeni nazw jest wstawiana wielkimi literami pomiędzy EXT a nazwę obiektu biznesowego.
Przykład

Schemat Business object
EXTItem com.cisag.app.general.obj.Item
EXTPartner com.cisag.app.general.obj.Partner
EXTXYZBook com.xyz.app.general.obj.Book

Interfejs Persistence service

Interfejs programistyczny Persistence service jest podzielony na zarządzanie schematami dynamicznych obiektów biznesowych i dostęp do instancji. W większości aplikacji interfejs Persistence service nie jest używany bezpośrednio, lecz interfejs w przestrzeni nazw com.cisag.app.general.extension. Chociaż bezpośredni dostęp do Persistence service zapewnia lepszą wydajność ze względu na brak warstwy pośredniej, ma tę wadę, że nie można przechowywać żadnych informacji do wyświetlania lub sprawdzania atrybutów.

Tworzenie, zmiana i usuwanie schematów

Następujące klasy w przestrzeni nazw com.cisag.pgm.appserver są używane do zarządzania schematami:

Klasa Opis
com.cisag.pgm.appserver.CisDynamicObjectSchemaManager Menedżer schematów zarządza schematem dynamicznych obiektów biznesowych. Umożliwia tworzenie nowych dynamicznych obiektów biznesowych oraz zmianę lub usuwanie schematów istniejących dynamicznych obiektów biznesowych. Zapytania do menedżera schematów można wysyłać w środowisku CisEnvironment
com.cisag.pgm.appserver.CisDynamicObjectSchema Schemat zawiera wszystkie metadane opisujące dynamiczny obiekt biznesowy. Obejmuje następujące informacje:

  • Nazwa
  • Właściwości (np. Przechowywanie, Ustawienia buforowania)
  • Kluczowe informacje
  • Atrybuty
com.cisag.pgm.appserver.CisDynamicObjectSchemaColumn Kolumna zawiera metadane dla atrybutu dynamicznego obiektu biznesowego w schemacie.
com.cisag.pgm.appserver.CisDynamicObjectSchemaKeyColumn Kolumna klucza zawiera metadane dla atrybutu klucza dynamicznego obiektu biznesowego w schemacie.

Podczas zmiany i usuwania schematu, pełna wersja schematu jest zablokowana. Wszystkie inne sesje, które chcą uzyskać dostęp do odczytu lub zapisu do instancji dynamicznego obiektu biznesowego podczas zmiany, czekają na blokadę. Ponieważ zmiana schematu może być czasochłonna w zależności od systemu i rozmiaru obiektu dynamicznego, sesje oczekujące mogą otrzymać wyjątek przekroczenia limitu czasu.
W zależności od liczby instancji, dodawanie nowych atrybutów do schematu trwa znacznie dłużej, jeśli dla nowego atrybutu została zapisana wartość domyślna. Zmiany schematu trwają dłużej, gdy są zapisywane jako tabela bazy danych niż gdy są zapisywane jako BLOB.
Istnieją następujące typy dynamicznych obiektów biznesowych:

Typ Dynamicznego Obiektu Biznesowego Opis i Charakterystyka
Rozszerzenie obiektu Dynamiczne Obiekty Biznesowe typu Rozszerzenie Obiektu  są przypisane dokładnie jednemu Obiektowi Biznesowemu (Business Object).Rozszerzenia Obiektów mają ten sam klucz podstawowy co Obiekt Biznesowy, włączając w to validFrom (data obowiązywania), jeśli Obiekt Biznesowy jest zależny od czasu. Dla każdej instancji Obiektu Biznesowego może istnieć maksymalnie jedna instancja dynamicznego Obiektu Biznesowego. Rozszerzenia Obiektów muszą być zawsze przechowywane jako tabele bazy danych i można je łatwo dołączać (join) do Obiektu Biznesowego w języku OQL za pomocą klauzuli DYNAMIC_OBJECT JOIN.Rozszerzenia Obiektów są wykorzystywane na przykład dla „innych pól” i cech artykułów. Rozszerzenia Obiektów utworzone za pomocą interfejsów w przestrzeni nazw com.cisag.app.general.extension mają zazwyczaj taką samą nazwę (bez przestrzeni nazw) jak Obiekt Biznesowy, ale rozszerzoną o prefiks EXT. Na przykład EXTItem dla com.cisag.app.general.obj.Item.
Obiekt dynamiczny Dynamiczne Obiekty Biznesowe typu Obiekt dynamiczny są samodzielne (stoją same dla siebie).Obiekty dynamiczne nie są przypisane żadnemu Obiektowi Biznesowemu (Business Object) i mają Guid jako klucz podstawowy. Obiekty dynamiczne mogą być ładowane za pomocą tego Guid.Obiekty dynamiczne, które są przechowywane jako BLOB są wykorzystywane do przechowywania parametrów w produkcji.Jeśli schemat jest zapisany w tabelach bazy danych i wymaganych jest zbyt wiele tabel bazy danych, zawartość dynamicznego obiektu biznesowego jest kopiowana do nadmiarowego obiektu BLOB raz dla każdego schematu podczas jego generowania.

Jeśli dla atrybutów określono klasyfikacje, a dynamiczny obiekt biznesowy jest przechowywany nadmiarowo w BLOB, system sprawdza, do ilu tabel bazy danych są dystrybuowane atrybuty z tą samą klasyfikacją podczas generowania schematu. Jeśli atrybuty zostały niepotrzebnie rozmieszczone w zbyt wielu tabelach bazy danych, tabele bazy danych są usuwane, atrybuty są redystrybuowane, a zawartość tabel bazy danych jest odbudowywana z nadmiarowego BLOB.
Artykuł Właściwości ERP opisuje właściwości, za pomocą których można ustawić wartości progowe dla korzystania z nadmiarowego BLOB i regeneracji w oparciu o dystrybucję atrybutów.

Instrukcja zmiany schematu

Instrukcja zmiany schematu:

  1. Załadować schemat z menedżera schematów w celu jego modyfikacji lub utworzenie nowego schematu. Należy użyć jednej z metod getSchema, createSchema lub createExtensionSchema aby załadować lub utworzyć nowy schemat.
  2. Zmodyfikować lub rozszerzyć schemat. Schemat można modyfikować bezpośrednio. Modyfikacja schematu staje się trwała dopiero po jego wygenerowaniu.
  3. Wygenerować schemat za pomocą menedżera schematów. Schemat jest generowany przy użyciu metody aktualizacji w menedżerze schematów. Schemat jest generowany w oddzielnej transakcji najwyższego poziomu. Po jego wygenerowaniu można tylko tworzyć lub zmieniać instancje z nowym schematem.
Przykład tworzenia nowego schematu

Przykład tworzenia nowego schematu dla obiektu dynamicznego z atrybutem NAME typu String bez wartości domyślnej:

Przykład

CisEnvironment env =

CisEnvironment.getInstance();

CisDynamicObjectSchemaManager dosm =

env.getDynamicObjectSchemaManager();

// create schema

CisDynamicObjectSchema schema = dosm.createSchema(

"TestSchema",
CisDynamicObjectSchema.DataKind.MASTER_DATA,

CisDynamicObjectSchema.StorageType.STORAGE_BLOB,

CisDynamicObjectSchema.CacheStrategy.LRU);

// add attribute

schema.addColumn(
"NAME",
CisDynamicObjectSchema.DataType.STRING,

CisDynamicObjectSchema.Cardinality.VALUE,

(short)20,

null);

// generate schema

dosm.updateSchema(schema);

Dostęp do instancji

Instancje dynamicznych obiektów biznesowych mogą być ładowane poprzez CisObjectManager za pomocą metod getObject lub getObjectArray, zapisywane za pomocą putObject i usuwane za pomocą deleteObject, w taki sam sposób jak instancje obiektów biznesowych.
Następujące klasy w przestrzeni nazw com.cisag.pgm.datatype służą do uzyskiwania dostępu do instancji dynamicznych obiektów biznesowych:

Klasa Opis
com.cisag.pgm.datatype.CisDynamicObject Klasa CisDynamicObject reprezentuje instancję dynamicznego Obiektu Biznesowego.Klasa ta posiada metody Get i Set dla każdego typu danych, umożliwiające dostęp do atrybutów dynamicznego Obiektu Biznesowego. Atrybut jest identyfikowany przez swój Guid. Guid atrybutu powiązany z jego nazwą można sprawdzić (odpytać) na poziomie Schematu.Analogicznie do standardowych Obiektów Biznesowych, klasa CisDynamicObject posiada metody statyczne służące do:

  • Generowania kluczy dla Persistence service (metody Build...Key).
  • Odpytywania wszystkich instancji powiązanych z danym schematem (metoda retrieveInstances).
com.cisag.pgm.datatype.CisDynamicObjectCodeValue Atrybuty o typie lista wartości są zarządzane jako lista obiektów CisDynamicObjectCodeValue. Elementy takiej listy wartości składają się z 10-znakowego kodu oraz z wartości zgodnej z określonym typem danych. Za pomocą kodu można m.in. organizować (lub strukturyzować) elementy listy wartości.

Aby zmiany w Dynamicznych Obiektach Biznesowych mogły być rejestrowane w dzienniku zmian, zmieniona instancja dynamicznego Obiektu Biznesowego musi móc zostać przypisana do instancji Jednostki Biznesowej (Business Entity).

W przypadku Rozszerzeń Obiektów do jednostek biznesowych, relacja ta może zostać automatycznie utworzona. We wszystkich innych przypadkach relacja musi zostać jawnie ustawiona podczas modyfikacji dynamicznego Obiektu Biznesowego.

Relacja jest ustanawiana za pomocą metody:

void set_entityKey(byte[] entityTimeDependentKey)

Jeśli Jednostka (Entity) jest zależna od czasu, należy ustawić klucz podstawowy zależny od czasu; w przeciwnym razie — normalny klucz podstawowy na dynamicznym Obiekcie Biznesowym.

W dynamicznym Obiekcie Biznesowym można również ustawić Ciąg Instancji (InstanzString) za pomocą:

void set_instanceString(String instanceString)

Klucz Jednostki (Entity-Key) i Ciąg Instancji muszą zostać ustawione na instancji dynamicznego Obiektu Biznesowego zanim instancja zostanie przekazana do Menedżera Transakcji za pomocą metody putObject.

Dostęp za pomocą OQL

Dostęp do rozszerzeń obiektów można uzyskać za pośrednictwem Persistence service i za pomocą OQL. Jeżeli jest mowa o dynamicznych obiektach biznesowych w tym rozdziale, odnosi się to do rozszerzeń obiektów.
Dynamiczne obiekty biznesowe są traktowane podobnie do zwykłych obiektów biznesowych w OQL. Można utworzyć połączenie typu Left Outer Join między Obiektem Biznesowym a Dynamicznym Obiektem Biznesowym za pomocą słowa kluczowego OQL:

DYNAMIC_OBJECT

W klauzuli ON porównywane są tylko aliasy.
Obiekt biznesowy można połączyć tylko z rozszerzeniem obiektu należącym do tego obiektu biznesowego za pomocą sprzężenia. Na przykład można połączyć com.cisag.app.general.obj.Partner z rozszerzeniem obiektu EXTPartner, ale nie z rozszerzeniem obiektu EXTCustomer, które należy do obiektu biznesowego com.cisag.app.sales.obj.Customer.

Techniczne nazwy atrybutów dynamicznego Obiektu Biznesowego mogą być używane bezpośrednio w OQL.

  • Jeśli atrybut dynamicznego Obiektu Biznesowego jest typu Klucz Podstawowy, można uzyskać dostęp do atrybutów klucza podstawowego referencyjnej Jednostki Biznesowej (Business Entity) za pomocą kropki (.), np. PARTNER.guidJeśli atrybut ma typ danych Part, np. Ilość, Kwota, to do atrybutów tej Parts można uzyskać dostęp jak zwykle, również za pomocą kropki (.), np. QUANTITY.amount.

W przypadku List Wartości można użyć nazwy pola listy wartości w nawiasach za nazwą dynamicznego Obiektu Biznesowego podczas operacji join (połączenia). W takim przypadku to nie tabela dynamicznego Obiektu Biznesowego, lecz tabela Listy Wartości jest łączona z Jednostką Biznesową (Business Entity).

Atrybut _code zawiera kod z listy wartości. Za pomocą kodu można na przykład sortować. Wartości Listy Wartości można odpytywać tak samo jak w przypadku atrybutów typu Wartość, jednak atrybut _code musi być ujęty w cudzysłowy.

Więcej informacji można znaleźć w artykule: Składnia OQL.

Przykład
Dynamiczny obiekt biznesowy EXTPartner zawiera pozostałe pola podmiotu biznesowego Partner. EXTPartner ma następujące pola:

Pole Opis
MY_STR Pole przechowujące pojedynczą wartość typu Tekst.
MY_PARTNER Pole przechowujące pojedynczą wartość typu Jednostka Biznesowa (referencja do obiektu biznesowego).
MY_QUANTITY Pole przechowujące pojedynczą wartość typu Ilość (wartość numeryczna z jednostką).
MY_STR_LIST Pole przechowujące listę wartości typu Tekst.
MY_PARTNER_LIST Pole przechowujące listę wartości typu Jednostka Biznesowa (lista referencji).
MY_QUANTITY_LIST Pole przechowujące listę wartości typu Ilość.

Dostęp do atrybutów typu value można uzyskać w następujący sposób:
SELECT p:guid, pe:MY_STR, pe:MY_PARTNER.guid, pe:MY_QUANTITY.amount

FROM com.cisag.app.general.partner p DYNAMIC_OBJECT JOIN

EXTPartner pe ON p=pe

Dostęp do atrybutów typu listy wartości można uzyskać w następujący sposób:
SELECT p:guid, pe:"_code", ep:MY_STR_LIST

FROM com.cisag.app.general.partner p DYNAMIC_OBJECT JOIN

EXTPartner(MY_STR_LIST) pe ON p=pe

SELECT p:guid, pe:"_code", pe:MY_PARTNER_LIST.guid

FROM com.cisag.app.general.partner p DYNAMIC_OBJECT JOIN

EXTPartner(MY_PARTNER_LIST) pe ON p=pe

SELECT p:guid, pe:"_code",

pe:MY_QUANTITY_LIST.uom, pe:MY_QUANTITY_LIST.amount

FROM com.cisag.app.general.partner p DYNAMIC_OBJECT JOIN

EXTPartner(MY_QUANTITY_LIST) pe ON p=pe

Czy ten artykuł był pomocny?