XML-Serialisierung der Regelsatz-XOMs
Regelsatzparameter werden abhängig davon, ob sie als XML-Elemente oder als Java-Typen ausgedrückt werden, unterschiedlich behandelt.
Primitive Typen
Primitive Typen sind Java-Typen und Klassen, die als integrierte Zeichenfolgen geschrieben werden können. Das XML-Element, das für die Serialisierung eines primitiven Typs als Regelsatzparameter verwendet wird, ist der Name des Regelsatzparameters im Parameternamespace.
- Im Abschnitt Zielnamespaces ändern wird erläutert, wie der Parameternamespace über die Regelsatzansicht in der Rule Execution Server -Konsole angepasst wird.
- XML-Serialisierung von Java-Typen zeigt die XML-Typen und JAXB-Annotationen (Java Architecture for XML Binding) für primitive Java-Typen und einfache Typen.
Dynamisches XOM
Für dynamische XOMs richtet sich das Stammelement nach der Definition der Regelsatzparameter. Die XML-Beschreibung wird mit dem ursprünglichen XSD-Code des dynamischen XOM serialisiert, auf dem der Regelsatz basiert.
- Name des Stammelements
- Für Regelsätze, die auf einem dynamischen XOM basieren wird der Name des Stammelements folgendermaßen bestimmt:
- Wenn der Parameter ein XML-Element in der Regelsatzsignatur ist, wird dieses Element als Stammelementname des Parameters in Anforderungen und Antworten verwendet.
- Wenn der Parameter ein komplexer oder primitiver Java-Typ ist, wird der Parametername als Stammelementname des Parameters in Anforderungen und Antworten innerhalb des konfigurierten
param-Namensbereichs verwendet.Hinweis: Ein Regelsatzparameter wird aus einem XML-Element deklariert, wenn er die folgende Bedingung erfüllt: Dieser Parameter verwendet einen komplexen XML-Typ, für den ein XML-Element aus diesem komplexen Typ in der ursprünglichen importierten XSD-Datei deklariert wurde. Ausgehend von der folgenden XSD-Definition beispielsweise:
wird der Regelsatzparameter mit dem XML-Element<xsd:element name="MyConference"> <xsd:complexType> <xsd:sequence> <xsd:element name="session" type="session" maxOccurs="unbounded"/> <xsd:element name="participant" type="participant" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element>MyConferencedeklariert:<par:Request xmlns:par="http://www.ibm.com/rules/decisionservice/myruleapp/myruleset/param" xmlns:jav="http://www.acme.com/myconference"> <jav:MyConference> <jav:session> […] <jav:session> <jav:MyConference> </par:Request>
- Serialisierung
- Das Stammelement richtet sich nach Ihren XML-Typen.
- Für komplexe XML-Typen verwendet die Parameterdeklaration den Parameternamen (im Parameternamespace) als Stammelement.
- Für XML-Elemente verwendet die Parameterdeklaration das definierte XML-Element als Stammelement im ursprünglichen Namespace. In diesem Fall ist der Name des Parameters, der jedem Knoten zugeordnet ist, im WADL-Code als Kommentarnachricht enthalten.
Java-XOM
- Name des Stammelements
Für Regelsätze, die auf einem Java-XOM basieren, verwendet die Parameterdeklaration den Parameternamen (im Parameternamensbereich) als Stammelement.
- Serialisierung
- Die XML-Struktur von Java-XOM-Klassen wird durch den JAXB-Standardprozess serialisiert. Wenn die Standardserialisierung
nicht die Ergebnisse liefert, die Sie für Ihre Klassen erwarten,
können Sie den Serialisierungsprozess mit JAXB-Annotationen
anpassen.Hinweis: Ein Parameter ist nur als XML-Element, wenn Sie ihn mit einer Annotation
XmlElementangeben oder wenn gültige Methoden getXXX und setXXX auf den Parameter angewendet werden. - Arrays als Regelsatzparameter
- In Java-XOM können Sie Regelsatzparameter als einfache oder mehrdimensionale Arrays angeben. Die XML-Serialisierung wird für die einzelnen Array-Typen unterschiedlich verarbeitet:
- Wenn der Regelsatzparameter ein einfaches Array ist, wird der Parametername als Standardarray in XML wiederholt.
- Wenn der Regelsatzparameter ein mehrdimensionales Array ist, wird der Parametername als
Standardarray-Typ für die erste Dimension in XML wiederholt und
verwendet dann Elemente des Typs
itemfür die nachfolgenden Dimensionen. Zum Beispiel:<myMultiDimArrayParam> <item>1</item> <item>2</item> </myMultiDimArrayParam> <myMultiDimArrayParam> <item>3</item> <item>4</item> <item>5</item> </myMultiDimArrayParam>