Mustercode 'Web Services using HTTP nodes' erstellen

Der Mustercode 'Web-Services using HTTP nodes' besteht aus zwei Teilen:

Mustercode 'Web Service Host' erstellen

Alle Dateien, die für die Ausführung des Mustercodes 'Web Service Host' erforderlich sind, sind im Lieferumfang enthalten. Wenn Sie den Mustercode jedoch selbst erstellen möchten, gehen Sie wie folgt vor:

So erstellen Sie den Mustercode 'Web Service Host':

  1. Importieren Sie den Mustercode 'Web Service', damit die C-Headerdatei zur Nutzung verfügbar ist. Weitere Informationen erhalten Sie im Abschnitt Mustercode 'Web Services using HTTP nodes'.
  2. Erstellen Sie einen Nachrichtensatz, der für Nachrichten sowohl im Web-Service-Format (XML) als auch im traditionellen Format (CWF) dient:
    1. Starten Sie das WebSphere Message Broker Toolkit.
    2. Klicken Sie auf Datei > Neu > Nachrichtensatz .
    3. Geben Sie im Feld Name des Nachrichtensatzes den Namen WSHOST_BUILD_MS1 ein.
    4. Geben Sie im Feld Name des Nachrichtensatzprojekts den Namen WSHOST_BUILD_MSP1 ein und klicken Sie auf Weiter.
    5. Wählen Sie im Feld Select the type of message data that you will be working with most often (Wählen Sie den Nachrichtendatentyp aus, mit dem Sie am häufigsten arbeiten werden) die Option XML documents (general) (XML-Dokumente (allgemein)) aus. Wählen Sie dann Binary data (for example, C or COBOL structures) (Binärdaten (z. B. C- oder COBOL-Strukturen)) aus und klicken Sie auf Fertigstellen.
    6. Klicken Sie in der Registerkarte messageSet.mset unter der Eigenschaftenhierarchie mit der rechten Maustaste auf Binary1, wählen Sie Umbenennen aus und geben Sie den neuen Namen CWF1 ein; klicken Sie anschließend auf Fertigstellen.
    7. Speichern und schließen Sie messageSet.mset.
  3. Importieren Sie eine C-Headerdatei, die der Eingabe- und der Ausgabenachricht der traditionellen Anwendung zugeordnet wird:
    1. Kopieren Sie in der Broker-Entwicklungsansicht die Datei legacyservice.h aus dem Projekt 'WSHOST_LEGACY1' und fügen Sie sie in das Projekt 'WSHOST_BUILD_MSP1' ein.
    2. Erstellen Sie auf Basis der C-Headerdatei eine Nachrichtendefinitionsdatei:
      1. Klicken Sie in der Ansicht 'Brokerentwicklung' unter 'WSHOST_BUILD_MSP1' mit der rechten Maustaste auf legacyservice.h und anschließend auf Neu > Nachrichtendefinitionsdatei aus > C-Headerdatei; klicken Sie dann auf Weiter.
      2. Stellen Sie sicher, dass für das Feld Nachrichtensatz /WSHOST_BUILD_MSP1/WSHOST_BUILD_MS1 festgelegt ist.
      3. Setzen Sie den Zielnamensbereich auf http://www.brokersamplewshost.ibm.com und klicken Sie dann auf Weiter.
      4. Klicken Sie im Bereich mit den Quellenstrukturen auf tagIA81CONF, dann auf die Schaltfläche mit dem Rechtspfeil (>) und schließlich auf Alle auswählen > Fertigstellen.
    3. Erweitern Sie im Fensterbereich legacyservice.mxsd den Eintrag Nachrichten und klicken Sie mit der rechten Maustaste darauf. Wählen Sie Nachricht hinzufügen aus. Geben Sie IA81CONFIN ein, klicken Sie auf Komplexer Typ und wählen Sie in der Liste tns:tagIA81CONF aus. Wiederholen Sie diesen Schritt für 'IA81CONFOUT'.
    4. Speichern und schließen Sie legacyservice.mxsd.
  4. Erstellen Sie eine SOAP-Nachrichtendefinition:
    1. Klicken Sie in der Ansicht 'Brokerentwicklung' mit der rechten Maustaste auf den Nachrichtensatz WSHOST_BUILD_MS1, den Sie bereits erstellt haben, und klicken Sie dann auf Neu > Nachrichtendefinitionsdatei aus > IBM eigene Nachricht.
    2. Wählen Sie im Teilfenster 'IBM eigene Nachrichten' die Option SOAP 1.1 Envelope aus und klicken Sie anschließend auf Fertigstellen.
    3. Speichern und schließen Sie die Datei soapenv11.mxsd.

      In der Fehleransicht von Message Broker Toolkit werden eine Reihe von Warnungen angezeigt. Diese werden dadurch ausgelöst, dass für eine SOAP-Nachrichtendefinition das CWF-Format definiert wurde. Diese Warnungen können ignoriert werden.

  5. WSDL generieren:
    1. Klicken Sie in der Ansicht 'Brokerentwicklung' mit der rechten Maustaste auf den Nachrichtensatz WSHOST_BUILD_MS1 und wählen Sie dann Generieren > WSDL-Definition aus.
    2. Wählen Sie das Optionsfeld Neue WSDL-Definition auf Basis bestehender Nachrichtendefinitionen generieren aus und klicken Sie auf Weiter.
    3. Markieren Sie WSHOST_BUILD_MSP1 und klicken Sie anschließend auf Neuen Ordner erstellen.
    4. Geben Sie wsdl als Ordnername ein, klicken Sie auf OK und dann auf Weiter.
    5. Stellen Sie im Teilfenster zum Angeben von WSDL-Details sicher, dass Stil auf document (Dokument) gesetzt ist, und klicken Sie auf Weiter.
    6. Wählen Sie im Operationen-Teilfenster aus der Liste den Eintrag IA81CONFIN für die Eingabe und IA81CONFOUT für die Ausgabe aus; klicken Sie dann auf Weiter.
    7. Wählen Sie im Bindungen-Teilfenster das Optionsfeld SOAP/HTTP aus und legen Sie für Port Address (Portadresse) http://localhost:7080/samplebrokerwshost fest; klicken Sie anschließend auf Fertigstellen.
  6. Erstellen Sie einen Nachrichtenfluss. Der Nachrichtenfluss übernimmt eine HTTP-Anforderung, führt die traditionelle Anwendung mithilfe von WebSphere MQ aus und leitet Informationen aus der Antwort der traditionellen Anwendung an den HTTP-Anforderer weiter.

    Gehen Sie folgendermaßen vor, um den Nachrichtenfluss zu erstellen:

    1. Klicken Sie auf Datei > Neu > Nachrichtenbrokerprojekt.
    2. Setzen Sie Projektname auf WSHOST_BUILD_MFP1 und klicken Sie dann auf Weiter.
    3. Aktivieren Sie im Teilfenster für Projekte, auf die verwiesen wird, das Kontrollkästchen WSHOST_BUILD_MSP1 und klicken Sie auf Fertigstellen.
    4. Klicken Sie in der Ansicht 'Brokerentwicklung' mit der rechten Maustaste auf WSHOST_BUILD_MFP1 und klicken Sie dann auf Neu > Nachrichtenfluss.
    5. Setzen Sie die Option Nachrichtenflussname auf WSHOST_WSHOST1.
    6. Inaktivieren Sie Use default broker schema (Standardbrokerschema verwenden).
    7. Setzen Sie die Option Schema auf WSHOST_MFP1 und klicken Sie dann auf Fertigstellen.
    8. Fügen Sie im Nachrichtenflusseditor die in der folgenden Tabelle aufgelisteten Knoten hinzu, und benennen Sie diese um.
      Die entsprechenden Anweisungen finden Sie in der WebSphere Message Broker-Dokumentation unter Knoten hinzufügen.
      Palettenfächer Knotentyp Knotenname
      HTTP HTTPEmpfang HTTP Input
      Transformation Rechnen Rechnen
      Transformation Rechnen Compute1
      Transformation Rechnen Compute2
      WebSphere MQ MQOutput MQOutput to legacy
      WebSphere MQ MQOutput MQOutput store HTTP state
      WebSphere MQ MQGet MQGet stored HTTP state
      WebSphere MQ MQInput MQInput from legacy
      HTTP HTTPAntwort HTTPAntwort
    9. Verbinden Sie die Knoten anhand der nachfolgenden Tabelle miteinander.
      Anweisungen hierzu finden Sie in der Dokumentation zu WebSphere Message Broker im Abschnitt Knoten verbinden.
      Knotenname Terminal Mit diesem Knoten verbinden
      HTTPEmpfang Ausgangsterminal Rechnen
      Rechnen Ausgangsterminal MQOutput to legacy
      MQOutput to legacy Ausgangsterminal Compute1
      Compute1 Ausgangsterminal MQOutput store HTTP state
      MQInput from legacy Ausgangsterminal MQGet stored HTTP state
      MQGet stored HTTP state Ausgangsterminal Compute2
      Compute2 Ausgangsterminal HTTPAntwort
  7. Passen Sie den HTTPEmpfangsknoten an:
    1. Klicken Sie mit der rechten Maustaste auf den HTTPEmpfangsknoten, und klicken Sie auf Eigenschaften.
    2. Klicken Sie auf Grundeinstellung, und setzen Sie Pfadsuffix für URL auf /samplebrokerwshost.
    3. Klicken Sie auf Syntaxanalyse der Eingabenachricht:
      • Wählen Sie in der Liste MRM für Nachrichtendomäne aus.
      • Wählen Sie für Nachrichtensatz aus der Liste WSHOST_BUILD_MS1 aus.
      • Wählen Sie Envelope (Umgebungsvariablen) als Nachrichtentyp aus.
      • Wählen Sie in der Liste XML1 als Nachrichtenformat aus.
    4. Speichern und schließen Sie die Ansicht Eigenschaften.
  8. Passen Sie den Knoten 'Compute' an:
    1. Klicken Sie mit der rechten Maustaste auf den Knoten 'Compute', und klicken Sie auf ESQL öffnen.
    2. Erstellen Sie zwischen den BEGIN- und END-Anweisungen den folgenden ESQL-Code für die Funktion Main(). Wählen Sie die Schlüsselwörter mithilfe des Inhaltsassistenten (Strg + Leertaste) aus. Wenn der Inhaltsassistent zum ersten Mal zum Auswählen des SOAP-Hauptteilelements und verschiedener 'IA81CONFIN'-Elemente verwendet wird, werden 'DECLARE NAMESPACE'-Anweisungen ähnlich denen in den ersten beiden kommentierten Zeilen generiert. Wenn Sie diesen Code kopieren und anschließend einfügen, müssen Sie sicherstellen, dass die Kommentarzeichen vor den DECLARE NAMESPACE-Anweisungen entfernt werden.
      --DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
      --DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
      
      	CALL CopyMessageHeaders();
      
      -- Output is MQ, so remove HTTP headers
      	SET OutputRoot.HTTPInputHeader = null;
      
      -- Output is legacy, so set wire format and message name
      	SET OutputRoot.Properties.MessageType = 'msg_tagIA81CONF';
      	SET OutputRoot.Properties.MessageFormat = 'CWF1';
      
      -- Add an MQMD
      	CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
      
      -- Build message to be sent to legacy
      	SET OutputRoot.MRM.MessageId
      	    = InputBody.tns:Body.ns:IA81CONFIN.MessageId;
      	SET OutputRoot.MRM.OrderNumber
          	= InputBody.tns:Body.ns:IA81CONFIN.OrderNumber;
      	SET OutputRoot.MRM.ItemReference
          	= InputBody.tns:Body.ns:IA81CONFIN.ItemReference;
      	SET OutputRoot.MRM.ItemQuantity
          	= InputBody.tns:Body.ns:IA81CONFIN.ItemQuantity;
      	SET OutputRoot.MRM.CustomerNumber
          	= InputBody.tns:Body.ns:IA81CONFIN.CustomerNumber;
      	SET OutputRoot.MRM.DeliveryRef 
          	= InputBody.tns:Body.ns:IA81CONFIN.DeliveryRef;
      	SET OutputRoot.MRM.Confirm 
          	= InputBody.tns:Body.ns:IA81CONFIN.Confirm;
      	SET OutputRoot.MRM.filler1 
          	= InputBody.tns:Body.ns:IA81CONFIN.filler1;
      
      	RETURN TRUE;
    3. Speichern und schließen Sie das Register WSHOST_WSHOST1.esql.
  9. Passen Sie den Knoten 'MQOutput to legacy' an:
    1. Klicken Sie mit der rechten Maustaste auf den Knoten 'MQOutput to legacy' und klicken Sie auf Eigenschaften.
    2. Wenn die traditionelle Anwendung auf einem anderen WebSphere MQ-Warteschlangenmanager für den Broker ausgeführt werden soll, wählen Sie Grundeinstellung aus, und setzen Sie Name des WS-Managers auf den Warteschlangenmanager der traditionellen Anwendung. Lassen Sie das Feld andernfalls leer.
    3. Setzen Sie Name der Warteschlange auf WSHOST1_OUT1.
    4. Klicken Sie auf Erweitert und setzen Sie Transaktionsmodus auf Ja.
    5. Setzen Sie Nachrichtenkontext auf Standardwert.
    6. Klicken Sie auf Anforderung und wählen Sie Anforderung aus.
    7. Setzen Sie Reply-to queue auf WSHOST1_IN1 und speichern und schließen Sie dann die Ansicht Eigenschaften.
  10. Passen Sie den Compute1-Knoten an:
    1. Klicken Sie mit der rechten Maustaste auf den Compute1-Knoten und klicken Sie auf ESQL öffnen.
    2. Geben Sie den folgenden ESQL-Code zwischen den Anweisungen BEGIN und END der Funktion Main() an. Wählen Sie die Schlüsselwörter mithilfe des Inhaltsassistenten (Strg + Leertaste) aus. Wenn der Inhaltsassistent zum ersten Mal für die Auswahl des SOAP-Hauptteilelements verwendet wird, sollte eine DECLARE NAMESPACE-Anweisung ähnlich der Anweisung (mit vorangestellten Kommentarzeichen) in der ersten Zeile erstellt werden. Stellen Sie sicher, dass die Kommentarzeichen vor den DECLARE NAMESPACE-Anweisungen entfernt werden.
      --DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
      --DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
      
      -- The output message built in this node stores the HTTP context.
      -- Any format may be suitable, but we are using a
      -- self-defined field in a SOAP Header to do this
      -- So the wire format is XML
      -- Create the target message set properties
      
      	SET OutputRoot.Properties.MessageSet = InputRoot.Properties.MessageSet;
      	SET OutputRoot.Properties.MessageType = 'Envelope';
      	SET OutputRoot.Properties.MessageFormat = 'XML1';
      
      -- Create the MQMD and set the CorrelId
      -- The CorrelId needs to be set to the MsgId of the message sent
      -- to the legacy application.  When the reply from the legacy
      -- application is received, we will MQGet from the store
      -- queue with correlid equal to the correlid of the legacy reply
      
      	SET OutputRoot.MQMD.CorrelId 
      = InputLocalEnvironment.WrittenDestination.MQ.DestinationData.msgId;
      
      -- Build message to store HTTP context
      
      	SET OutputRoot.MRM.tns:Header.HTTP.RequestIdentifier 
          = InputLocalEnvironment.Destination.HTTP.RequestIdentifier;
      
      	RETURN TRUE;
    3. Speichern und schließen Sie das Register WSHOST_WSHOST1.esql.
  11. Passen Sie den Knoten 'MQOutput store HTTP state' an:
    1. Klicken Sie mit der rechten Maustaste auf den Knoten 'MQOutput store HTTP state' und klicken Sie auf Eigenschaften.
    2. Klicken Sie auf Grundeinstellung, und setzen Sie Name des Warteschlangenmanagers auf WSHOST1_STATE1.
    3. Klicken Sie auf Erweitert, und setzen Sie Transaktionsmodus auf Ja.
    4. Setzen Sie Nachrichtenkontext auf Standardwert.
    5. Speichern und schließen Sie die Ansicht Eigenschaften.
  12. Passen Sie den Knoten 'MQInput from legacy' an:
    1. Klicken Sie mit der rechten Maustaste auf den Knoten 'MQInput from legacy' und klicken Sie auf Eigenschaften.
    2. Klicken Sie auf Grundeinstellung, und setzen Sie Name der Warteschlange auf WSHOST1_IN1.
    3. Klicken Sie auf Syntaxanalyse der Eingabenachricht:
      • Wählen Sie in der Liste MRM für Nachrichtendomäne aus.
      • Wählen Sie für Nachrichtensatz aus der Liste WSHOST_BUILD_MS1 aus.
      • Wählen Sie msg_tagIA81CONF als Nachrichtentyp aus.
      • Wählen Sie in der Liste CWF1 als Nachrichtenformat aus.
    4. Speichern und schließen Sie die Ansicht Eigenschaften.
  13. Passen Sie den Knoten 'MQGet stored HTTP state' an:
    1. Klicken Sie mit der rechten Maustaste auf den Knoten 'MQGet stored HTTP' und klicken Sie auf Eigenschaften.
    2. Klicken Sie auf Grundeinstellung, und setzen Sie Name der Warteschlange auf WSHOST1_STATE1.
    3. Klicken Sie auf Syntaxanalyse der Eingabenachricht:
      • Wählen Sie in der Liste MRM für Nachrichtendomäne aus.
      • Wählen Sie für Nachrichtensatz aus der Liste WSHOST_BUILD_MS1 aus.
      • Geben Sie Envelope als Nachrichtentyp an.
      • Wählen Sie in der Liste XML1 als Nachrichtenformat aus.
    4. Klicken Sie auf Erweitert:
      • Wählen Sie in der Liste Nachricht und lokale Umgebung für Generierungsmodus aus.
      • Wählen Sie in der Liste Gesamte Nachricht kopieren für Nachricht kopieren aus.
    5. Klicken Sie auf Anforderung und wählen Sie das Kontrollkästchen Abruf nach Korrelations-ID aus.
    6. Klicken Sie auf Ergebnis, und setzen Sie Position für Ausgabedaten auf OutputLocalEnvironment.
    7. Speichern und schließen Sie die Ansicht Eigenschaften.
  14. Passen Sie den Compute2-Knoten an:
    1. Klicken mit der rechten Maustaste auf den Compute2-Knoten und klicken Sie auf Eigenschaften.
    2. Klicken Sie auf Grundeinstellung, und setzen Sie Rechenmodus auf Lokale Umgebung und Nachricht.
    3. Speichern und schließen Sie die Ansicht Eigenschaften.
    4. Klicken Sie mit der rechten Maustaste auf den Knoten und klicken Sie auf ESQL öffnen.
    5. Geben Sie den folgenden ESQL-Code zwischen den Anweisungen BEGIN und END der Funktion Main() ein und stellen Sie sicher, dass die Kommentarzeichen vor den DECLARE NAMESPACE-Anweisungen entfernt werden:
      --DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
      --DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
      
      -- Input is CWF, output is SOAP/XML
      	SET OutputRoot.Properties.MessageSet = InputRoot.Properties.MessageSet;
      	SET OutputRoot.Properties.MessageType = 'Envelope';
      	SET OutputRoot.Properties.MessageFormat = 'XML1';
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFOUT = InputRoot.MRM;
      
      -- Set the http reply identifier
      	SET OutputLocalEnvironment.Destination.HTTP.RequestIdentifier =
       CAST(InputLocalEnvironment.MRM.tns:Header.HTTP.RequestIdentifier AS BLOB);
      	
      	RETURN TRUE;
  15. Speichern und schließen Sie das Register WSHOST_WSHOST1.esql.
  16. Speichern und schließen Sie WSHOST_WSHOST1.msgflow.
  17. Wenn die traditionelle Anwendung auf einem anderen WebSphere MQ-Warteschlangenmanager für den Broker ausgeführt werden soll, müssen Sie im Warteschlangenmanager der traditionellen Anwendung die Eingabewarteschlange der Anwendung definieren. Geben Sie mit dem entsprechenden WebSphere MQ-Dienstprogramm die folgenden Warteschlangendefinition ein:

    DEFINE QLOCAL(WSHOST1_OUT1) REPLACE

Mustercode 'Web Service Client' erstellen

Alle Dateien, die für die Ausführung des Mustercodes 'Web Service Client' erforderlich sind, sind im Lieferumfang enthalten. Wenn Sie den Mustercode jedoch selbst erstellen möchten, gehen Sie wie folgt vor:

So erstellen Sie den Mustercode 'Web Service Client':

  1. Importieren Sie den Mustercode 'Web Service' aus der Mustersammlung und erstellen Sie den Web Service Host-Mustercode (falls Sie dies noch nicht getan haben sollten), damit die C-Headerdatei zur Nutzung verfügbar ist. Weitere Informationen erhalten Sie im Abschnitt Mustercode 'Web Services using HTTP nodes'. Erstellen Sie einen Nachrichtensatz, der für Nachrichten sowohl im Web-Service-Format (XML) als auch im traditionellen Format (CWF) dient.
    1. Starten Sie das WebSphere Message Broker Toolkit.
    2. Klicken Sie auf Datei > Neu > Nachrichtensatz .
    3. Setzen Sie Nachrichtensatzname auf WSCLIENT_MS1.
    4. Setzen Sie Nachrichtensatzprojektname auf WSCLIENT_BUILD_MSP1 und klicken Sie dann auf Weiter.
    5. Wählen Sie im Feld Select the type of message data that you will be working with most often (Wählen Sie den Nachrichtendatentyp aus, mit dem Sie am häufigsten arbeiten werden) die Option XML documents (general) (XML-Dokumente (allgemein)) aus. Wählen Sie dann Binary data (for example, C or COBOL structures) (Binärdaten (z. B. C- oder COBOL-Strukturen)) aus und klicken Sie auf Fertigstellen.
    6. Klicken Sie in der Registerkarte messageSet.mset unter der Eigenschaftenhierarchie mit der rechten Maustaste auf Binary1, wählen Sie Umbenennen aus und geben Sie den neuen Namen CWF1 ein; klicken Sie anschließend auf Fertigstellen.
    7. Speichern und schließen Sie messageSet.mset.
  2. Importieren Sie eine C-Headerdatei, die der Eingabe- und der Ausgabenachricht der traditionellen Anwendung zugeordnet wird:
    1. Kopieren Sie die Datei legacyservice.h aus dem Projekt 'WSHOST_LEGACY1' und fügen Sie sie in das Projekt WSCLIENT_BUILD_MSP1 ein.
    2. Erstellen Sie auf Basis der C-Headerdatei eine Nachrichtendefinitionsdatei:
      1. Klicken Sie in der Ansicht 'Brokerentwicklung' unter WSCLIENT_BUILD_MSP1 mit der rechten Maustaste auf legacyservice.h und klicken Sie anschließend auf Neu > Nachrichtendefinitionsdatei aus > C-Headerdatei.
      2. Setzen Sie Nachrichtensatz auf /WSCLIENT_BUILD_MSP1/WSCLIENT_MS1 und klicken Sie dann auf Weiter.
      3. Klicken Sie im Teilfenster mit den "Quellenstrukturen" auf tagIA81BUY, klicken Sie auf die Schaltfläche mit dem Rechtspfeil (>), klicken Sie auf tagIA81CONF, klicken Sie auf die Schaltfläche mit dem Rechtspfeil (>) und klicken Sie dann auf Alle auswählen > Fertigstellen.
    3. Speichern und schließen Sie legacyservice.mxsd.
  3. Importieren Sie WSDL für den Web-Service.
    1. Klicken Sie auf Datei > Importieren > Allgemein > Dateisystem > Weiter.
    2. Durchsuchen Sie den Arbeitsbereich, um das Verzeichnis wsdl im Projekt WSHOST_MSP1 auszuwählen, und klicken Sie auf OK. Aktivieren Sie das Kontrollkästchen wsdl.
    3. Geben für den Ordner WSCLIENT_MSP1 an und klicken Sie auf Fertigstellen.
    4. Erstellen Sie auf Basis von WSDL eine Nachrichtendefinitionsdatei:
      1. Klicken Sie in der Ansicht 'Brokerentwicklung' im Projekt WSCLIENT_MSP1 mit der rechten Maustaste auf WSHOST_BUILD_MS1Service.wsdl und klicken Sie dann auf Neu > Nachrichtendefinitionsdatei.
      2. Wählen Sie für Select the target message set (Zielnachrichtengruppe auswählen) WSCLIENT_MSP1/WSCLIENT_MS1 aus.
      3. Legen Sie für Message definition file name (Name der Nachrichtendefinitionsdatei) die Bezeichnung WSHOST_BUILD_MS1Service.wsdl fest.
      4. Aktivieren Sie unter Target Namespace Settings (Zielnamensbereicheinstellungen) das Kontrollkästchen Zielnamensbereich verwenden. Setzen Sie Präfix auf wshost und Namensbereich auf http://www.brokersamplewshost.ibm.com/.
      5. Klicken Sie auf Finish (Fertigstellen).
  4. Erstellen Sie einen Nachrichtenfluss. Der Nachrichtenfluss übernimmt eine HTTP-Anforderung, führt die traditionelle Anwendung mithilfe von WebSphere MQ aus und leitet Informationen aus der Antwort der traditionellen Anwendung an den HTTP-Anforderer weiter.

    Gehen Sie folgendermaßen vor, um den Nachrichtenfluss zu erstellen:

    1. Klicken Sie auf Datei > Neu > Nachrichtenbrokerprojekt.
    2. Setzen Sie Projektname auf WSCLIENT_BUILD_MFP1 und klicken Sie dann auf Weiter.
    3. Aktivieren Sie im Teilfenster für Projekte, auf die verwiesen wird, das Kontrollkästchen WSCLIENT_BUILD_MSP1 und klicken Sie auf Fertigstellen.
    4. Klicken Sie in der Ansicht 'Brokerentwicklung' mit der rechten Maustaste auf WSCLIENT_BUILD_MFP1 und klicken Sie dann auf Neu > Nachrichtenfluss.
    5. Setzen Sie Nachrichtenflussname auf WSCLIENT_WSCLIENT1.
    6. Inaktivieren Sie das Kontrollkästchen für Use broker default schema (Standardschema für Broker verwenden), setzen Sie Schema auf WSCLIENT_MFP1 und klicken Sie auf Fertigstellen.
    7. Fügen Sie im Nachrichtenflusseditor die in der folgenden Tabelle aufgelisteten Knoten hinzu und benennen Sie diese um.
      Die entsprechenden Anweisungen finden Sie in der WebSphere Message Broker-Dokumentation unter Knoten hinzufügen.
      Palettenfächer Knotentyp Knotenname
      WebSphere MQ MQInput MQInput from legacy
      Transformation Rechnen Rechnen
      Transformation Rechnen Compute1
      WebSphere MQ MQReply MQReply
      HTTP HTTPAnforderung HTTPAnforderung
    8. Verbinden Sie die Knoten anhand der nachfolgenden Tabelle miteinander.
      Anweisungen hierzu finden Sie in der Dokumentation zu WebSphere Message Broker im Abschnitt Knoten verbinden.
      Knotenname Terminal Mit diesem Knoten verbinden
      MQInput from legacy Ausgangsterminal Rechnen
      Rechnen Ausgangsterminal HTTPAnforderung
      HTTPAnforderung Ausgangsterminal Compute1
      Compute1 Ausgangsterminal MQReply
  5. Passen Sie den Knoten 'MQInput from legacy' an:
    1. Klicken Sie mit der rechten Maustaste auf den Knoten 'MQInput from legacy' und klicken Sie auf Eigenschaften.
    2. Klicken Sie auf Grundeinstellung, und setzen Sie Name der Warteschlange auf WSCLIENT1_IN1.
    3. Klicken Sie auf Syntaxanalyse der Eingabenachricht:
      • Wählen Sie in der Liste MRM für Nachrichtendomäne aus.
      • Wählen Sie in der Liste WSCLIENT_MS1 für Nachrichtensatz aus.
      • Wählen Sie in der Liste msg_tagIA81BUY für Nachrichtentyp aus.
      • Wählen Sie in der Liste CWF1 als Nachrichtenformat aus.
    4. Speichern und schließen Sie die Ansicht Eigenschaften.
  6. Passen Sie den Knoten 'Compute' an:
    1. Klicken Sie mit der rechten Maustaste auf den Knoten 'Compute', und klicken Sie auf ESQL öffnen.
    2. Erstellen Sie zwischen den BEGIN- und END-Anweisungen den folgenden ESQL-Code für die Funktion Main(). Wählen Sie die Schlüsselwörter mithilfe des Inhaltsassistenten (Strg + Leertaste) aus. Wenn der Inhaltsassistent zum ersten Mal zum Auswählen des SOAP-Hauptteilelements und verschiedener 'IA81CONFIN'-Elemente verwendet wird, werden 'DECLARE NAMESPACE'-Anweisungen ähnlich denen in den ersten beiden kommentierten Zeilen generiert. Wenn Sie diesen Code kopieren und anschließend einfügen, müssen Sie sicherstellen, dass die Kommentarzeichen vor den DECLARE NAMESPACE-Anweisungen entfernt werden.
      --DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
      --DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
      
          CALL CopyMessageHeaders();
      
      -- Save the MQMD; sending to HTTP later in the flow destroys it
      	SET Environment.MQMD = InputRoot.MQMD;
      
      -- Input is CWF, Output is SOAP, so set wire format and message name
      	SET OutputRoot.Properties.MessageType = 'Envelope';
      	SET OutputRoot.Properties.MessageFormat = 'XML1';
      
      -- Build message to be sent to web service
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.MessageId = 'IA81CONF';
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.OrderNumber = InputBody.OrderNumber;
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.ItemReference = InputBody.ItemReference;
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.ItemQuantity = InputBody.ItemQuantity;
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.CustomerNumber = InputBody.CustomerNumber;
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.DeliveryRef = ' ';
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.Confirm = ' ';
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.filler1 = ' ';
      
      	RETURN TRUE;
    3. Speichern und schließen Sie das Register WSCLIENT_WSCLIENT1.esql.
  7. Passen Sie den HTTPAnforderungsknoten an:
    1. Klicken Sie mit der rechten Maustaste auf den HTTPRequest-Knoten und klicken Sie auf die Ansicht Eigenschaften.
    2. Wählen Sie Grundeinstellung, und setzen Sie URL des Webservices auf http://localhost:7080/samplebrokerwshost. Diese URL muss entsprechend geändert werden, wenn sich der den Web-Service betreibende Broker auf einem anderen System als dieser Broker befindet oder keine standardmäßige Portnummer verwendet.
    3. Klicken Sie auf Syntaxanalyse der Antwortnachricht:
      • Wählen Sie in der Liste MRM für Nachrichtendomäne aus.
      • Wählen Sie in der Liste WSCLIENT_MS1 für Nachrichtensatz aus.
      • Geben Sie Envelope (Umgebungsvariablen) als Nachrichtentyp an.
      • Wählen Sie in der Liste XML1 als Nachrichtenformat aus.
    4. Speichern und schließen Sie die Ansicht Eigenschaften.
  8. Passen Sie den Compute1-Knoten an:
    1. Klicken Sie mit der rechten Maustaste auf Compute1-Knoten und klicken Sie auf ESQL öffnen.
    2. Erstellen Sie zwischen den BEGIN- und END-Anweisungen den folgenden ESQL-Code für die Funktion Main(). Wählen Sie die Schlüsselwörter mithilfe des Inhaltsassistenten (Strg + Leertaste) aus. Wenn der Inhaltsassistent zum ersten Mal für die Auswahl des SOAP-Hauptteilelements verwendet wird, wird eine DECLARE NAMESPACE-Anweisung ähnlich der Anweisung (mit vorangestellten Kommentarzeichen) in der ersten Zeile erstellt. Stellen Sie sicher, dass die Kommentarzeichen vor den DECLARE NAMESPACE-Anweisungen entfernt werden.
      --DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
      --DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
      
          CALL CopyMessageHeaders();
      
      -- Output is MQ, so remove HTTP headers
          SET OutputRoot.HTTPResponseHeader = NULL;
              
      -- Output is CWF, so set the target message set properties
      
      	SET OutputRoot.Properties.MessageType = 'msg_tagIA81CONF';
      	SET OutputRoot.Properties.MessageFormat = 'CWF1';
      
      -- Create an MQMD and restore it to the saved values
      
      	CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
          SET OutputRoot.MQMD = Environment.MQMD;
      
      -- Build message to be sent
      
      	SET OutputRoot.MRM.MessageId = InputBody.tns:Body.ns:IA81CONFOUT.MessageId;
      	SET OutputRoot.MRM.OrderNumber = InputBody.tns:Body.ns:IA81CONFOUT.OrderNumber;
      	SET OutputRoot.MRM.ItemReference = InputBody.tns:Body.ns:IA81CONFOUT.ItemReference;
      	SET OutputRoot.MRM.ItemQuantity = InputBody.tns:Body.ns:IA81CONFOUT.ItemQuantity;
      	SET OutputRoot.MRM.CustomerNumber = InputBody.tns:Body.ns:IA81CONFOUT.CustomerNumber;
      	SET OutputRoot.MRM.DeliveryRef = InputBody.tns:Body.ns:IA81CONFOUT.DeliveryRef;
      	SET OutputRoot.MRM.Confirm = InputBody.tns:Body.ns:IA81CONFOUT.Confirm;						
      	SET OutputRoot.MRM.filler1 = InputBody.tns:Body.ns:IA81CONFOUT.filler1;	
      
      	RETURN TRUE;
  9. Speichern und schließen Sie das Register WSCLIENT_WSCLIENT1.esql.
  10. Passen Sie den MQReply-Knoten an: keine Anpassung erforderlich.
  11. Speichern und schließen Sie WSCLIENT_WSCLIENT1.msgflow.

Zurück zum Beginn des Mustercodes