Beispiel einer vollständigen Tabellendefinition
<Object SchemaName="ORA-Responsibility" ParentSchemaName="ORA-Application" DisplayPattern="%vrtDistinguishedName%" IsReadOnly="true" UseDistinct="false">
<ObjectKey>
<Key Column="APPLSYS.FND_RESPONSIBILITY.RESPONSIBILITY_ID" IsDNColumn="true" IsReferencedColumn="true" X500Abbreviation="RE" />
<Key Column="APPLSYS.FND_RESPONSIBILITY.APPLICATION_ID" />
</ObjectKey>
<Tables>
<Table Name="FND_RESPONSIBILITY" Schema="APPLSYS" APK="" USN="" WhereClause="" JoinParentColumn="" JoinChildColumn="" >
<PK Column="APPLSYS.FND_RESPONSIBILITY.RESPONSIBILITY_ID" />
<ParentTableFK Column="APPLSYS.FND_RESPONSIBILITY.APPLICATION_ID" ParentColumn="APPLSYS.FND_APPLICATION.APPLICATION_ID" />
</Table>
<Table Name="FND_RESPONSIBILITY_TL" Schema="APPLSYS" APK="" USN="APPLSYS.FND_RESPONSIBILITY_TL.LAST_UPDATE_DATE" WhereClause="APPLSYS.FND_RESPONSIBILITY_TL.LANGUAGE='$SYSLANGU$'" JoinParentColumn="APPLSYS.FND_RESPONSIBILITY.RESPONSIBILITY_ID,APPLSYS.FND_RESPONSIBILITY.APPLICATION_ID" JoinChildColumn="APPLSYS.FND_RESPONSIBILITY_TL.RESPONSIBILITY_ID,APPLSYS.FND_RESPONSIBILITY_TL.APPLICATION_ID" >
<PK Column="APPLSYS.FND_RESPONSIBILITY_TL.RESPONSIBILITY_ID" />
</Table>
<Table Name="FND_APPLICATION" Schema="APPLSYS" APK="" USN="" WhereClause="" JoinParentColumn="APPLSYS.FND_RESPONSIBILITY.APPLICATION_ID" JoinChildColumn="APPLSYS.FND_APPLICATION.APPLICATION_ID" >
<PK Column="APPLSYS.FND_APPLICATION.APPLICATION_ID" />
</Table>
</Tables>
</Object>
Erläuterungen
Die vorstehende Definition zeigt die Deklaration des Schematyps ORA-Responsibility, wie sie vom Oracle E-Business Suite Konnektor intern verwendet wird.
Der Schematyp ist hierarchisch dem Schematyp ORA-Application untergeordnet (ParentSchemaName). Er hat zwei Objektschlüsselspalten (APPLSYS.FND_RESPONSIBILITY.RESPONSIBILITY_ID und APPLSYS.FND_RESPONSIBILITY.APPLICATION_ID), von denen nur eine als Bestandteil in den definierten Namen aufgenommen wird IsDNColumn="true". Die Spalte APPLSYS.FND_RESPONSIBILITY.APPLICATION_ID ist Bestandteil des DistinguishedName des übergeordneten Schematyps, der automatisch hinten angefügt wird.
Zur Selektion aller Eigenschaften werden Sätze aus den Tabellen FND_RESPONSIBILITY, FND_RESPONSIBILITY_TL und FND_APPLICATION mittels Join-Operation angefragt. Die Spalten für die Join-Operation sind jeweils in den Attributen JoinParentColumn und JoinChildColumn angegeben.
Der Beschreibungstext wird in der von der Datenbank-Verbindungskonfiguration vorgegebenen Sprache aus der Tabelle FND_RESPONSIBILITY_TL gelesen. Dafür wird in der Where-Klausel die symbolische Variable $SYSLANGU$ genutzt. Weitere Informationen finden Sie unter Symbolische Variablen in Where-Klauseln.
Methodendefinitionen
Mit dem <Functions>-Tag ist es innerhalb einer Objektdefinition möglich, Methoden zu definieren, die für Objekte des Schematyps ausführbar sind. Jede Methode führt beliebig viele SQL-Funktionen aus.
Die Benennung des XML-Tags für eine Methode bestimmt den Methodennamen. Innerhalb der Methoden-Sektion werden eine oder mehrere Funktionen definiert. Diese Funktionen werden in einer festgelegten Reihenfolge ausgeführt, wenn an einem Objekt des Schematyps die entsprechende Methode aufgerufen wird.
Struktur der Methodendefinitionen
<Functions>
<Insert>
<Function ... OrderNumber="1" >
</Function>
<Function ... OrderNumber="2" >
</Function>
</Insert>
<Delete>
<Function ...>
</Function>
</Delete>
</Functions>
Im Beispiel hat der Schematyp zwei Methoden, Insert und Delete. Beim Aufruf von Insert sind zwei Funktionen auszuführen, die durch ihr OrderNumber-Attribut in eine feste Reihenfolge gebracht werden. Beim Aufruf der Delete-Methode wird nur eine definierte Funktion ausgeführt.
Funktionsdefinitionen
Die <Function>-Sektion definiert Name, Ausführungsreihenfolge und Parametrisierung von SQL-Funktionsaufrufen.
Tabelle 12: Attribute einer Funktionsdefinition
Name |
Name der Funktion. Vollständige Notation in der Form <Schemaname>.<Paketname>.<Funktionsname>. |
OrderNumber |
Numerische Angabe der Ausführungsreihenfolge. Der Standardwert ist 1. |
Eine Sonderstellung nimmt dabei das Funktionspaket ein, welches Funktionen zur Modifikation von Benutzerkonten bereitstellt (APPS.FND_USER_PKG). Aufgrund der Berechtigungseinschränkungen bei der Ausführung von Funktionen dieses Paketes kann es notwendig sein, ein Wrapper-Paket zu implementieren, welches den Aufrufkontext ändert. Der Name dieses Wrapper-Paketes kann in der Verbindungskonfiguration gespeichert werden. Er wird zur Laufzeit vor der Ausführung der Funktion in dem SQL-Block ersetzt. Die symbolische Variable für den definierten Paketnamen lautet $ebsUserPackageName$. Weitere Informationen finden Sie unter Initiales Synchronisationsprojekt erstellen.
Beispiel
<Function Name="$ebsUserPackageName$.CreateUser" OrderNumber="1" >
Parameterdefinitionen
Die <Parameter>-Tags definieren die an eine Funktion zu übergebenden Parameter, deren Typ und die Quelle des Parameterwertes.
Tabelle 13: Attribute einer Parameterdefinition
Name |
Name des Parameters in der Funktionsdefinition. |
PropertyName |
Name der Objekteigenschaft, deren Wert übergeben werden soll (vollständige Notation).
- ODER -
Festwert, wenn PropertyType="FIX" definiert ist. |
PropertyType |
Datentyp. Mögliche Werte sind:
- CHAR: Zeichenkette.
- DATE: Datumswert. Der Wert wird als gültiges Datum konvertiert.
- FIX: Fester Stringwert. Es wird immer der im Attribut PropertyName angegebene Festwert übergeben.
- NUM: Numerischer Wert. Die Konvertierung lässt keine alphanumerischen Zeichen zu.
|
Mandatory |
Gibt an, ob der Parameter ein Pflichtparameter ist. Der Standardwert ist false. |
NullValue |
Wert oder Zeichenkette, die als Null-Wert übergeben werden soll.
Diese Angabe ist notwendig, um Parameter mit speziell in Funktionspaketen definierten oder in Oracle Database allgemein bekannten Werten als Null-Repräsentation zu bestücken. Die Angabe dieses Attributes ist optional. Als Standard wird bei Erkennung eines Null-Wertes auf einem Pflichtparameter die Zeichenkette null übergeben. Ein optionaler Parameter wird in diesem Fall nicht an den Funktionsaufruf übergeben.
In drei Fällen ist eine Null-Wert-Definition sinnvoll:
- Verwendung einer im Funktionspaket definierten Konstante, beispielsweise $ebsUserPackageName$.null_number. Hierbei würde der Name des in der Verbindungskonfiguration gespeicherten Funktionspaketes zur Benutzerkonten-Modifikation eingesetzt, sofern der variable Ausdruck $ebsUserPackageName$ erkannt wird.
- Verwendung einer in der Oracle Database definierten symbolischen Konstante, beispielsweise sysdate.
- Verwendung eines speziellen Ausdrucks ungleich null, beispielsweise to_date('-2', 'J').
|
Beispiel
<Parameter Name="start_date" PropertyName="APPS.FND_USER_RESP_GROUPS_DIRECT.START_DATE" PropertyType="DATE" Mandatory="TRUE" NullValue="sysdate" />