VERBUNDANWENDUNGEN - GESTALTUNG UND VERWALTUNG
WSDL wird häufig im Kontext von Web-Services verwendet, um die von einem Web-Service implementierten Schnittstellen zu definieren. In der Regel wird eine SOAP-Bindung verwendet, um die konkrete Realisierung der Schnittstelle von einem Web-Service anzugeben, der das SOAP-Protokoll unterstützt. Die WSDL-Syntax, die in Dateien verwendet wird, die vom Eigenschaftsbrokereditor in Domino Designer erstellt wurden, ist mit der in WebSphere Portal unterstützten Syntax vergleichbar.
Hinweis Weitere Informationen zum Verwenden von WSDL-Dateien in Portal finden Sie in der WebSphere Portal-Dokumentation.
Wenn Sie eine Kopie der WSDL-Datei in der NSF-basierten Verbundanwendung speichern möchten, öffnen Sie die Anwendung in IBM® Lotus® Domino(TM) Designer und navigieren Sie im Gestaltungsfenster zu Verbundanwendungen - Verbindungseigenschaften. Wählen Sie die WSDL-Datei auf der Festplatte mithilfe der Aktion WSDL importieren aus und erstellen Sie ein Gestaltungselement des Typs "Verbindungseigenschaften". Dieses Gestaltungselement kann anschließend wie alle anderen Notes-Gestaltungselemente gespeichert und aus Schablonen übernommen oder vor Schablonenaktualisierungen geschützt werden.
Mit dem Eigenschaftsbrokereditor können Sie auch Ihre eigenen WSDL-Dateien von Grund auf neu erstellen. Weitere Informationen hierzu finden Sie unter "Den Eigenschaftsbrokereditor in Domino Designer verwenden".
Die folgenden Abschnitte dieses Themas enthalten weitere Informationen zur Syntax der in Domino Designer und WebSphere Portal verwendeten WSDL-Dateien. Das folgende Beispiel zeigt im Besonderen, wie Click-to-Action zwischen Portlets einige der Elemente im WSDL-Dokument verwendet. Es werden die Erweiterungen zum Element <binding> sowie das vollständige Schema für WSDL-Erweiterungen beschrieben.
WSDL-Syntax
Im Folgenden finden Sie spezifische Informationen zur Syntax in WSDL-Dateien in Domino Designer und WebSphere Portal.
<types>
Für Verbundanwendungskomponenten deklariert dieses Element den Datentyp der zu übertragenden Daten. Der Datentyp wird mithilfe von XML-Schema-Datentypen deklariert (XSD, siehe XSD-Spezifikation). Im WSDL-Dokument können mehrere Typen definiert sein. Im Folgenden finden Sie eine Beispieldeklaration für einen Beispieldatentyp mit der Bezeichnung "TrackingIDType":
<xsd:simpleType name="TrackingIDType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
</types>
<message>
Eingabenachrichten können nur einen Teil enthalten.
<operation>
Bietet eine abstrakte Definition einer Click-to-Action-Operation. Beachten Sie die Einschränkung zu Eingabenachrichten weiter oben.
<portType>
Definiert eine abstrakte Sammlung von Operationen. Die Operationen müssen im Dokument definiert sein. Jede Operation entspricht einer Aktion im Click-to-Action-fähigen Portlet. Es sollten nur Aktionen deklariert werden, die für Click-to-Action aktiviert wurden.
<binding>
Das Element "binding" wird erweitert, um Portletaktionen mit Operationen zu verknüpfen. Für jede Operation muss der Name der Portletaktion festgelegt werden. Der Name der Portletaktion kann mit dem Attribut name des Aktions-Tags im Abschnitt binding der WSDL-Datei angegeben werden. Wenn er nicht angegeben wird, wird das Attribut name aus dem Tag operation als Name für die Portletaktion verwendet. Für jeden Parameter operation muss der Parametername action angegeben werden. Der Parametername portlet kann mit dem Namensattribut des Tags param im Abschnitt "binding" der WSDL-Datei angegeben werden. Wenn er nicht angegeben wird, wird das Attribut "name" des Tags part, das mit dem Tag param verknüpft ist, als Parametername für das Portlet verwendet.
Des Weiteren kann das Attribut boundTo verwendet werden, um anzugeben, wo der Parameter gebunden wird. Zur Auswahl stehen "request-parameter", "request-attribute", "session-attribute" oder "action-attribute".
Das Element <binding> enthält kooperative Portleterweiterungen, die unter "Erweiterungen zum Element <binding>" beschrieben sind (siehe WSDL-Beispiel).
Wenn Sie mit der WSDL-Syntax vertraut sind, werden Sie feststellen, dass der Abschnitt service (Element <service> in der WSDL) in der Beispiel-Deklarationsdatei nicht verwendet wird. Der Grund dafür ist, dass die Datei einem bestimmten Portlet zugeordnet ist, das die in der Datei definierten Operationen über externe Mittel implementiert (ein Eintrag in der Datei portlet.xml, die mit dem Portlet verknüpft ist).
Erweiterungen zum Element <binding>
Das Element <binding> wurde erweitert, um kooperative Komponenten und Portlets zu unterstützen. Die folgenden Beispiele beziehen sich auf die Verwendung mit Portlets.
Jedes Erweiterungselement enthält das Präfix "portlet:", das sich auf den C2A (Click-to-Action)-Namespace, "http://www.ibm.com/wps/c2a", bezieht. Das Präfix "portlet:" wird verwendet, um die Erweiterungselemente in diesem Abschnitt zu identifizieren. Sie können jedoch auch einen anderen Namen als Präfix verwenden, so lange dieser auf den C2A-Namespace verweist. Die Elemente sind im Folgenden beschrieben. Weitere Informationen finden Sie außerdem im Abschnitt zum WSDL-Erweiterungsschema weiter hinten in diesem Thema.
<portlet:binding>
Dies muss das erste untergeordnete Element des WSDL-Elements <binding> sein. Sein Vorhandensein identifiziert den Abschnitt als C2A-Bindungserweiterung für den Aufruf der Portletaktion. Das Element hat das folgende Attribut.
Veraltet. Die Angabe von "style="struts"" weist darauf hin, dass Struts-Aktionen deklariert werden. Sie sollten stattdessen zu diesem Zweck "type=struts" im Element <portlet:action> verwenden.
Dies muss das erste untergeordnete Element eines WSDL-Elements <operation> im Abschnitt "binding" sein. Es enthält folgende Attribute:
Der Name der Portletaktion. Wenn er nicht angegeben wird, wird der Name des zugeordneten Elements "operation" als Name für die Portletaktion verwendet.
Eine kurze Zeichenfolge zur Aktion, die für die Anzeige in der Benutzeroberfläche des Portlets geeignet ist. Für übersetzte Beschriftungen geben Sie im Punktformat den Namen des Schlüssels in den Ressourcenbündeln an, aus denen die Beschriftung abgerufen wird. Weitere Informationen hierzu finden Sie unter "Internationalization support".
Gibt einen der folgenden Werte an:
Eine Textbeschreibung der Aktion. Für übersetzte Beschreibungen geben Sie im Punktformat den Namen des Schlüssels in den Ressourcenbündeln an, aus denen die Beschreibung abgerufen wird.
Geben Sie entweder "true" oder "false" an. Bei "false" muss die Aktion in jeder Sitzung programmatisch aktiviert werden. Bei "true" (Vorgabe) ist die Aktion aktiv, sobald das Portlet initialisiert wird.
Wenn mehrere Aktionen basierend auf dem Datentyp für das Portlet übereinstimmen, kann dieses Attribut verwendet werden, um anzugeben, welche Aktion ausgelöst werden soll. Mehrere übereinstimmende Aktionen können auftreten, wenn ein Benutzer eine Aktion in einer Quelle sendet. Wenn nicht anders angegeben, ist die Vorgabe "false". Wenn keine Aktion auf "true" gesetzt ist, werden die Daten nicht an das Ziel übertragen. Im folgenden Beispiel sind zwei Aktionen deklariert: "trackingDetails" und "routingDetails". "selectOnMultipleMatch" wird verwendet, um anzugeben, dass im Fall einer mehrfachen Übereinstimmung "trackingDetails" verwendet werden sollte.
<portlet:binding/>
<operation name="trackingDetails">
<portlet:action caption="Tracking Details"
description="Tracking-Details für
angegebene Tracking-ID abrufen"
selectOnMultipleMatch="true"/>
<input>
<portlet:param name="trackingId" partname="trackingId"/>
</input>
<output>
<portlet:param name="customerName" partname="custName" boundTo="session"/>
</output>
</operation>
<operation name="routingDetails">
<portlet:action caption="Routing Details"
description="Routing-Details für angegebene Tracking-ID abrufen"/>
</binding>
<portlet:param>
Dieses Element muss als untergeordnetes Element in den Subelementen <input> oder <output> des Elements <operation> in der Bindung angegeben werden. Es gibt die Parameter an, die von der Portletaktion konsumiert (wenn im Element <input> eingeschlossen) oder produziert (wenn im Element <output> eingeschlossen) werden. Derzeit ist die Anzahl der konsumierten Parameter auf maximal einen beschränkt. Die Anzahl der produzierten Parameter kann eine beliebige sein. Das Element verfügt über folgende Attribute:
Der Name des Parameters. Wird dieser nicht angegeben, wird der Wert des Namensattributs des Elements "part" als Parametername verwendet.
Bezieht sich auf ein Element "part" der Ein- oder Ausgabe für die Operation. Er kann ausgelassen werden, wenn die Ein- oder Ausgabe nur aus einem Teil besteht.
Gibt an, wo der Parameterwert gebunden wird. Derzeit kann diesem Attribut nur einer der folgenden Werte zugewiesen werden:
Im Folgenden finden Sie das Schema für die Erweiterungselemente, die unter Verwendung von Click-to-Action für den Aufruf der Portletaktion eingeführt wurden. Die Zeilen wurden zum Zwecke der Lesbarkeit umbrochen.
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:xsd="http://www.w3.org/2001/XMLSchema
targetNamespace="http://www.ibm.com/wps/c2a"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/
http://schemas.xmlsoap.org/wsdl/
http://www.w3.org/2001/XMLSchema
http://www.w3.org/2001/XMLSchema.xsd"
xmlns:portlet="http://www.ibm.com/wps/c2a">
<!-- Das Element "binding" gibt an, dass der Abschnitt "binding" benutzerdefinierte Erweiterungen enthält, die eine Zuordnung der Operationen zu Portletaktionen beschreiben. Dies muss in ein WSDL-Element "binding" eingefügt werden. -->
<element name="binding" type="portlet:bindingType"/>
<complexType name="bindingType">
<!-- VERALTET, wurde aber aus Kompatibilitätsgründen mit Version 4 beibehalten. Verwenden Sie stattdessen das Attribut "type" des Elements "action". Setzen Sie den Wert für ein Portlet, das mit dem Struts-Framework implementiert wurde, auf "struts". -->
<attribute name="style" type="string" use="optional"/>
</complexType>
<!-- Das Element "action" wird verwendet, um alle Informationen zur Portletaktion zur Verfügung zu stellen, die erforderlich sind, damit der Eigenschaftsbroker sie aufrufen kann. Es muss in ein Element "wsdl:operation" im Abschnitt "wsdl:binding" eingefügt werden. -->
<complexType name="actionType">
<sequence>
<!-- Das Element "param" wird verwendet, um Informationen zu der der Aktion zugeordneten Ein- oder Ausgabeeigenschaft und zum Mechanismus für die Übergabe der Parameter an oder von der Aktion anzugeben. Es muss in ein Element "wsdl:input" oder "wsdl:output" eingefügt werden. -->
<element name="param" type="portlet:paramType" minOccurs="0"maxOccurs="unbounded"/>
</sequence>
<!-- Der Name der Aktion. Wird als Name der Portletaktion festgelegt. Wird dieser nicht angegeben, wird der Name des entsprechenden Elements "operation" als Aktionsname verwendet. -->
<attribute name="name" type="string" use="optional"/>
<!-- "default", "simple" und "struts" sind derzeit gültige Werte, wobei "default" die Vorgabe ist. Wird verwendet, um anzugeben, ob zum Aufrufen der Portletaktion der Mechanismus "DefaultPortletAction", "simple portlet action" oder "struts action" verwendet wird. Beachten Sie, dass die Verwendung von "DefaultPortletAction" veraltet ist und die Vorgabe aus Gründen der Rückwärtskompatibilität auf diesen Wert gesetzt wurde. Es wird empfohlen, diesen Wert auf "simple" zu setzen, um Probleme bei zukünftigen Migrationen zu vermeiden. -->
<attribute name="type" type="string" use="optional" default="default"/>
<!-- Ein kurzer Name für die Aktion, die dem Endbenutzer angezeigt wird. Wenn für das Portlet eine Nachrichtenressourcendatei vorhanden ist, wird der Wert als Schlüssel zum Abrufen einer übersetzten Zeichenfolge verwendet -->
<attribute name="caption" type="string" use="optional"/>
<!-- Eine Beschreibung der Aktion, die dem Endbenutzer angezeigt wird. Wenn für das Portlet eine Nachrichtenressourcendatei vorhanden ist, wird der Wert als Schlüssel zum Abrufen einer übersetzten Zeichenfolge verwendet -->
<attribute name="description" type="string" use="optional"/>
<!-- Wenn ein Eigenschaftswert von mehreren Portletaktionen gleichzeitig verarbeitet werden kann, werden nur diejenigen aufgerufen, deren Attribut "invokeOnMultipleMatch" auf "true" gesetzt ist -->
<attribute name="selectOnMultipleMatch" type="boolean" use="optional" default="false"/>
<!-- Wenn das Attribut "activeOnStartup" auf "true" gesetzt ist, kann die Aktion jederzeit für den Aufruf ausgewählt werden, es sei denn, sie wird für einzelne Sitzungen programmatisch deaktiviert. Wenn "activeOnStartup" auf "false" gesetzt ist, kann die Aktion nur dann für den Aufruf verwendet werden, wenn sie für einzelne Sitzungen programmatisch aktiviert wird -->
<attribute name="activeOnStartup" type="boolean" use="optional" default="true"/>
<!-- Das Element "param" gibt an, wie der Parameter an die Portletaktion übergeben bzw. von dieser abgerufen werden soll, nachdem die Aktion ausgeführt wurde -->
<complexType name="paramType">
<!-- Der Name des Parameters, der bei dem Aufruf der Aktion verwendet werden soll. Wird er ausgelassen, wird "partname" verwendet. Dieser Name wird auch als Name der entsprechenden Eigenschaft festgelegt. Eine Beschreibung der Eigenschaften finden Sie im Dokument zum Programmiermodell. -->
<!-- Der Name des entsprechenden Teils. Darf nur ausgelassen werden, wenn für die Aktion ein einzelner Parameter vorhanden ist. In diesem Fall wird er aus der zugeordneten Operationsdefinition abgeleitet-->
<attribute name="partname" type="string" use="optional"/>
<!-- Gibt an, wo der Parameter vor dem Aufrufen der Aktion (im Fall von Parametern des Typs "in") platziert werden soll, bzw. wo nach dem Aufrufen der Aktion nach ihm gesucht werden soll (im Fall von Parametern des Typs "out").Gültige Werte sind "request-attribute", "request-parameter", "session", und "action". -->
<attribute name="boundTo" type="string" default="request-parameter"/>
<!-- Die Java-Klasse für den Parameter. Die Vorgabe ist "java.lang.String". Wird derzeit nicht verwendet, kann jedoch zukünftig zur Validierung verwendet werden -->
<attribute name="class" type="string" default="java.lang.String"/>
<!-- Ein Kurzname für den Parameter, der dem Endbenutzer angezeigt wird. Wenn für das Portlet eine Nachrichtenressourcendatei vorhanden ist, wird der Wert als Schlüssel zum Abrufen einer übersetzten Zeichenfolge verwendet -->
<!-- Eine Beschreibung des Parameters, die dem Endbenutzer angezeigt wird. Wenn für das Portlet eine Nachrichtenressourcendatei vorhanden ist, wird der Wert als Schlüssel zum Abrufen einer übersetzten Zeichenfolge verwendet -->
</xsd:schema>
Sie können vorhandene WSDL-Dateien beim Generieren von NSF- und Eclipse-Komponente als Ausgangspunkt verwenden. Es wird jedoch empfohlen, dass Sie bei der Arbeit mit WSDL-Dateien den Eigenschaftsbrokereditor verwenden.
WSDL-Beispiel für Verbundanwendungen in Domino Designer
Verwenden Sie die folgenden Beispielsyntax und die Anmerkungen (in Fett) als Referenz, wenn Sie Ihre eigene Beispiel-Verbundanwendung mit Lotus Notes erstellen.
<definitions name="Property Broker WSDL"
targetNamespace="http://www.ibm.com/wps/c2a/testwsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:portlet="http://www.ibm.com/wps/c2a"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.ibm.com/wps/c2a/testwsdl"
xmlns:cus="com.ibm.compositeapps.samples" -so können Sie Ihren eigenen Beispiel-Namespace hinzufügen (1)
xmlns:cut="com.ibm.compositeapps.samples.2" -dies ist ein weiterer Beispiel-Namespace (2)
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:schema targetNamespace="com.ibm.compositeapps.samples"> -this is a custom namespace (1)
<xsd:simpleType name="SubjectType"> -dies ist der Typname
<xsd:restriction base="xsd:string"/>
<xsd:schema targetNamespace="com.ibm.compositeapps.samples.2"> zeigt einen weiteren Namespace (2)
<xsd:simpleType name="AccountType">
<xsd:simpleType name="IDType">
<xsd:simpleType name="CustomerType">
<message name="New_Response_Action_Operation_Input">
<part name="SubjectPart" type="cus:SubjectType"/> -Beachten Sie, dass "cus" auf den Namespace verweist (1) -- ordnet die Eigenschaft dem Typ zu
</message>
<message name="New_Response_Action_Operation_Output">
<part name="AccountPart" type="cut:AccountType"/> -Beachten Sie, dass "cut" auf den Namespace verweist (1)
<part name="IDPart" type="cut:IDType"/>
<message name="OnViewEntrySelectionChange_Property_Operation_Output">
<part name="CustomerPart" type="cut:CustomerType"/>
<portType name="NotesDB_Operations"> - dieser Abschnitt ist als Teil des WSDL-Standards erforderlich
<operation name="New_Response_Action_Operation">
<input message="tns:New_Response_Action_Operation_Input"/>
<output message="tns:New_Response_Action_Operation_Output"/>
<operation name="OnViewEntrySelectionChange_Property_Operation">
<output message="tns:OnViewEntrySelectionChange_Property_Operation_Output"/>
</portType>
<binding name="Notes_Binding" type="tns:NotesDB_Operations">
<operation name="New_Response_Action_Operation"> -dies ist eine Aktion mit einer Eingabeeigenschaft und zwei Ausgabeeigenschaften. Weitere Informationen finden Sie im Hinweis unten.
<portlet:action name="New Response Action" caption="NewResponseCaption" -dieser Name ist der Name, der in der Domino Designer-Benutzeroberfläche in der InfoBox "Aktion" angezeigt wird description="NewResponseDesc.id"/>
<portlet:param name="Subject" -dieser Name ist der Eigenschaftsname, er muss in einer WSDL-Datei eindeutig sein partname="SubjectPart" -"partname" wird für die Zuordnung zu "part name=" unter <message> caption="subjectCaption" description="subjectDesc.id"/> verwendet
<output> -es können 0-N Ausgabeeigenschaften in einer Aktion vorhanden sein
<portlet:param name="Account" partname="AccountPart" caption="accountCaption" description="accountDesc.id"/>
<portlet:param name="ID" partname="IDPart" caption="id" description="idDesc.id"/>
<operation name="OnViewEntrySelectionChange_Property_Operation"> -dies ist eine Ausgabeeigenschaft
<portlet:action name="OnDocSelectionChange" -dieser Name spielt keine Rolle, er muss jedoch in einer WSDL-Datei eindeutig sein caption="DocSelectionCaption" description="DocSelectionDesc.id"/>
<portlet:param name="Customer" partname="CustomerPart" caption="customer" description="customer.id"/>
</definitions>
Richtlinien für WSDL-Dateien
Befolgen Sie beim Erstellen der WSDL-Dateien folgende Richtlinien: