XML-Serialisierung der Regelsatz-XOMs

Im REST-Service für die Regelsatzausführung werden primitive Java™ -Typen, XSD-Typen und Java-XOM-Klassen unterschiedlich serialisiert.

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.

Weitere Informationen finden Sie in den folgenden Abschnitten:
  • 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:
    <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>
    wird der Regelsatzparameter mit dem XML-Element MyConference deklariert:
    <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.
Wenn mehrere Elemente denselben Namen haben, werden Elementknoten alphabetisch differenziert. Wenn Sie in diesem Fall möchten, dass eines der Elemente null ist, müssen Sie das Attribut xsi:nil auf true setzen. Dies ist nur möglich, wenn das Attribut nillable für das Stammelement im ursprünglichen XSD-Schema des dynamischen XOM auf true gesetzt ist. Der Standardwert des Attributs nillable ist false.

Java-XOM

Für Java-XOMs wird das Stammelement aus der Parameterdeklaration abgeleitet und die XML-Serialisierung verwendet JAXB-Annotationen. Arrays werden für Regelsatzparameter unterstützt.
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 XmlElement angeben 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 item fü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>