Węzły i atrybuty schematu

W przypadku definicji obiektu biznesowego, celem schematu jest tworzenie łącza pomiędzy schematem a obiektem obsługi. Dla definicji usługi biznesowej określa się łącze pomiędzy schematem a usługą (usługą ogólną, usługą wyszukiwania lub usługą obiektu obsługi). W przypadku definicji skryptu usługi, definiuje się interfejs APO do przekazywania informacji ze skryptu i do skryptu. Ta dokumentacja zawiera pełną listę węzłów i atrybutów XML dostępnych podczas tworzenia schematu.

Omawiane tematy

Cztery typy elementów

Typ danych elementu pola

Odwołania do innych elementów

Uwagi dot. czasu standardowego

Atrybuty mapowania

Atrybuty opisowe

Stałe schematu

Ustawianie wartości domyślnych i zmienne systemowe

Węzły i atrybuty spłaszczania

Strefa wyszukiwania

Rozszerzenie zabezpieczeń na skrypt usługi

Czynność nadpisania usługi biznesowej

Określanie atrybutu searchBy dla usługi wyszukiwania

Uwzględnianie innych schematów

Atrybuty zgodności

Cztery typy elementów

Element schematu może należeć do jednego z czterech różnych typów struktur. Należy pamiętać, że są dostępne dwie klasy typów elementów: Grupa i lista węzłów strukturalnych oraz dane zawierające węzły pola oraz wartości niesformatowane.

Mnemonik Poprawne wartości Opis Przykłady
type= "field"

Typ pola to domyślny typ dla dowolnego elementu nieoznaczonego jawnie jako coś innego niż pole. W związku z tym praktycznie nigdy nie jest wymagane jawne oznaczanie elementu jako pola. Należy pamiętać, że element pola, w przeciwieństwie do grupy lub listy, będzie zawierał informacje na temat własnych węzłów, a nie innych węzłów.

"group"

Element grupy jest zazwyczaj elementem strukturalnym tylko schematu i w takim przypadku nie ma on odwzorowania.

Należy pamiętać, że podczas grupowania wielu elementów używanych do odwzorowywania struktury XML pola CLOB/XML rekordu bazującego na obiekcie biznesowym, odwzorowanie może występować na poziomie grupy.

Przykład tworzenia struktury przy użyciu grupy:

<schema>
  <input type="group"
    <userId/>
  </input>
  <output type="group">
    <firstName/>
    <lastName/>
  </output>
</schema>

Przykład, w którym grupa zawiera odwzorowanie:

<parameters type="group" 
mapXML="BO_DATA_AREA" mdField=
"F1_TODOSUMEMAIL_PARM_LBL"/>
  <numberOfDays 
  mdField="F1_NBR_DAYS" 
  required="true"/>
  <frequency 
   mdField="F1_FREQUENCY"/>
"list"

Węzeł listy jest węzłem strukturalnym, tak jak węzeł grupy. Jedyna różnica polega na tym, że struktura listy ma możliwość wielokrotnego powtarzania w ramach dokumentu XML.

Przykład schematu z listą:

<schema>
  <statesList type="list">
    <state isPrimeKey="true"/>
    <description/>
  </statesList>
</schema>

Przykład schematu z listą:

<xml>
  <statesList>
    <state>AK</state>
    <description>Alaska</description>
  </statesList>
  <statesList>
    <state>AL</state>
    <description>Alabama</description>
  </statesList>
...
</xml>
"raw"

Typ danych nieprzetworzonych używany do pobierania części nieprzetworzonego tekstu, który nie ma właściwej struktury powiązanej ze sobą.

<sendDetail type="raw" />

Przykład wystąpienia XML dla powyższego schematu:

<sendDetail>
  <messageInfo>
    <senderAddress>123 W. Main St,    Ontario, CA
    </senderAddress>
    <corpZone>3A</corpZone>
  </messageInfo>
</sendDetail>

Typ danych elementu pola

Spośród czterech różnych typów elementów, tylko pole może mieć typ danych.

Mnemonik Poprawne wartości Opis Przykłady
dataType= "string"

Domyślnie element pola jest ciągiem znaków. Dlatego nie jest wymagane określenie typu danych "ciąg znaków".

<schema>
  <custName dataType="string"/>
</schema>
"number"

Służy do definiowania elementu, który jest liczbą.

Uwaga: Wskazówki dot. interfejsu użytkownika zawierają ustawienie umożliwiające Pomijanie automatycznego formatowania liczb.
Uwaga: Należy używać atrybutu currencyRef na potrzeby automatycznego wyświetlania symbolu waluty, powiązanego z kodem waluty, do którego istnieje odwołanie. Pozycje dziesiętne waluty są ignorowane w ramach tego formatowania, dzięki czemu można wyświetlać symbol waluty dla kursu jednostki z wieloma miejscami dziesiętnymi.

Przykłady

<schema>
  <count dataType="number"/>
</schema>
<schema>
  <taxRate dataType="number" 
   currencyRef="currency"/>
</schema>
"money"

Opcjonalne atrybuty dodatkowe

currencyRef="element name"

Służy do definiowania elementu, który odzwierciedla kwotę pieniężną.

Odwołanie do waluty jest opcjonalne, a jeśli pozostanie puste zostanie użyta waluta podana podczas instalacji. Automatyczne formatowanie i walidacja do zastosowania na podstawie waluty. Na przykład symbol waluty zostanie pokazany podczas automatycznego renderowania. Ponadto, liczba miejsc dziesiętnych nie może przekraczać prawidłowej liczby zdefiniowanej dla waluty.

Uwaga: Więcej informacji na temat obsługiwanej składni dotyczącej odwoływania się do innych elementów można znaleźć w sekcji Odwołania do innych elementów.
<schema>
  <currency default="USD" 
    suppress="true"/>
  <balance dataType="money" 
   currencyRef="currency"/>
</schema>
"lookup"

Wymagany dodatkowy atrybut

lookup="field name"

Służy do definiowania elementu, który ma prawidłowe wartości zdefiniowane za pomocą listy wartości. Pole listy wartości jest wymagane.

<schema>
  <status dataType="lookup" 
   lookup="STATUS_FLG"/>
</schema>
"lookupBO"

Wymagany dodatkowy atrybut

lookupBO="bo name"

Służy do definiowania elementu, który ma prawidłowe wartości zdefiniowane za pomocą rozszerzanej listy wartości. Obiekt biznesowy rozszerzanej listy wartości jest wymagany.

<schema>
  <category dataType="lookupBO" 
   lookupBO="CM-BusinessCategory"/>
</schema>
"boolean"

Służy do definiowania elementu o wartościach "Y" i "N".

<schema>
  <allowsEdit dataType="boolean"/>
</schema>
"date"

Służy do definiowania elementu, który odzwierciedla datę.

<schema>
  <startDate dataType="date"/>
</schema>

"dateTime"

Służy do definiowania elementu, który odzwierciedla datę i godzinę.

Uwaga: Więcej informacji o dodatkowej konfiguracji pól daty/godziny odzwierciedlających standardowy czas można znaleźć w sekcji Uwagi dot. czasu standardowego.
<schema>
  <startDateTime 
  dataType="dateTime"/>
</schema>
"time"

Służy do definiowania elementu, który odzwierciedla godzinę.

<schema>
  <startTime dataType="time"/>
</schema>
"uri"

Służy do definiowania elementu przechwytującego identyfikator URI. Elementy zdefiniowane za pomocą tego typu umożliwiają obsługę listy dozwolonych identyfikatorów URI i zastępowania identyfikatorów URI zgodnie z opisem w sekcji Odwołania do identyfikatorów URI .

<schema>
  <exportDirectory dataType="uri"/>
</schema>

Odwołania do innych elementów

Dostępnych jest kilka atrybutów, które umożliwiają odwoływanie się do innego elementu w tym samym schemacie. Obsługiwana składnia odwołania XPath jest zawsze taka sama. W tej sekcji znajdują się przykłady zastosowania domyślnego atrybutu odwołania (defaultRef).

Odwołanie do elementu na tym samym poziomie:

<schema>
   <id mapField="ACCT_ID" required="true"/>
   <altId defaultRef="id" required="true"/>
</schema>

Odwołanie do elementu w wyższej grupie:

<schema>
   <id mapField="ACCT_ID" required="true"/>
   <msgInfo type="group" mapXML="XML_FIELD">
     <altId defaultRef="../id" required="true"/>
   </msgInfo>
</schema>

Odwołanie do elementu w niższej grupie:

<schema>
   <id mapField="ACCT_ID" defaultRef="msgInfo/altId" required="true"/>
   <msgInfo type="group" mapXML="XML_FIELD">
     <altId required="true"/>
   </msgInfo>
</schema>

Odwołanie do elementu w innej grupie:

<schema>
  <acctInfo type="group">
    <id mapField="ACCT_ID" required="true"/>
  </acctInfo>
   <msgInfo type="group" mapXML="XML_FIELD">
     <altId defaultRef="../acctInfo/altId" required="true"/>
   </msgInfo>
</schema>

Uwagi dot. czasu standardowego

Większość pól daty/czasu odzwierciedla czas "prawny", to znaczy czas zgodny ze zmianą czasu na letni/zimowy w danej strefie czasowej, pokazując w polu aktualnie obowiązującą datę/godzinę. Istnieją jednak pola daty/godziny, które powinny zawsze pokazywać czas standardowy w celu zapobiegania nieporozumieniom i dwuznaczności. Dobrym przykładem są data i godzina powiązane ze szczegółowymi danymi interwału. Więcej informacji zawiera sekcja Projektowanie stref czasowych.-

Podczas definiowania elementu za pomocą dataType="dateTime" można opcjonalnie skonfigurować stdTime="true", co oznacza, że pobierane przez element dane będą zawsze odzwierciedlać czas standardowy w "podstawowej" strefie czasowej. "Podstawową" strefę czasową określa się w Opcjach instalacji.

Uwaga: Jeśli element jest odwzorowany do tabeli/pola z czasem standardowym o typie Fizyczny, zakłada się wartość stdTime="true". Więcej informacji zawiera sekcja Pola.

Przykład:

<schema>
  <startTime dataType="Time" stdTime="true"/>
</schema>

Jeśli strefa czasowa odzwierciedlająca pole daty/godziny nie jest strefą czasową instalacji, należy użyć opcjonalnego ustawienia stdTimeRef="XPath to time zone element" względem elementu daty/godziny w celu wskazania, że element odzwierciedla czas standardowy i wskazuje strefę czasową do użycia. Więcej informacji na temat obsługiwanej składni dotyczącej odwoływania się do innych elementów można znaleźć w sekcji Odwołania do innych elementów.

Przykład:

<schema>
  <alternateTimeZone fkRef="F1-TZONE" suppress="true"/>
  <startDateTime dataType="dateTime" stdTimeRef="alternateTimeZone"/>
</schema>
Uwaga: Jeśli element jest odwzorowany na tabelę/pole z czasem standardowym o typie Z odwołaniem, zakłada się wartość stdTime="XPath". Więcej informacji zawiera sekcja Pola.
Uwaga: Kiedy elementy schematu są pobierane w czasie standardowym, odwzorowanie interfejsu użytkownika obsługuje zapis HTML w celu automatycznego wyświetlenia danych stosujących korektę czasu letniego lub zimowego. Więcej informacji można znaleźć w atrybucie HTML oraType="dateTime; stdTime:true".

Możliwe są przypadki, w których data/godzina są pobierane jako czas standardowy w jednej strefie czasowej, ale powinny być wyświetlane za pomocą innej strefy czasowej. W takim przypadku można użyć atrybutu displayRef="XPath" wraz z odpowiednim atrybutem identyfikującym strefę czasową, z której pobierane są dane. Więcej informacji na temat obsługiwanej składni można znaleźć w sekcji Odwołania do innych elementów.

<schema>
  <displayTimeZone fkRef="F1-TZONE" suppress="true"/>
  <startDateTime dataType="dateTime" stdTime="true" displayRef="displayTimeZone"/>
</schema>

Atrybuty odwzorowania

Podczas tworzenia schematu można wybierać z pomiędzy następujących atrybutów odwzorowania.

Mnemonik Poprawne wartości Opis Przykłady
mapField= "field name"

W przypadku obiektu biznesowego, atrybut mapField jest używany do identyfikowania kolumny bazy danych, z którą powiązany jest element. W przypadku schematów usług biznesowych, atrybut mapField= jest używany do powiązania elementu schematu z elementem usługi.

<schema>
  <factId 
   mapField="FACT_ID"/>
</schema>
mapChild= "table name"

Atrybut mapChild jest używany tylko na potrzeby odwzorowywania obiektów biznesowych. Używa się go na dwa sposoby:

  • Pierwszy sposób polega na utworzeniu listy w ramach obiektu biznesowego, która odpowiada tabeli podrzędnej w ramach obiektu obsługi.

  • Drugi sposób polega na użyciu atrybutu mapChild w celu zidentyfikowania tabeli podrzędnej, w której znajduje się pole spłaszczone. Więcej informacji na temat spłaszczania można znaleźć w sekcji dot. spłaszczania poniżej.

Przykład listy w ramach tabeli podrzędnej w obiekcie biznesowym:
<persons type="list" 
   mapChild="CI_ACCT_PER"
  <personId mapField="PER_ID"/>
</persons>
mapList= "list name"

Atrybut mapList jest używany tylko na potrzeby odwzorowywania obiektów biznesowych. Używa się go na dwa sposoby:

  • Pierwszy sposób polega na utworzeniu listy w ramach usługi biznesowej, która odpowiada liście w ramach usługi.

  • Drugi sposób polega na użyciu atrybutu mapList w celu zidentyfikowania listy, w której znajduje się pole spłaszczone. Więcej informacji na temat spłaszczania można znaleźć w sekcji dot. spłaszczania poniżej.

Przykład listy w ramach usługi biznesowej:
<selectList type="list" 
  mapList="DE" 
  <value mapField="COL_VALUE"> 
    <row mapList="DE_VAL"> 
      <SEQNO is="2"/> 
    </row> 
  </value>  
</selectList>
mapXML= "field name"

Atrybut mapXML jest zazwyczaj używany do odwzorowywania struktur XML do dużych pól znaków/XML w ramach usługi. Należy pamiętać, że podczas używania atrybutu mapXML do odwzorowywania struktury listy lub grupy (type="list" lub type="group") nie jest wymagane odwzorowywanie wszystkich elementów podrzędnych w strukturze. Możliwe jest także odwzorowanie elementów listy do pola wielkich znaków powiązanego z elementem podrzędnym listy.

<enrollmentRequest type="group" 
mapXML="CASE_CLOB">
  <messageID/>
  <sender/>
</enrollmentRequest>
<enrollmentKey 
mapXML="CASE_CLOB"/>
<enrollmentInfo type="list" 
mapChild="CI_CASE_CHILD">
  <sequence 
  mapField="CHILD_SEQ"/>
  <name 
  mapXML="CASE_CHILD_CLOB"/>
  <value 
  mapXML="CASE_CHILD_CLOB"/>
</enrollmentInfo>
isPrimeKey= "true"

Należy określić klucz główny listy zdefiniowany w ramach odwzorowanego elementu XML (type="list" mapXML="CLOB"). Klucz główny jest używany przez framework do określania, czy wymagane jest dodanie, aktualizowanie lub kasowanie elementu listy podczas aktualizacji obiektu biznesowego.

Uwaga: Nie jest wymagane określanie klucza głównego dla listy obiektu biznesowego odwzorowanej do listy obiektu obsługi. Podczas odwzorowywania listy fizycznej, klucz główny jest wyznaczany na podstawie istniejących, fizycznych metadanych.
<questionnaire 
type="list" mapXML="CASE_CLOB">
  <question 
  isPrimeKey="true"/>
  <answer/>
</questionnaire>
orderBy= "XPath asc|desc, XPath asc|desc"

Domyślnie lista zdefiniowana w ramach odwzorowanego elementu XML (type="list" mapXML="CLOB") jest sortowana według pierwszego elementu listy. Za pomocą atrybutu orderBy można określić inną kolejność sortowania. Wartością atrybutu jest rozdzielana przecinkami lista XPath pól (względna do elementu listy) z opcjonalną kolejnością sortowania (domyślnie rosnąco).

Uwaga: Ta opcja jest dostępna tylko dla list odwzorowanych jako kod XML w ramach obiektów biznesowych.
<questionnaire type="list" 
  orderBy="page/section, 
page/sequence" 
mapXML="CASE_CLOB">
<question isPrimeKey="true"/>
<answer/>
<page type="group">
  <section/>
  <sequence/>
</page>
</questionnaire>

Atrybuty opisowe

Następujących atrybutów można używać w celu opisywania elementu schematu oraz zapewniania dodatkowej konfiguracji powiązanej z elementem. Atrybuty te są zazwyczaj przydatne tylko w przypadku elementów pól.

Mnemonik Poprawne wartości Opis Przykłady
<!-- comment -->

Umożliwia dodawanie komentarza do schematu za pomocą specjalnych znaków otwierających i zamykających: <!-- oraz -->.

<schema>
  <!-- This schema is used to 
capture business information 
only, please refer to the 
'HUMAN' BO for person 
information -->
</schema>
description= "text"

Opis elementu może służyć do zapewniania wewnętrznego opisu elementu. Dzięki temu czytelnik schematu może łatwiej zrozumieć przyczynę biznesową dotyczącą danego elementu.

<schema>
  <active type="boolean" 
description="active account" 
label="Active"/>
</schema>
label= "text"

Etykieta elementu powinna stanowić krótki opis, który zazwyczaj będzie występować przed elementem w interfejsie użytkownika.

<schema>
  <active type="boolean" 
description="active account" 
label="Active"/>
</schema>
required= "true"

Służy do zapewniania obecności elementu w czasie interakcji obiektu.

Uwaga: W przypadku uwzględnionych schematów atrybut required="true" nie jest przetwarzany w schematach obiektów biznesowych i usług biznesowych, kiedy znajdują się one w schemacie skryptu usługi. Dzięki temu skrypt usługi może wypełniać wymagane elementy zanim osadzone obiekty biznesowe lub usługi biznesowe zostaną wywołane ze skryptu usługi.

<schema>
  <logDate mapField="LOG_DT" 
default="%CurrentDate" 
required="true" 
private="true"
</schema>
mdField= "field code"

Atrybut metadanych jest używany w celu powiązania elementu z metadanymi pola. Pole definiuje typ danych, a także etykietę oraz tekst pomocy. Po połączeniu elementu z polem metadanych, nie jest wymagane określenie żadnego z tych atrybutów.

Uwaga: W przypadku schematu obiektu biznesowego atrybut mapField służy do wyznaczania typu danych i etykiety. W razie konieczności można podać atrybut mdField w celu zastąpienia tych atrybutów. Jeśli element jest odwzorowany do kolumny XML, atrybut mdField jest wymagany w celu zapewnienia odpowiedniego typu danych i etykiety.
<schema>
  <active 
mdField="CM_ACTIVE_SW"/>
</schema>
fkRef= "FK Reference Code"

Jeśli elementem jest klucz obcy, zdefiniowanie jego odwołania do klucza obcego umożliwi frameworkowi walidację elementu w czasie interakcji schematu i automatycznie zapewni opisy oraz możliwości nawigacji.

<schema>
  <person fkRef="PER" 
mapField="CHAR_VAL_FK1">
   <row mapChild="CI_SA_CHAR">
      <CHAR_TYPE_CD is="PER"/>
    </row>
  </person>
</schema>
private= "true"

Oznaczenie elementu jako "prywatny" zapobiegnie ujawnieniu go w czasie interakcji schematu.

Uwaga: Element prywatny wymaga wartości domyślnej.
<schema>
  <type mdField="SA_TYPE_CD" 
default="E1" private="true"/>
</schema>
suppress= "true"

Ustawienie zapobiega pojawianiu się elementu w automatycznie generowanych interfejsach użytkowników.

Uwaga: Ten atrybut można określić w ramach grupy. W takim przypadku wszystkie elementy grupy zostaną pominięte.
Uwaga: Porady dotyczące wartości domyślnych pomijanych elementów można znaleźć w sekcji Ustawianie wartości domyślnych i zmienne systemowe.
<schema>
    <ls mdField="LIFE_SUPPORT_FLG" 
default="N" suppress="true"/<
</schema>
"blank"

To ustawienie oznacza, że automatyczne renderowanie interfejsu użytkownika w trybie wyświetlania spowoduje ukrycie elementu, jeśli jego wartość jest pusta. Element będzie można nadal modyfikować w odwzorowaniu wejściowym, niezależnie od tego, czy jest pusty.

<schema>
  <email mdField="EMAIL" 
suppress="blank"/>
</schema>
"input"

To ustawienie sprawia, że automatyczne renderowanie interfejsu użytkownika pominie element dotyczący danych wejściowych, mimo że można będzie go wyświetlić jako pusty.

Uwaga: Elementy oznaczone jako suppress="input" będą działać tak, jak w przypadku suppress="blank". Jeśli wartość jest pusta, brak wartości będzie wyświetlany w odwzorowaniu wyświetlania lub danych wejściowych. Jeśli dostępna jest wartość elementu, zostanie on wyświetlony zarówno w odwzorowaniu wyświetlania, jak i danych wejściowych.
Uwaga: Porady dotyczące wartości domyślnych pomijanych elementów można znaleźć w sekcji Ustawianie wartości domyślnych i zmienne systemowe.
<schema>
  <email mdField="EMAIL" 
suppress="input"/>
</schema>
noAudit= "true"

To ustawienie zapobiega wyświetlaniu elementu jako elementu zmienionego w miejscu dołączania audytu obiektu biznesowego. Jeśli zostanie określone w węźle grupy lub listy, będzie mieć zastosowanie do całego węzła. Nie można określić go w ramach głównego węzła schematu, a jedynie w elementach schematu.

Uwaga: Ten atrybut ma zastosowanie tylko do schematów obiektów biznesowych.
<schema>
  ...
  <version mapField="VERSION_NBR"
 noAudit="true"/>
  ...
  <workFields type="group"
 noAudit="true"
    <lastProcessedId/>
    <lastProcessedTime/>
  </workFields>
</schema>
storeEmptyNodes= "true"

Domyślnie puste węzły są usuwane z instancji obiektu biznesowego po zapisaniu. To ustawienie umożliwia elementowi grupy lub listy bezpośrednie zachowanie pustych węzłów.

Atrybut ten może być przydatny w sytuacjach, gdy dane obiektu biznesowego są wymieniane z systemem zewnętrznym i istnieje potrzeba rozróżnienia między pustą wartością elementu uczestniczącego w synchronizacji a elementem, który w niej nie uczestniczy, a zatem całkowicie pominiętym w komunikacie.

Uwaga:Jest to dostępne tylko w odniesieniu do elementów grupy i listy.
<schema>
  <message type="group" storeEmptyNodes="true">
  ...
  </message>
</schema>
emitEmptyGroups= "true"

Domyślnie puste węzły nie są uwzględniane w danych wyjściowych obiektu biznesowego lub wywołania usługi biznesowej. Ten atrybut jest ustawiony w węźle schematu najwyższego poziomu, umożliwiając uwzględnienie pustych węzłów wszystkich grup i elementów listy w danych wyjściowych.

Ten atrybut może być przydatny w tych samych sytuacjach, które mogą wymagać użycia atrybutu storeEmptyNodes=.

Uwaga: Jest to dostępne tylko w przypadku schematów obiektów biznesowych i usług biznesowych.
<schema emitEmptyGroups="true">
  <message type="group">
  ...
  </message>
</schema>
emitEmptyElements= "true"

Ten atrybut jest podobny do atrybutu emitEmptyGroups=, ale może być również określony na poziomie pola. Atrybut ma zastosowanie do wszystkich typów schematów.

<schema>
  <messageNumber type="field" emitEmptyElements="true">
  ...
  </message>
</schema>
adheresToDA= "rozdzielana przecinkami lista nazw obszarów danych."

Atrybut ma zastosowanie do węzłów schematu, grupy i listy. Zgłasza, że ten węzeł schematu podrzędnego ma za zadanie "wyglądać jak" schemat jednego z wymienionych obszarów danych, na ogół ze względów na polimorfizm.

Uwaga: Zalecane podejście dotyczące wymuszania struktury udostępnionego obszaru danych polega na uwzględnieniu go w schemacie. Ten atrybut powinien być ograniczony do przypadków użycia, w których nie ma możliwości uwzględnienia obszaru danych.
<schema>
  <messageNumber type="group" adheresToDA="DataAreaName">
  ...
  </message>
</schema>

Stałe schematów

Istnieją schematy należące do produktów, w przypadku których projekt wymaga domyślnej wartości w schemacie, ale w których wartość jest specyficzna dla wdrożenia i nie może być definiowana przez produkt. W takich sytuacjach produkt może zastosować techniką określaną mianem stałej schematu. Projekt schematu będzie uwzględniał zadeklarowaną stałą. W czasie wdrożenia zadanie konfiguracji zdefiniuje odpowiednią wartość dla stałej.

Załóżmy na przykład, że produkt dostarcza algorytm, który utworzy wychodzącą wiadomość po spełnieniu określonego warunku. Typ wiadomości wychodzącej musi zostać skonfigurowany przez wdrożenie. Aby wykorzystać stałą schematu do zdefiniowania typu wiadomości wychodzącej, podstawowy produkt skonfiguruje co następuje:

  • Wartość z listy typu opcji dla listy wartości F1CN_​OPT_​TYP_​FLG. Przykład: M202 - typ wiadomości wychodzącej o ukończeniu działania z nazwą wartości Java outmsgCompletion

  • Schemat bazowy, który jest używany do tworzenia komunikatów wychodzących "ukończonego działania" z odwołaniem do stałej schematu przy użyciu nazwy wartości Java wartości wyszukiwania typu opcji

    ...
    <outboundMessageType mapField="OUTMSG_TYPE_CD" default="%Constant(outmsgCompletion)"/>
    ...

W czasie wdrożenia użytkownicy o uprawnieniach administratora muszą skonfigurować odpowiedni typ komunikatu wychodzącego na potrzeby "ukończenia działania". Następnie należy przejść do Konfiguracji cechy, wybrać typ cechy Stałe schematów, wybrać typ opcji Typ wiadomości wychodzącej ukończenie działania i wprowadzić nowo utworzony typ wiadomości wychodzącej w wartości opcji.

Stałe schematów mogą być także używane w ramach składni spłaszczania w celu zdefiniowania elementów wiersza wymaganych do spłaszczenia.

Ustawianie wartości domyślnych i zmienne systemowe

Domyślny atrybut może być używany do ustalania wartości domyślnych w elementach pola oraz w elementach wiersza wymaganych do spłaszczania. Można ustawić wartość domyślną pola na wartość stałą lub na jedną z kilku zmiennych systemowych.

Jeśli element jest wymagany, wartość domyślna jest stosowana na poziomie serwera podczas dodawania lub zmiany rekordu, w którym nie podano wartości tego elementu.

Jeśli element jest opcjonalny, można skonfigurować wartość domyślną w taki sposób, aby podczas wypełniania rekordu w interfejsie użytkownika w trybie dodawania podawana była sugerowana wartość. Użytkownicy powinni mieć możliwość usunięcia wartości domyślnej dla tego typu elementu, a system nie będzie próbował jej wypełnić w momencie zapisywania.

Uwaga:

Standardem obsługi listy jest pokazywanie pustego wiersza nowej listy, który użytkownik może wypełnić lub nie. W związku z tym wartości domyślne interfejsu użytkownika nie są pokazywane dla elementów listy.

Nie zaleca się konfigurowania domyślnego atrybutu elementu opcjonalnego, który nie jest edytowalny lub widoczny w interfejsie użytkownika w trybie dodawania (na przykład element o wartości suppress="true" lub suppress="input" lub element listy, którego wartość domyślna nie jest pokazywana, zgodnie z informacjami w poprzednim punkcie). Wartość domyślna tego typu elementu jest nadal stosowana, ale użytkownik nie ma możliwości zresetowania wartości. Może to powodować niespójności, ponieważ ustawianie wartości domyślnych nie występuje w polach opcjonalnych dodanych w ramach przypadku użycia innego niż interakcja interfejsu użytkownika.

Mnemonik Poprawne wartości Opis Przykłady
default= "value" Ten atrybut służy do ustawiania określonej wartości domyślnej elementu. Prawidłowe wartości są zależne od ustawienia dataType.
<schema>
  <perType mapField="PER_OR_BUS_FLG" 
default="P" required="true"/>
</schema>
<schema>
  <frequency dataType="number" 
default="1" required="true"/>
</schema>
"%CurrentDate" Służy do ustawiania bieżącej daty jako domyślnej wartości elementu. Dotyczy tylko elementów daty.
<schema>
  <logDate mapField="LOG_DT" 
default="%CurrentDate" required="true"/>
</schema>
"%CurrentDateTime" Służy do ustawiania bieżącej daty/godziny jako domyślnej wartości elementu. Dotyczy tylko elementów daty/godziny.
<schema>
  <logDateTime mapField="LOG_DTTM" 
default="%CurrentDateTime" 
required="true"/>
</schema>
"%StandardDateTime" Służy do ustawiania standardowej daty i godziny jako wartości domyślnej. Standardowa data i godzina są takie same, jak aktualna data i godzina, chyba że w podstawowej strefie czasowej obowiązuje czas letni/zimowy. Do użycia z atrybutem stdTime.
Uwaga: Więcej informacji można znaleźć w części Uwagi dot. czasu standardowego.
<schema>
  <startDateTime mapField="START_DTTM" 
default="%StandardDateTime" 
required="true"/>
</schema>
"%ProcessDate" Można ustawić wartość domyślną daty procesu. Data procesu jest różna od daty bieżącej, ponieważ data procesu pozostaje stała w całym czasie wykonywania procesu. Bieżąca data odzwierciedla rzeczywistą datę przetwarzania. Przypomina to datę roboczą zadania, które jest standardowym parametrem zadania.
<schema>
  <billDate mapField="BILL_DT" 
default="%ProcessDate" 
required="true"/>
</schema>
"%ProcessDateTime" Przypomina to parametr "%ProcessDate", ale ma zastosowanie do pól daty/godziny.
<schema>
  <calcDateTime mapField="CALC_DTTM" 
default="%ProcessDateTime" 
required="true"/>
</schema>
"%CurrentUser" Służy do ustawiania bieżącego użytkownika jako domyślnej wartości elementu.
<schema>
  <logUser mapField="LOG_USER" 
default="%CurrentUser" 
required="true"/>
</schema>
"%CurrentUserTimeZone" Służy do ustawiania strefy czasowej bieżącego użytkownika jako domyślnej wartości elementu. Jeśli strefa czasowa bieżącego użytkownika nie zostanie znaleziona, zostanie użyta strefa czasowa instalacji.
<schema>
  <timeZone 
default="%CurrentUserTimeZone" 
required="true"/>
</schema>
"%CurrentUserLanguage" Służy do ustawiania języka bieżącego użytkownika jako domyślnej wartości elementu.
<schema>
  <custLanguage mapField="CUST_LANG" 
default="%CurrentUserLanguage" 
required="true"/>
</schema>
"%InstallationCurrency" Służy do ustalania wartości domyślnej waluty na podstawie rekordu instalacji.
<schema>
  <currency mapField="CURRENCY_CODE" 
default="%InstallationCurrency" 
required="true"/>
</schema>
"%InstallationCountry" Można ustawić wartość domyślną kraju na podstawie rekordu instalacji.
<schema>
  <country mapField="COUNTRY" 
default="%InstallationCountry" 
required="true"/>
</schema>
"%InstallationLanguage" Można ustawić wartość domyślną języka na podstawie rekordu instalacji.
<schema>
  <language mapField="LANGUAGE" 
default="%InstallationLanguage" 
required="true"/>
</schema>
"%Constant( )" Można ustawić wartość domyślną elementu na podstawie stałej schematu. Poniżej znajduje się przykład stałej schematu użytej jako wartość domyślna, gdzie nazwa wartości Java oraz wartość wyszukiwania to "customerLanguage".
<language mapField="CUSTOMER_LANG" 
default="%Constant(customerLanguage)" 
required="true"/>
"%Context( )" Można ustawić wartość domyślną zawartą w zmiennej kontekstowej.
Ostrzeżenie: Zanim będzie można zastosować wartość domyślną kontekstu schematu, należy zainicjować zmienne kontekstowe w obrębie skryptu serwera. Więcej informacji można znaleźć w sekcji Zmienne kontekstowe.
Przykład zmiennej kontekstowej używanej jako wartość domyślna:
<source mapField="PER_ID" 
default="%Context(source)" 
required="true"/>
Uwaga: Podczas definiowania zmiennej kontekstowej w ramach skryptu, należy dodawać jej prefiks $$. Podczas odwoływania się do zmiennej w składni %Context( ) prefiks nie jest dołączany.
defaultRef= "XPath"

Ten atrybut służy do ustawiania domyślnej wartości jednego elementu za pomocą wartości innego.

Więcej informacji na temat obsługiwanej składni dotyczącej odwoływania się do innych elementów można znaleźć w sekcji Odwołania do innych elementów.

Węzły i atrybuty spłaszczania

Termin "spłaszczanie" opisuje czynność definiowania jednego lub wielu pojedynczych elementów schematu, które są w rzeczywistości częścią listy w ramach obiektu obsługi. Spłaszczanie jest możliwe wtedy, gdy istnieją inne atrybuty danej listy, które można zdefiniować w celu unikatowego opisania elementu lub elementów. Typowym przypadkiem użycia spłaszczania jest charakterystyka. Zamiast definiować charakterystyki obiektu za pomocą kolekcji, w której użytkownik musi wybrać typ charakterystyki, a następnie zdefiniować wartość, charakterystyki są definiowane jako elementy z od razu wyświetlaną odpowiednią etykietą. Ta technika umożliwia projektantowi schematu i interfejsu użytkownika na wyświetlenie oddzielnych charakterystyk w logicznych miejscach interfejsu użytkownika zamiast wrzucania ich wszystkich w jedno miejsce.

Uwaga: Spłaszczony element odzwierciedla unikatowy wiersz w bazie danych. Ten wiersz jest wstawiany w czasie tworzenia wartości spłaszczonych. Wiersz jest aktualizowany po zmianie dowolnej wartości spłaszczonej. Wiersz jest kasowany po usunięciu wszystkich wartości spłaszczonych. Sposób działania elementów o datach obowiązywania jest trochę inny - więcej informacji można znaleźć w sekcji Spłaszczanie listy o określonej dacie obowiązywania.
Uwaga: Cecha spłaszczania może także służyć do definiowania listy, więcej informacji można znaleźć w sekcji Lista spłaszczona.

Identyfikowanie listy lub tabeli podrzędnej

Podczas spłaszczania tabeli podrzędnej wymagany jest węzeł wiersza do identyfikowania listy/tabeli podrzędnej, z której pochodzi element. W ramach węzła wiersza należy zdefiniować co najmniej jeden element z definicją is=, co zapewni, że element ten będzie unikatowym wierszem w bazie danych. Może także definiować elementy lub pola w wierszu, które są pominięte i uzupełnione za pomocą konfiguracji wykorzystującej wartość domyślną.

  • W przypadku obiektu biznesowego węzeł wiersza definiuje tabelę podrzędną, do której należy pole spłaszczone.

    Składnia: <row mapChild="table name">. Ten przykład dotyczy listy osób w ramach konta w produkcie Customer Care and Billing. Jedną z osób można oznaczyć jako osobę "główną". Pokazuje to sposób, w jaki można zdefiniować jawny element ID głównej osoby w celu uproszczenia odwołań do tego pola. Wchodzi w skład tabeli podrzędnej CI_​ACCT_​PER. Wartością MAIN_​CUST_​SW jest true, co sprawia, że jest to sytuacja unikatowa (i tylko jeden wiersz może mieć tę wartość)

    <custId mapField="PER_ID" mdField="CM-MainCust">
      <row mapChild="CI_ACCT_PER">
        <MAIN_CUST_SW is="true" />
        <ACCT_REL_TYPE_CD default="MAIN" />
      </row>
    </custId>
    Uwaga: Powyższy przykład pokazuje, że węzeł wiersza może także definiować elementy w ramach listy, które są pominięte i przydzielone do wartości domyślnej. Tej składni nigdy nie używa się do identyfikowania określonego wiersza. Należy pamiętać, że wartość domyślna może być literałem lub zmienną systemową.
  • W przypadku usługi biznesowej, węzeł wiersza identyfikuje nazwę listy, do której należy pole spłaszczone.

    Składnia: <row mapList="list name">. Ten przykład pokazuje dwa zapisy z listy spłaszczonej do wartości pola i opisu.

    <selectList type="list" mapList="DE"> 
        <value mapField="COL_VALUE"> 
    <row mapList="DE_VAL"> 
              <SEQNO is="2"/> 
    </row> 
        </value>  
      <description mapField="COL_VALUE"> 
    <row mapList="DE_VAL"> 
            <SEQNO is="3"/> 
    </row> 
      </description> 
    </selectList>

Unikatowe identyfikowanie pola spłaszczonego lub listy spłaszczonej

Składnia is= w wierszu lub elemencie rowFilter służy do unikatowego identyfikowania wiersza.

Mnemonik Poprawne wartości Opis Przykłady
is= "value" Atrybut ten służy do bezpośredniego tworzenia odwołania do wartości.
<tdTypeCd 
  mapField="CHAR_VAL_FK1">
  <row 
    mapChild="F1_EXT_LOOKUP_VAL_CHAR">
    <CHAR_TYPE_CD 
   is="CM-TD-TYPE"/>
  </row>
</tdTypeCd>
"%Constant( )" Można konfigurować element spłaszczony na podstawie stałej schematu. Podczas interakcji usług wartość stałej schematu zostanie użyta do identyfikowania spłaszczonego elementu w jego wierszu podrzędnym.

Poniżej znajduje się przykład stałej schematu użytej jako składnia spłaszczona, gdzie nazwa wartości Java oraz pole wartości wyszukiwania to "cmRate".

<unitRate mapField="CHAR_VAL" 
  dataType="number">
  <row mapChild=
   "F1_EXT_LOOKUP_VAL_CHAR">
    <CHAR_TYPE is
   ="%Constant(cmRate)"/>
  </row>
</unitRate>
"%n" Wartość zastępowania %n służy do odwoływania się do względnego wystąpienia listy. Względne wystąpienie listy jest zazwyczaj używane do konfigurowania spłaszczonego elementu tabeli podrzędnej wprowadzonej według liczby porządkowej. Wartość n powinna być wartością dodatnią i całkowitą. W czasie interakcji odczytu obiektu biznesowego zostanie zwrócone względne wystąpienie listy (pozycja) określone przez wartość całkowitą. Przykład z względnym wystąpieniem listy - gdzie zwracane jest pierwsze wystąpienie w wierszu.
<schema>
  <mainPhone mapField="PHONE">
    <row mapChild="CI_PER_PHONE">
      <PHONE_TYPE_CD 
      is="%Constant(mainPhoneType)"/>
      <SEQ_NUMis="%1"/>
    </row>
  </mainPhone>
</schema>
Szybki dostęp: Dodatkowe wartości dla is= są używane podczas spłaszczania listy o określonej dacie obowiązywania. Więcej informacji można znaleźć w wymienionej sekcji.

Spłaszczanie predefiniowanego typu charakterystyki

Jeśli pole spłaszczone znajduje się w zbiorze charakterystyk, a typ charakterystyki jest predefiniowaną charakterystyką, automatyczne renderowanie interfejsu użytkownika spowoduje wygenerowanie listy rozwijanej dla listy prawidłowych wartości. Przykładowo poniższy schemat wygeneruje listę rozwijaną dla elementu "Użycie", który pokazuje prawidłowe wartości typu charakterystyki "Przyczyna statusu - użycie" (F1–SRUSG).

<usage mdField="STATUS_RSN_USAGE" mapField="CHAR_VAL">
  <row mapChild="F1_BUS_OBJ_STATUS_RSN_CHAR">
      <CHAR_TYPE_CD is="F1-SRUSG"/>
      <SEQ_NUM is="1"/>
  </row>
</usage>

Definiowanie wielu elementów z listy

Podczas uwzględniania wielu kolumn w ramach tej samej listy system podaje skrócony zapis do kopiowania reguł spłaszczania zdefiniowanych w innym elemencie celem zapewnienia, że reguły spłaszczania nie będą musiały być powtarzane. W tym celu węzeł wiersza zawiera atrybut rowRef, który wskazuje nazwę innego elementu, który definiuje informacje odwzorowania. Następujący przykład pokazuje spłaszczanie pól "ID klienta" oraz "Otrzymuje kopię faktury" z tej samej listy osób konta (gdzie MAIN_​CUST_​SW ma wartość true ).

<custId mapField="PER_ID">
  <row mapChild="CI_ACCT_PER">
      <MAIN_CUST_SW is="true" />
      <ACCT_REL_TYPE_CD default="MAIN" />
  </row>
</custId>
<copyBill mapField="RECEIVE_COPY_SW" rowRef="custId"/>

Należy pamiętać, że powyższy zapis pokazuje także, że atrybut rowRef można zdefiniować bezpośrednio w ramach definicji atrybutu elementu.

Uwaga: Więcej informacji na temat obsługiwanej składni dotyczącej odwoływania się do innych elementów można znaleźć w sekcji Odwołania do innych elementów.

Spłaszczanie w ramach dwóch warstw

Jeśli obiekt obsługi lub usługa zawierają zagnieżdżone listy o głębokości dwóch warstw, system obsługuje spłaszczanie elementu w ramach spłaszczonego elementu. Ta technika także wykorzystuje atrybut rowRef. Spłaszczanie drugiego poziomu odwołuje się do spłaszczonego elementu na pierwszym poziomie. W poniższym przykładzie pokazano spłaszczanie charakterystyki do elementu o nazwie legalContact dla klienta "głównego". Należy zauważyć, że element legalContact zawiera dwa węzły wiersza: Jeden z nich odwołuje się do informacji o spłaszczaniu dotyczących rekordu nadrzędnego, a drugi służy do definiowania tabeli podrzędnej

<custId mapField="PER_ID">
  <row mapChild="CI_ACCT_PER">
    <MAIN_CUST_SW is="true" />
    <ACCT_REL_TYPE_CD default="MAIN" />
  </row>
</custId>
<legalContact mapField="CHAR_VAL_FK1">
  <row rowRef="custId">
    <row mapChild="CI_ACCT_PER_CHAR" >
       <CHAR_TYPE_CD is="LEGAL" />
    </row>
  </row>
</legalContact>

Należy pamiętać, że powyższy zapis pokazuje także, że atrybut rowRef można zdefiniować jako atrybut węzła wiersza zamiast bezpośrednio w ramach definicji atrybutu elementu.

Definiowanie listy spłaszczonej

W niektórych przypadkach lista lub tabela podrzędna obsługują wiele wartości tego samego "typu", które powinny być przedstawiane jako lista. Kontynuując przykład przedstawiony powyżej, na liście osób w ramach konta jedna osoba może być określona jako osoba "główna". Ta osoba została spłaszczona do pojedynczego elementu (a typ relacji konta otrzymał wartość domyślną i został pominięty). Aby obsługiwać pozostałe osoby powiązane z kontem, można zdefiniować listę, na której każdy wiersz będzie zawierać ID osoby oraz typ relacji konta.

W przeciwieństwie do węzła wiersza, lista spłaszczona jest konfigurowana za pomocą elementu rowFilter. Poniższy schemat stanowi ilustrację opisanego przykładu. Węzeł listy definiuje tabelę podrzędną. Element rowFilter zawiera kryteria, które służą do identyfikowania wierszy w ramach uwzględnianej tabeli. Elementy listy są definiowane w ramach węzła listy, poza elementem rowFilter.

<custId mapField="PER_ID">
  <row mapChild="CI_ACCT_PER">
    <MAIN_CUST_SW is="true" />
    <ACCT_REL_TYPE_CD default="MAIN" />
  </row>
</custId>
<miscPersons type="list" mapChild="CI_ACCT_PER">
  <rowFilter>
    <MAIN_CUST_SW is="false" />
  </rowFilter>
  <relType mapField="ACCT_REL_TYPE_CD"/>
  <personId mapField="PER_ID"/>
</custId>

Należy pamiętać, że system waliduje, czy jeżeli schemat zawiera spłaszczone pojedyncze elementy oraz spłaszczone listy z tej samej tabeli podrzędnej, to czy kryteria definiujące ich unikatowość muszą być analogiczne.

Spłaszczanie listy o określonej dacie obowiązywania

W aplikacji znajdują się listy, które posiadają datę obowiązywania (a niektóre posiadają także datę i godzinę obowiązywania). Na przykład istnieją zbiory charakterystyk z datą obowiązywania. Projekt takich zbiorów zakłada pobranie pojedynczej wartości dla typu charakterystyki, która może ulec zmianie wraz z upływem czasu. Nie ma na celu obsługiwania wielu wartości charakterystyk obowiązujących jednocześnie.

Niektóre obiekty obsługi mają charakterystyki z datą obowiązywania i nie mają charakterystyk opartych na sekwencji. W przypadku tych obiektów we wdrożeniach może być wymagane użycie charakterystyki w celu zdefiniowania dodatkowego pola, które nie wymaga dat obowiązywania.

Projektując element schematu, który reprezentuje wartość w zbiorze z datą obowiązywania, należy rozważyć, czy wartość jest używana w procesach, w przypadku których istotne jest pobieranie zmian wartości w czasie (np. obliczanie faktury).

  • Jeśli śledzenie zmian wartości nie jest istotne, zaleca się ustawienie daty obowiązywania na stałą wartość w schemacie. (Przykłady poniżej).
  • Jeśli śledzenie zmian wartości jest ważne, należy rozważyć sposób projektowania schematu.
    • Jedną z opcji jest zdefiniowanie listy spłaszczonej w sposób opisany powyżej. Zarówno wartość, jak i data obowiązywania są elementami na tej liście. W tym przypadku użycia można zarządzać listą tak samo jak każdą inną listą. Można dodawać lub usuwać wartości.
    • Inną opcją jest zdefiniowanie pojedynczej spłaszczonej wartości w schemacie. W przypadku tej opcji podczas pobierania rekordu zwracana jest najnowsza obowiązująca wartość. W tym projekcie ważną kwestią jest sposób definiowania daty odwołania.
Uwaga: Więcej informacji na temat obsługiwanej składni dotyczącej odwoływania się do innych elementów można znaleźć w sekcji Odwołania do innych elementów.

Elementy spłaszczone, w których zmiany nie są śledzone

Poniżej przedstawiono przykład spłaszczania elementu w zbiorze z datą obowiązywania, w którym wartość nie musi być mieć daty obowiązywania. W tym przypadku zaleca się trwałe zakodowanie daty w atrybucie is=.

<schema>
  <externalReference mapField="ADHOC_CHAR_VAL" mdField="CM_EXT_REF" dataType="string">
    <row mapChild="CI_SA_CHAR">
      <CHAR_TYPE is="CM_EXT_REF"/>
      <EFFDT is="2000-01-01"/>
    </row>
  </externalReference>
</schema>

Elementy spłaszczone, w których zmiany mają określoną datę obowiązywania

Jeśli schemat obiektu biznesowego ma spłaszczać wartość z datą obowiązywania, w przypadku której powinny być śledzone zmiany w czasie, wartość spłaszczona będzie reprezentować najnowszy obowiązujący zapis. W takim przypadku zaleca się jawne zdefiniowanie pola daty lub daty/godziny jako elementu. Następnie dostępna jest składnia atrybutu is= wskazująca, że jawne pole daty jest datą, której należy użyć w wartości.

Mnemonik Poprawne wartości Opis Przykłady
is= "%effectiveDate( )" Za pomocą tej konfiguracji można wskazać, że data ma korzystać z wartości innego elementu.
Uwaga: Więcej informacji na temat obsługiwanej składni dotyczącej odwoływania się do innych elementów można znaleźć w sekcji Odwołania do innych elementów.
<schema>
  <price mapField="CHAR_VAL" 
   dataType="number" required="true">
    <row mapChild="CI_SA_CHAR">
      <CHAR_TYPE is="PRICE"/>
      <EFFDT 
   is="%effectiveDate(priceEdate)" />
    </row>
  </price>
<priceEdate mapField="EFFDT" 
  rowRef="price"/>
</schema>
"%effectiveDateTime( )" Za pomocą tej konfiguracji można wskazać, że data/godzina ma korzystać z wartości innego elementu.
Uwaga: Więcej informacji na temat obsługiwanej składni dotyczącej odwoływania się do innych elementów można znaleźć w sekcji Odwołania do innych elementów.
<schema>
  <price mapField="CHAR_VAL" 
  dataType="number">
    <row mapChild="RATE_CHAR">
      <CHAR_TYPE is="PRICE"/>
      <EFFDTTM 
  is="%effectiveDateTime(priceEdatetime)"/>
    </row>
  </price>
  <priceEdatetime mapField="EFFDTTM" 
  rowRef="price"/>
</schema>

Należy rozważyć, czy jawny element daty lub daty/godziny powinien być wyświetlany w interfejsie użytkownika, gdy pokazywane jest pole spłaszczone, czy też powinien być pomijany. Projektanci powinni również wziąć pod uwagę zastosowanie okna dialogowego użytkownika w celu aktualizacji wartości. Bardziej intuicyjne może być wyświetlanie tylko pola spłaszczonego i wprowadzenie osobnego okna dialogowego w celu aktualizacji wartości z datą obowiązywania.

W przypadku tej opcji sugeruje się, aby strona obsługi obiektu zawierała osobną strefę, w której pokazywana jest historia wartości z datami obowiązywania w czasie. Najnowsza wartość może być również uwzględniona w tej strefie.

Uwaga: W celu zapewnienia zgodności wstecznej system obsługuje również następujące opcje. Nie są one jednak zalecane. Data odwołania jest w nich pośrednio zdefiniowana jako data bieżąca przez cały czas. W przypadku zmiany wartości opcje te obsługują dodawanie nowych wierszy z datą obowiązywania. Technika ta powoduje jednak pojawienie się nowych wierszy z datą obowiązywania, gdy aktualizowane są inne elementy tego samego schematu. Nowe wiersze będą miały bieżącą datę lub datę/godzinę z tą samą wartością wiersza, ponieważ data lub data/godzina odwołania jest datą bieżącą, co stanowi zmianę. W produkcie nie zaleca się zarządzania charakterystyką z datą obowiązywania bez zdefiniowania daty lub daty/godziny jako elementu jawnego.

Mnemonik Poprawne wartości Opis Przykłady
is= "%effectiveDate"

Ta konfiguracja nie jest zalecana

<schema>
  <price mapField="CHAR_VAL" 
  dataType="number">
    <row 
  mapChild="CI_SA_CHAR">
      <CHAR_TYPE is="PRICE"/>
      <EFFDT
   is="%effectiveDate"/>
    </row>
  </price>
</schema>
"%effectiveDateTime"

Ta konfiguracja nie jest zalecana

<schema>
  <price mapField="CHAR_VAL" 
   dataType="number">
    <row mapChild="RATE_CHAR">
      <CHAR_TYPE is="PRICE"/>
      <EFFDT 
    is="%effectiveDateTime" />
    </row>
  </price>
</schema>

Strefa wyszukiwania

Można skonfigurować element schematu interfejsu użytkownika w taki sposób, aby włączać okno dialogowe automatycznego wyszukiwania, gdy schemat jest dołączony do odwzorowania interfejsu użytkownika obsługi.

Uwaga: Należy pamiętać, że w ramach strefy wyszukiwania można skonfigurować atrybut fkRef. Jeśli w elemencie schematu znajduje się atrybut fkRef, ale nie ma jawnych atrybutów wyszukiwania (które opisano tutaj), informacje wyszukiwania atrybutu fkRef zostaną użyte w odwzorowaniu interfejsu użytkownika. Mówiąc inaczej, jeśli element schematu zawiera już atrybut fkRef, to te jawne atrybuty wyszukiwania w ramach schematu są używane tylko do zastępowania informacji wyszukiwania fkRef.
Uwaga: Więcej informacji na temat konfiguracji strefy wyszukiwania można znaleźć w sekcji Atrybuty i funkcje odwzorowania interfejsu użytkownika.

search="search zone"

Atrybutu wyszukiwania można używać w ramach schematu odwzorowania interfejsu użytkownika. Jest on używany do automatycznego generowania atrybutu odwzorowania interfejsu użytkownika oraSearch. Strefa wyszukiwania to strefa eksploratora skonfigurowana jako wyszukiwanie.

<person fkRef="PER" search="C1_PSRCH"/>

searchField="search field:element|'literal';"

Atrybutu searchField można używać tylko w połączeniu z atrybutem wyszukiwania. Atrybut searchField jest używany do tworzenia atrybutu odwzorowania interfejsu użytkownika oraSearchField. Wartość searchField służy do wypełniania filtra strefy wyszukiwania wartością początkową, gdy uruchamiana jest strefa wyszukiwania. Wartość początkowa może być także wartością literałową. Wartość searchField służy do dopasowywania mnemoniku filtra, który także nosi nazwę searchField.

Pole wyszukiwania: element|'literal'. Pole wyszukiwania odzwierciedla filtr strefy wyszukiwania, który należy uzupełnić podczas uruchamiania. Elementem jest element schematu odwzorowania, który służy do uzupełniania filtra. Element ten jest opcjonalny. Jeśli pozostanie pusty, przyjmie wartość domyślną elementu, dla którego określono dany atrybut. Atrybut searchField przyjmuje także "literał" jako wartość wejściową.

Uwaga: Podczas uruchamiania można uzupełnić wiele filtrów w strefie wyszukiwania, ale w ramach wartości atrybutu należy utworzyć wiele par pól wyszukiwania. Podana tutaj wartość zostanie użyta do bezpośredniego tworzenia atrybutu HTML oraSearchField w ramach odwzorowania interfejsu użytkownika, w którym określono ten schemat.
Uwaga: Odwołanie do elementu jest względne. Więcej informacji na temat obsługiwanej składni dotyczącej odwoływania się do innych elementów można znaleźć w sekcji Odwołania do innych elementów.
<person fkRef="PER" search="C1_PSRCH" searchField="PERSON; PER_TYPE:personType;"/>

searchOut="search field:element;"

Atrybutu searchOut można używać tylko w połączeniu z atrybutem wyszukiwania. Atrybut searchOut jest używany do tworzenia atrybutu odwzorowania interfejsu użytkownika oraSearchOut. Wartość searchOut służy do pobierania wybranej wartości ze strefy wyszukiwania i przenoszenia jej do elementu odwzorowania interfejsu użytkownika. Podana wartość searchOutpowinna być zgodna z mnemonikiem ELEMENT_​NAME w ramach parametru strefy wyniku wyszukiwania.

Pole wyszukiwania: element. Pole wyszukiwania odzwierciedla wynik strefy wyszukiwania przeniesiony ponownie do odwzorowania interfejsu użytkownika. Elementem jest element schematu odwzorowania, który ma zostać wypełniony. Element ten jest opcjonalny. Jeśli pozostanie pusty, przyjmie wartość domyślną elementu, dla którego określono dany atrybut.

Uwaga: Można uzupełnić wiele elementów w wyniku wyboru strefy wyszukiwania, ale w ramach wartości atrybutu należy utworzyć wiele par pól wyszukiwania. Podana tutaj wartość zostanie użyta do bezpośredniego tworzenia atrybutu HTML oraSearchOut w ramach odwzorowania interfejsu użytkownika, w którym określono ten schemat.
Uwaga: Odwołanie do elementu jest względne. Więcej informacji na temat obsługiwanej składni dotyczącej odwoływania się do innych elementów można znaleźć w sekcji Odwołania do innych elementów.
<person fkRef="PER" search="C1_PSRCH" searchField="PER_ID" 
searchOut="PER_ID;PRIMARY_PHONE:personPhone;"/>

Rozszerzenie zabezpieczeń na skrypt usługi

Bezpieczeństwo usługi aplikacji będzie wymuszane wtedy, gdy obiekty biznesowy lub skrypt usługi zostanie wywołany z poziomu skryptu BPA lub odwzorowania interfejsu użytkownika, ale nie z poziomu skryptu usługi. Aby bezpieczeństwo było wymuszane podczas wywoływania obiektu biznesowego lub skryptu usługi z poziomu skryptu usługi, należy dodać następujący atrybut do schematu skryptu usługi.

appSecurity="true"

Atrybut appSecurity jest dostępny tylko dla schematów skryptów usług. Jeśli zostanie określony, dla każdego obiektu biznesowego lub skryptu usługi wywoływanego bezpośrednio przez skrypt usługi będzie przeprowadzana ocena usługi aplikacji pod kątem dostępu.

<schema appSecurity="true">
  ...
</schema>

Czynność nadpisania usługi biznesowej

Aby wywołać usługę biznesową za pomocą czynności innej niż "odczyt", należy podać atrybut czynności w ramach głównego węzła schematu usługi biznesowej.

pageAction="add, change, delete"

Atrybut czynności jest używany do nadpisywania domyślnej czynności odczytu w schemacie usługi biznesowej. Prawidłowe wartości to:

  • dodawanie

  • aktualizowanie (dozwolone tylko w przypadku usługi obiektu obsługi)

  • zmiana (niedozwolone w przypadku usługi obiektu obsługi)

  • kasowanie

  • odczyt (domyślna czynność, jeśli nie określono atrybutu pageAction)

Przykład:

<schema pageAction="change">
  <parm type="group">
    <ele1/>
    <ele2/>
  </parm>
</schema>

Określanie atrybutu searchBy dla usługi wyszukiwania

Aby wywołać usługę wyszukiwania, należy jawnie określić atrybut searchBy zgodny z elementami odwzorowanymi w schemacie.

searchBy="MAIN"

Wartości atrybutu searchBy można znaleźć, wyświetlając schemat XML powiązany z usługą biznesową za pomocą adresu URL wyświetlania XML. Typowe wartości:

  • MAIN

  • ALT

  • ALT2

  • ALT3

  • itp.
<schema searchBy="MAIN">
  <AccountID mapField="ACCT_ID"/>
  <Results type="list">
    <AccountID mapField="ACCT_ID"/>
  </Results>
</schema>

Uwzględnianie innych schematów

Nie ma ograniczeń w zakresie uwzględniania schematu w innych schematach - wszystkie typy można uwzględniać we wszystkich pozostałych typach. Uwzględnianie zagnieżdżone jest także dozwolone, a obecnie nie ma ograniczenia w zakresie głębokości zagnieżdżania.

Uwzględnienie schematu wymaga dwóch części:

  1. Węzła uwzględnienia
  2. Nazwy atrybutu

W poniższej tabeli znajdują się obsługiwane instrukcje uwzględniania.

Mnemonik Opis Przykłady

<includeBO name=" "/>

Uwzględnienie schematu obiektu biznesowego w innym schemacie jest dopuszczalne.

Należy pamiętać, że reguły odwzorowania schematu obiektu biznesowego lub usługi biznesowej mogą nie mieć zastosowania w kontekście schematu nadrzędnego. Inne schematy uwzględnia się na własne ryzyko. Bardzo przydatnym aspektem przetwarzania XML jest to, że framework ignoruje nieadekwatne atrybuty. Innymi słowy, uwzględnienie atrybutów odwzorowania w schemacie skryptu nie będzie mieć negatywnych konsekwencji.

<schema>
  <cust type="group">
<includeBO name="C1-Person"/>
</cust>
  <spouse type="group">
<includeBO name="C1-Person"/>
</spouse>
</schema>

<includeBS name=" "/>

Służy do uwzględniania schematu usługi biznesowej.

<schema>
<includeBS name="F1-ReadMOLog"/>
</schema>

<includeDA name=" "/>

Służy do uwzględniania schematu obszaru danych.

<schema>
<includeDA 
   name="F1CommonSchemaFieldData"/>
</schema>

<includeMP name=" "/>

Służy do uwzględniania schematu odwzorowania interfejsu użytkownika.

<schema>
<includeMP 
   name="F1-DisplayRecordActions"/>
</schema>

<includeSS name=" "/>

Służy do uwzględniania schematu skryptu usługi.

<schema>
<includeSS name="F1-ActShowZn"/>
</schema>

Atrybuty zgodności

Te atrybuty zostały dodane w ramach uaktualnień z poprzednich wersji frameworku.

fwRel="2"

Ten atrybut został dodany do schematów utworzonych w frameworku 2 jako część uaktualnienia frameworku 4. Nowe schematy nie będą wymagały tego atrybutu. Nie zaleca się modyfikowania tego atrybutu bez zapoznania się z następującymi różnicami w sposobie działa, ponieważ niewłaściwe zmiany mogą być przyczyną błędów.

Uwaga: Schematy utworzone w frameworku 2 z atrybutem fwRel="2" będą przechowywały dowolne pola odwzorowywane w XML w ramach grup jako elementy XML najwyższego poziomu w polu mapXML. Oznacza to, że jeśli co najmniej dwa pola w różnych strukturach grup miałyby taką samą nazwę pola, podczas ich przechowywania wystąpiłby wzajemny konflikt powodujący błąd. Nowy sposób działania, bez atrybutu fwRel="2", umożliwi zachowanie struktury grupy i uniknięcie konfliktów.
<schema fwRel="2"
    ...
</schema>