Składnia podpowiedzi
Omawiane tematy
Formatowanie tytułu odwzorowania danych wejściowych
Uwzględnianie fragmentu odwzorowania
Wyzwalanie zachowania zależnego
Kontrolowanie wartości docelowej renderowania
Generowanie obszaru tekstowego
Modyfikowanie wartości domyślnych odwołania do klucza obcego
Praktyczne przykłady
Praktyczne przykłady funkcji uiHint można znaleźć w następujących obiektach biznesowych:
Obiekty biznesowe z kluczami przydzielonymi przez użytkownika
Poniższe przykłady stanowią ilustrację wzorców używanych do włączania elementów uiHint w obiekcie z kluczem przydzielonym przez użytkownika.
- F1-OutcomeStyleLookup. Ten obiekt biznesowy rozszerzanej listy wartości nie wymaga zmiany stanu, ale zezwala na powielanie i kasowanie czynności.
- F1-TodoSumEmailTyp. Ten typ żądania ilustruje podpowiedzi wymagane do obsługi zmiany stanu w odwzorowaniu wyświetlania.
- F1-WebSvc. Ten obiekt biznesowy usługi WWW to dobry przykład zarządzania złożonymi wymaganiami JavaScript. Zarówno odwzorowania wyświetlania, jak i odwzorowania danych wejściowych zawierają funkcję wymagającą specjalistycznego skryptu JavaScript.
Obiekt biznesowy z kluczem generowanym systemowo
Poniższy przykład stanowi ilustrację wzorca używanego do włączania elementów uiHint w obiekcie z kluczem generowanym systemowo.
-
F1-GenericAttachment. Ten obiekt biznesowy załącznika zawiera klucz przydzielony systemowo, wymuszający następującą obsługę specjalną:
- F1-AttachmentMain. Jest to obszar danych sekcji głównej zawierający elementy wspólne dla wszystkich załączników, w tym klucz, obiekt biznesowy i wersję. Ponieważ ten obszar danych jest używany do definiowania sekcji głównej generowanych odwzorowań, sekcję główną odwzorowania można rozszerzyć poprzez wdrożenie za pośrednictwem funkcji rozszerzenia obszaru danych.
- F1-AttachmentActions. To odwzorowanie czynności rekordu zawiera czynności standardowe (edytowanie i kasowanie), a także czynności niestandardowe używane tylko w załącznikach (wyświetlanie i ładowanie).
- F1-AttachmentIDFrag. To odwzorowanie informacji rekordu zawiera klucz główny załącznika.
Skrypt usługi odwzorowania wyświetlania
Skrypty usługi odwzorowania wyświetlania mogą być w pełni obsługiwane poprzez dynamiczne generowanie HTML. Jednakże, aby pomóc w wyeliminowaniu potrzeby skryptu usługi wyświetlania, opracowano autonomiczną funkcję uiHint w celu zapisania statusu obiektu biznesowego i określenia prawidłowych zmian stanu. W ten sposób wyeliminowano dwie najczęściej spotykane przyczyny opracowania skryptu usługi wyświetlania.
Częstą przyczyną korzystania z wstępnego skryptu wyświetlania jest sytuacja, gdy użytkownik dysponuje osadzonym fragmentem odwzorowania zawierającym schemat usługi biznesowej. Skrypt usługi wyświetlania może być wykorzystywany do wywoływania usługi biznesowej. Zarówno fragment odwzorowania, jak skrypt usługi wyświetlania muszą w celu obsługi tego scenariusza deklarować schemat usługi biznesowej.
- F1-ExcelSpreadsheet. Ten obiekt biznesowy załącznika zawiera skrypt usługi wyświetlania służący do manipulowania obiektem biznesowym załącznika przed jego wyświetleniem:
- F1-AttchDtlU. Ten schemat skryptu usługi odwzorowania wyświetlania został określony z obszarem nazw uiHint i zostanie dla niego wygenerowane odwzorowanie wyświetlania.
Skrypt usługi przetwarzania wstępnego obsługi
Z elementami uiHint może być użyty skrypt usługi przetwarzania wstępnego obsługi.
- F1-ExcelSpreadsheet. Ten obiekt biznesowy załącznika zawiera skrypt usługi przetwarzania wstępnego obsługi służący do manipulowania obiektem biznesowym załącznika przed wykonaniem renderowania odwzorowania obsługi:
- F1-AttchPre. Ten schemat skryptu usługi przetwarzania wstępnego naśladuje schemat odwzorowania obsługi z wbudowaną grupą obiektów biznesowych i elementami czynności. Zostanie on wywołany przed wykonaniem renderowania odwzorowania obsługi.
Skrypt usługi przetwarzania końcowego obsługi
Z elementami uiHint może być użyty skrypt usługi przetwarzania końcowego obsługi.
- F1-ExcelSpreadsheet. Ten obiekt biznesowy załącznika zawiera skrypt usługi przetwarzania końcowego obsługi służący do manipulowania obiektem biznesowym załącznika po wykonaniu renderowania odwzorowania obsługi:
- F1-AttchPost. Ten schemat skryptu usługi przetwarzania końcowego naśladuje schemat odwzorowania obsługi z wbudowaną grupą obiektów biznesowych i elementami czynności. Zostanie on wywołany po wykonaniu renderowania odwzorowania obsługi.
Uwagi techniczne
Aby skonfigurować obsługę dynamicznego generowania HTML, należy spełnić następujące warunki wstępne:
Wymagania schematu
Aby obsługiwać zautomatyzowane generowanie interfejsu użytkownika, schemat obiektu biznesowego musi zawierać następujące elementy:
- <schema xmlns:uiHint="http://oracle.com/ouafUIHints">. Węzeł schematu musi nazywać obszar nazw uiHint.
- isPrimeKey="true". Należy określić każdy element schematu obiektu biznesowego będący częścią klucza głównego.
Wymagania skryptu obsługi
Skrypt obsługi obiektu obsługi musi być włączony na potrzeby generowania dynamicznego.
Jeśli skrypt wykonuje F1-BOProc, wówczas prawdopodobnie żadna funkcja specjalna nie jest potrzebna. Jednakże, jeśli skrypt obsługi zawiera własne wywołanie do F1-GetValOpt, wówczas przed tym wywołaniem wymagana jest następująca instrukcja:
move 'false' to "F1-GetBOOpts/input/maintenanceMapRequired";
performScript 'F1-GetValOpt';
Po wywołaniu do F1-GetValOpt, jeśli obiekt biznesowy nie zawiera własnego odwzorowania obsługi, należy uwzględnić następującą logikę w celu dynamicznego zadeklarowania schematu odwzorowania:
// Perform Main Processing
if ("F1-GetBOOpts/output/maintenanceMap = $BLANK")
declareBOWithBOGroup "$bo" as 'map_schema';
else
declareMap "F1-GetBOOpts/output/maintenanceMap" as 'map_schema';
end-if;
Formatowanie tytułu odwzorowania danych wejściowych
Do utworzenia tytułu odwzorowania obsługi może być użyty element uiHint. Tytuł będzie drukowany tylko na odwzorowaniu obsługi, nie na odwzorowaniu wyświetlania. Zostanie on wydrukowany jako pierwsza linia w odwzorowaniu, wyrównany do środka, ze stylem nagłówka.
Składnia | Opis | Przykłady |
---|---|---|
<uiHint:title mdField=" "/> |
Służy do wyświetlania etykiety pola metadanych, do którego istnieje odwołanie, jako tytułu. |
|
<uiHint:title text=" "/> |
Służy do wyświetlania wskazanego tekstu jako tytułu. (Nie należy używać tego mechanizmu w przypadku obsługi wielu języków). |
|
Tworzenie sekcji
Przestrzeń nazw uiHint obsługuje definicję sekcji odwzorowania interfejsu użytkownika. Należy pamiętać, że jeśli schemat zawiera węzeł grupy lub listy z etykietą albo polem mdField, sekcje są obecnie tworzone w wygenerowanych odwzorowaniach interfejsu użytkownika. Opisana tutaj funkcja służy do włączania tworzenia sekcji bez wymagania węzła grupy lub listy z etykietą w obrębie schematu. Każda sekcja musi być ograniczona przez parę elementów startSection i endSection.
Składnia | Atrybuty dodatkowe | Opis |
---|---|---|
<uiHint:startSection .../> |
sectionColumn="left | right | fullWidth | float" |
Domyślnie sekcja będzie miała pełną szerokość w odwzorowaniach wyświetlania. Aby przesłonić to ustawienie, należy określić, czy sekcja o szerokości o połowę mniejszej ma być wyświetlana w lewej (left) lub prawej (right) kolumnie albo jako element ruchomy (float). Sekcje oznaczone jako "ruchome" będą wyświetlane w szerokości mniejszej o połowę i będą wyrównane w zależności od tego, czy poprzednie sekcje są wyświetlane, czy też warunkowo ukryte. Na przykład, jeśli po sekcji wyrównanej do lewej występuje sekcja ruchoma, wówczas sekcja ruchoma pojawi się w prawej kolumnie, jeśli lewa sekcja będzie wypełniona, natomiast jeśli lewa sekcja będzie ukryta/zwinięta, sekcja ruchoma pojawi się w lewej kolumnie. |
editColumn="left | right | fullWidth | float" |
Domyślnie sekcja jest wyświetlana w pełnej szerokości w odwzorowaniach obsługi. Aby przesłonić to ustawienie, należy określić, czy sekcja o szerokości o połowę mniejszej ma być wyświetlana w lewej (left) lub prawej (right) kolumnie albo jako element ruchomy (float). Jest to zachowanie analogiczne do zachowania atrybutu sectionColumn. | |
sectionOpen="false" |
Domyślnie podczas pierwszego wyświetlania sekcja jest otwarta. Należy określić ten atrybut, aby początkowo wyświetlać sekcję jako zamkniętą (zwiniętą). | |
mdField=" " |
Należy określić nazwę pola metadanych, którego etykieta powinna być używana jako nagłówek sekcji. | |
label=" " |
Należy określić konkretny tekst do używania jako nagłówek sekcji. | |
visibleOn="displayMap | inputMap" |
Domyślnie sekcja jest wyświetlana zarówno w odwzorowaniu wyświetlania, jak i odwzorowaniu danych wejściowych. Należy użyć tego atrybutu, aby ograniczyć wyświetlanie sekcji do odwzorowania wyświetlania (displayMap) lub odwzorowania danych wejściowych (inputMap). |
Składnia atrybutu sekcji końcowej to <uiHint:endSection/>
Przykłady:
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<uiHint:startSection label="Main" sectionColumn="left"/>
...
<uiHint:endSection/>
</schema>
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<uiHint:startSection mdField="F1-ADD-INFO" sectionColumn="fullWidth" editColumn="float" sectionOpen="false" visibleOn="displayMap"/>
...
<uiHint:endSection/>
</schema>
Uwzględnianie fragmentu odwzorowania
Można określić fragment odwzorowania interfejsu użytkownika, aby dostarczyć HTML do wygenerowanego odwzorowania przy użyciu nazwy elementu includeMap. Pozwala to na obsługę bardziej zaawansowanego zachowania w interfejsie użytkownika. W odniesieniu do każdego elementu uwzględnionego na potrzeby renderowania we fragmencie odwzorowania należy koniecznie pominąć element w jego definicji schematu, w przeciwnym razie dla elementu zostanie automatycznie wygenerowany kod HTML.
Składnia | Atrybuty dodatkowe | Opis |
---|---|---|
<uiHint:includeMap .../> |
map=" " |
Należy określić nazwę odwzorowania. |
visibleOn="displayMap | inputMap" |
Domyślnie szczegóły z fragmentu odwzorowania są wyświetlane zarówno w odwzorowaniu wyświetlania, jak i odwzorowaniu danych wejściowych. Należy użyć tego atrybutu, aby ograniczyć wyświetlanie sekcji. |
Przykład:
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<uiHint:includeMap map="StandardActionButtons" visibleOn="displayMap"/>
...
</schema>
Jeśli w obrębie fragmentu odwzorowania interfejsu użytkownika XHTML wymagany jest JavaScript, należy powiązać go w obrębie znacznika ![CDATA[ ]] celem zapewnienia prawidłowego dokumentu XML. Należy pamiętać, że może wystąpić konieczność wykomentowania samych znaczników, aby ułatwić zachowanie zgodności ze starszymi przeglądarkami. Na przykład:
<script type="text/javascript">
/* <![CDATA[ */
//
//javascript
//
/* ]]> */
</script>
Czyszczenie bufora: Ze względu na wydajność na platformie Framework wykonywane jest automatyczne buforowanie schematów obiektów biznesowych, obszarów danych i odwzorowań interfejsu użytkownika. Podczas aktualizacji obiektu biznesowego bufor jest automatycznie czyszczony. Jednakże, jeśli obiekt biznesowy zawiera obszar danych lub osadzony fragment odwzorowania interfejsu użytkownika, bufor należy wyczyścić ręcznie, aby zmiany zostały rozpoznane. Więcej informacji zawiera sekcja Bufor serwera.
Tworzenie listy rozwijanej
Udostępniona jest składnia umożliwiająca tworzenie listy rozwijanej w odwzorowaniu edycji. Listę rozwijaną można utworzyć przy użyciu danych zwróconych ze skryptu usługi, usługi biznesowej lub tabeli.
Składnia | Opis |
---|---|
uiHint:select="ss: " |
Należy określić nazwę skryptu usługi po dwukropku. |
uiHint:select="bs: " |
Należy określić nazwę usługi biznesowej po dwukropku. |
uiHint:select="table: " |
Należy określić nazwę tabeli po dwukropku. |
Podczas określania skryptu usługi lub usługi biznesowej, aby przekazywać dane do/z usługi potrzebne są dodatkowe informacje dotyczące tworzenia odwzorowania.
Składnia | Wartości | Opis |
---|---|---|
uiHint:selectIn=" " |
serviceXPath:element | Używane do przekazywania wartości innego elementu do usługi (odwzorowanie do ścieżki XPath usługi). |
serviceXPath:'Literal' | Używane do przekazywania stałej lub literału do usługi (odwzorowanie do ścieżki XPath usługi). | |
uiHint:selectOut="valuePath: ; descPath: " |
Przykłady zamieszczono poniżej. | Używane do określania, który element w danych wyjściowych usługi zawiera wartości, a który opisy. |
Przykłady:
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<boStatus mapField="BO_STATUS_CD" uiHint:select="bs:F1-BOStateReasonList"
uiHint:selectIn="boStatusBO:boStatusBO" uiHint:selectOut="valuePath:results/status;
descPath:results/description"/>
...
<algorithm mdField="ALG_CD" uiHint:select="bs:F1-RetrieveSysEvtAlgorithms"
uiHint:selectIn="algorithmEntity:'F1AA';" uiHint:selectOut="valuePath:results/algorithm;
descPath:results/description"/>
...
<outboundMsgType mdField="OUTMSG_TYPE_CD" required="true" fkRef="F1-OMTYP" uiHint:select="table:F1_OUTMSG_TYPE"/>
</schema>
Warunkowe ukrywanie elementów
Atrybut displayNone jest używany do pomijania elementów w odwzorowaniu w oparciu o warunki.
Składnia | Wartości | Opis |
---|---|---|
uiHint:displayNone= |
"'XPath','value','!=' | '='" | Używane do warunkowego ukrywania tego elementu na podstawie wartości innego elementu (z odwołaniem przy użyciu jego ścieżki XPath). Aby sprawdzać wartość pustą, należy wprowadzić wartość ' '. Domyślnie operator to '='. Można to przesłonić wartością '!='. |
"function name, true | false" | Używane do określania funkcji JavaScript, która musi zwrócić wartość logiczną. |
W przypadku tego atrybutu w obrębie wartości ciągu rozdzielonych przecinkami nie są obsługiwane osadzone spacje.
To ustawienie może zostać użyte w węzłach grup, węzłach list i elementach - z wyjątkiem elementów w obrębie listy. Elementy w obrębie listy nie mogą zostać ukryte warunkowo.
Na poniższym przykładzie pokazano, że dwa elementy (odwołanie do waluty i lista wartości) zostaną ukryte lub wyświetlone na podstawie wartości elementu typu danych. Należy zauważyć, że przykład ten stanowi również ilustrację wyzwalania zachowania zależnego, ponieważ wartość elementu typu danych może ulec zmianie i w takim przypadku należy przeprowadzić ponowną ocenę warunku ukrywania kolejnych elementów.
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<dataType mdField="F1_SE_DATA_TYPE" dataType="lookup" lookup="F1_SE_DATA_TYPE"
uiHint:dependents="currencyRef;lookup; "/>
<currencyRef mdField="F1_SE_CURR_REF_LBL" uiHint:displayNone="'dataType','F1MO','!='"/>
<lookup mdField="F1_SE_LOOKUP_LBL" fkRef="F1-LKUPF" uiHint:displayNone="'dataType','F1LP','!='"/>
...
</schema>
Poniższy przykład stanowi ilustrację odwołania do funkcji, gdy funkcja otrzymuje parametry:
<uiHint:startSection mdField="F1_SE_DEFAULT_SECT"
uiHint:displayNone="isApplicableForSchemaType(item,'F1MP'),true"/>
Warunkowa ochrona elementów
Atrybut ochrony jest używany do ochrony elementów w odwzorowaniu w oparciu o inne czynniki.
Składnia | Wartości | Opis |
---|---|---|
uiHint:protect= |
"'XPath','value','!=' | '='" | Używane do warunkowej ochrony tego elementu na podstawie wartości innego elementu (z odwołaniem przy użyciu jego ścieżki XPath). Aby sprawdzać wartość pustą, należy wprowadzić wartość ' '. Domyślnie operator to '='. Można to przesłonić wartością '!='. |
"function name, true | false" | Używane do określania funkcji JavaScript, która musi zwrócić wartość logiczną. | |
"'action','A' | 'C','!=' | '='" |
Do ochrony elementu w oparciu o bieżącą czynność należy użyć ustawienia 'action'. Na przykład niektóre elementy można określić tylko podczas dodawania rekordu. Wszelkie dalsze zmiany rekordu powinny chronić element przed zmianą. Podczas korzystania z tej opcji prawidłowymi wartościami dla pozycji 'value' są A (dodaj) i C (zmień). |
W przypadku tego atrybutu w obrębie wartości ciągu rozdzielonych przecinkami nie są obsługiwane osadzone spacje.
Ochrona podpowiedzi może zostać użyta w węzłach grup, węzłach list i elementach - z wyjątkiem elementów w obrębie listy. Elementy w obrębie listy nie mogą być chronione warunkowo.
W przypadku czynności 'C' poniższa podpowiedź będzie chronić kategorię statystyk.
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<statisticsCategory dataType="lookup" mapField="STAT_CATEGORY_FLG"
lookup="STAT_CATEGORY_FLG" uiHint:protect="'action','C','='"/>
...
</schema>
Wyzwalanie zachowania zależnego
Atrybut zależności jest używany do wyzwalania zachowania dotyczącego elementu podrzędnego w przypadku zmiany elementu nadrzędnego.
Składnia | Wartości |
---|---|
uiHint:dependents=" " |
Lista elementów zależnych rozdzielonych przecinkami. |
Na poniższym przykładzie pokazano, że lista rozwijana jednego elementu jest zależna od wartości innego elementu. W tym przykładzie w przypadku zmiany kraju lista województw/stanów do wyboru powinna zmienić się w taki sposób, aby były na niej wyświetlane tylko województwa/stany danego kraju.
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<country label="Country" uiHint:select="table:CI_COUNTRY" uiHint:dependents="state"/>
<state label="State" uiHint:select="ss:CM-RetrieveCountryStates"
uiHint:selectIn="input/country:country;" uiHint:selectOut="valuePath:output/state/stateCode;
descPath:output/state/stateDesc"/>
...
</schema>
Docelowe elementy zależne mogą być tylko nazwami elementów, nie węzłów grup ani list.
Nie należy modyfikować wartości atrybutu "id" elementu zależnego i nadrzędnego. Na wartości atrybutu "id" oparte jest wprowadzanie danych w elemencie zależnym.
Kontrolowanie wartości docelowej renderowania
Domyślnie wszystkie niepominięte elementy są wyświetlane zarówno w odwzorowaniu wyświetlania, jak i odwzorowaniu danych wejściowych. Należy użyć atrybutu visibleOn, aby ograniczyć uwzględnianie elementu do odwzorowania wyświetlania lub odwzorowania danych wejściowych.
Składnia | Wartości |
---|---|
uiHint:visibleOn= |
"displayMap" |
"inputMap" |
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<uiHint:includeMap map="StandardActionButtons" visibleOn="displayMap"
...
</schema>
Generowanie obszaru tekstowego
Domyślnie w odwzorowaniu danych wejściowych dla każdego elementu ciągu renderowane jest standardowe pole tekstowe. Jeśli pole jest większe i potrzebny jest większy obszar tekstowy (z paskiem przewijania), należy użyć atrybutu textArea.
Składnia |
---|
uiHint:textArea="true" |
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<message label="Message" uiHint:textArea="true"/>
...
</schema>
Modyfikowanie wartości domyślnych odwołania do klucza obcego
Domyślnie podczas wyświetlania elementu z fkRef włączone są ciąg informacji, menu kontekstowe, przechodzenie i wyszukiwanie (jeśli odpowiednio skonfigurowano odwołanie do klucza obcego). Udostępniono składnię umożliwiającą wybiórcze wyłączanie dowolnych z tych funkcji.
Składnia |
---|
uiHint:fkRef="info:false;context:false;navigation:false;search:false;" |
Należy określić tylko cechę, która powinna zostać wyłączona. Na poniższym przykładzie pokazano wyłączenie funkcji przechodzenia, co oznacza, że tekst nie będzie renderowany jako hipertekst.
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<attachmentID fkRef="F1-ATTCH" primeKey="true" suppress="input" uiHint:fkRef="navigation:false;"/>
...
</schema>
Pomijanie automatycznego formatowania liczb
Domyślne pola numeryczne (dataType="number") są formatowane jako liczby. Udostępniony jest atrybut umożliwiający zastosowanie w zamian formatowania alfanumerycznego.
Uwaga: Jeśli nie określono jednoznacznie wartości dataType, zostaną one wyznaczone na podstawie pól mdField lub mapField.
Składnia |
---|
uiHint:alphaFormat="true|false" |
Domyślnie ich wartość to false (dlatego nie można w ogóle ich nie uwzględniać).
Przykłady:
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<numberCount mdField="" dataType="number" uiHint:alphaFormat="true"/>
...
</schema>
Automatyczne pisanie danych wejściowych wielkimi literami
W funkcji uiHint udostępniono składnię umożliwiającą automatyczne pisanie danych wejściowych wielkimi literami.
Składnia |
---|
uiHint:capitalize="true|false" |
Domyślnie ich wartość to false (dlatego nie można w ogóle ich nie uwzględniać).
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<toDoTypeCd mdField="TD_TYPE_CD" uiHint:capitalize='true' isPrimeKey="true"/>
</schema>
Jest on dostępny tylko w projektancie schematów, gdy pozycja isPrimeKey jest ustawiona na wartość true. Korzystając z przeglądarki źródła, można dodać ten atrybut do dowolnego elementu ciągu.