Beispielprogramm 'Web Service' erstellen

Das Beispielprogramm 'Web Service' besteht aus zwei Teilen:

Beispielprogramm 'Web Service Host' erstellen

Wenn Sie dies nicht ausführen möchten, steht Ihnen in diesem Beispielprogramm auch ein bereits fertiges Nachrichtengruppen- und Nachrichtenflussprojekt zur Verfügung.

So erstellen Sie das Beispielprogramm 'Web Service Host':

  1. Erstellen Sie eine Nachrichtengruppe. Sie dient für Nachrichten sowohl im Web-Service-Format (XML) als auch im traditionellen Format (CWF).
    1. Starten Sie das Message Brokers Toolkit.
    2. Stellen Sie sicher, dass Sie sich in der Perspektive 'Brokeranwendungsentwicklung' befinden.
    3. Klicken Sie auf Datei > Neu > Nachrichtengruppenprojekt.
    4. Setzen Sie Projektname auf WSHOST_MSP1, und klicken Sie auf Weiter.
    5. Setzen Sie Nachrichtengruppenname auf WSHOST_MS1.
    6. Wählen Sie Namensbereiche verwenden aus, und klicken Sie auf Weiter.
    7. Wählen Sie CWF-Formatname und Name des physischen XML-Formats aus, und klicken Sie auf Fertig stellen.
    8. Schließen Sie 'messageset.mset'; der Inhalt wird damit gespeichert.
  2. Importieren Sie eine C-Headerdatei. Sie wird der Eingabe- und Ausgabenachricht der traditionellen Anwendung zugeordnet.
    1. Klicken Sie auf Datei > Importieren > Dateisystem > Weiter.
    2. Suchen Sie im Projekt WSHOST_LEGACY nach der Datei legacyservice.h, und wählen Sie sie aus.
    3. Geben Sie als Ordner WSHOST_MSP1 an, und klicken Sie auf Fertig stellen.
    4. Erstellen Sie auf Basis der C-Headerdatei eine Broker-Nachrichtendefinitionsdatei:
      1. Klicken Sie im Ressourcennavigator mit der rechten Maustaste auf legacyservice.h und anschließend auf Neu > Nachrichtendefinitionsdatei.
      2. Das Optionsfeld C-Headerdatei sollte bereits ausgewählt sein. Ist dies nicht der Fall, wählen Sie es aus, und klicken Sie auf Weiter.
      3. Im Projekt WSHOST_MSP1 sollte die Datei legacyservice.h als Standardeinstellung bereits ausgewählt sein. Ist dies nicht Fall, wählen Sie die Datei aus, und klicken Sie auf Weiter.
      4. Erweitern Sie im Teilfenster für Nachrichtengruppen WSHOST_MSP1, und wählen Sie WSHOST_MS1 aus.
      5. Wählen Sie Zielnamensbereich verwenden aus, geben Sie http://www.brokersamplewshost.ibm.com als URL ein, und klicken Sie auf Weiter.
      6. Klicken Sie im Bereich mit den Quellenstrukturen auf tagIA81CONF, und klicken Sie auf > und anschließend auf Alle auswählen > Fertig stellen.
    5. Schließen Sie legacyservice.mxsd; der Inhalt wird damit gespeichert.
  3. Erstellen Sie eine SOAP-Nachrichtendefinition.
    1. Klicken Sie im Ressourcennavigator mit der rechten Maustaste auf die Nachrichtengruppe WSHOST_MS1 und anschließend auf Neu > Nachrichtendefinitionsdatei.
    2. Klicken Sie auf das Optionsfeld IBM eigene Nachrichten, und klicken Sie auf Weiter.
    3. Wählen Sie im Teilfenster 'IBM eigene Nachrichten' die Nachricht ibm\soap\envelope\soapenv11.xsd aus, und klicken Sie auf Weiter.
    4. Erweitern Sie WSHOST_MSP1, wählen Sie WSHOST_MS1 aus, und klicken Sie auf Weiter.
    5. Stellen Sie in 'Wählen Sie die globalen Elemente aus, aus denen die Nachrichten erstellt werden sollen' sicher, dass keine Elemente ausgewählt sind, und klicken Sie auf Fertig stellen.
    6. Schließen Sie 'soapenv11.mxsd'; der Inhalt wird damit gespeichert.
    7. Es wird automatisch eine Nachricht des Typs 'Envelope' erstellt.

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

  4. Erstellen Sie eine Nachrichtenkategorie (dies ist Voraussetzung für die Erstellung einer WSDL-Definition).

    In WSDL müssen alle Operationsnamen innerhalb eines abgeschlossenen Porttyps eindeutig sein. Deshalb müssen die in einer Nachrichtenkategorie definierten Anforderungs- und Antwortnachricht unterschiedlich sein. Um dies transparenter zu gestalten, werden in der Nachrichtengruppe zwei neue Nachrichten definiert, eine für die Web-Services-Eingabe, eine andere für die Web-Services-Ausgabe. Sie werden in der Datei 'mxsd' erstellt, die mit Daten aus der C-Headerdatei gefüllt wird.

    1. Öffnen Sie die Datei legacyservice.mxsd.
    2. Klicken Sie in der Entwurfsansicht mit der rechten Maustaste auf Elemente und Attribute und klicken Sie anschließend auf Globales Element hinzufügen.
    3. Ändern Sie den Namen des Elements in IA81CONFIN, und drücken Sie die Eingabetaste.
    4. Wählen Sie die Zelle 'Typ' für das Element 'IA81CONFIN' aus. Wählen Sie (Weitere...) aus der Liste aus.
    5. Wählen SietagIA81CONF aus und klicken Sie auf OK.
    6. Klicken Sie in der Entwurfsansicht mit der rechten Maustaste aufNachrichten und anschließend aufNachricht aus globalem Element hinzufügen.
    7. Wählen Sie tns:IA81CONFIN aus der Pulldown-Liste und drücken Sie die Eingabetaste.
    8. Klicken Sie in der Entwurfsansicht mit der rechten Maustaste auf Elemente und Attribute und klicken Sie anschließend auf Globales Element hinzufügen.
    9. Ändern Sie den Namen des Elements in IA81CONFOUT und drücken Sie die Eingabetaste.
    10. Wählen Sie die Zelle 'Typ' für das Element 'IA81CONFOUT' aus. Wählen Sie (Weitere...) aus der Liste aus.
    11. Wählen SietagIA81CONF aus und klicken Sie auf OK.
    12. Klicken Sie in der Entwurfsansicht mit der rechten Maustaste aufNachrichten und anschließend aufNachricht aus globalem Element hinzufügen.
    13. Wählen Sie tns:IA81CONFOUT aus der Pulldown-Liste und drücken Sie die Eingabetaste.
    14. Schließen Sie legacyservice.mxsd; der Inhalt wird damit gespeichert.
    15. Klicken Sie auf Datei > Neu > Nachrichtenkategoriedatei.
    16. Setzen Sie Kategorieart auf wsdl.
    17. Setzen Sie Kategorieverwendung auf wsdl:requestresponse, und klicken Sie auf Weiter.
    18. Wählen Sie im Nachrichtengruppenprojekt WSHOST_MSP1 die Nachrichtengruppe WSHOST_MS1 aus.
    19. Geben Sie cat1 im Feld Dateiname ein, und klicken Sie auf Weiter.
    20. Wählen Sie im oberen Teilfenster IA81CONFIN undIA81CONFOUT (drücken Sie die Steuertaste und halten Sie sie gedrückt, um eine Mehrfachauswahl vorzunehmen).
    21. Stellen Sie den Wert im unteren Teilfenster in der ZelleArt für IA81CONFOUT auf output (Ausgabe) (klicken Sie auf die Zelle, um ein Menü anzuzeigen, aus dem Sie den Wert auswählen können).
    22. Wählen Sie im unteren Teilfenster IA81CONFIN und klicken Sie anschließend auf Fertig stellen.
    Die neue Nachrichtenkategoriedatei wird erstellt.
  5. Erstellen Sie die WSDL-Definition.
    1. Klicken Sie auf Datei > Neu > WSDL-Definition > Weiter.
    2. Wählen Sie im Nachrichtengruppenprojekt WSHOST_MSP1 die Nachrichtengruppe WSHOST_MS1 aus, und klicken Sie auf Weiter.
    3. Wählen Sie WSHOST_MSP1 aus, und klicken Sie auf Neuen Ordner erstellen.
    4. Geben Sie wsdl als Ordnername ein, und klicken Sie auf OK.
    5. Stellen Sie sicher, dass das Optionsfeld Single (Einzeln) ausgewählt ist, und klicken Sie auf Weiter.
    6. Stellen Sie im Teilfenster "Geben Sie WSDL-Details an" sicher, dass Stil auf document (Dokument) gesetzt ist, und klicken Sie auf Weiter.
    7. Klicken Sie im Teilfenster zum Auswählen von Kategorien auf Alle auswählen > Weiter.
    8. Klicken Sie im Teilfenster für Bindungen auf SOAP/HTTP > Weiter.
    9. Setzen Sie Portadresse im Teilfenster "Serviceeigenschaften" auf http://localhost:7080/samplebrokerwshost, und klicken Sie auf Fertig stellen.
  6. Erstellen Sie einen Nachrichtenfluss. Der Nachrichtenfluss übernimmt eine HTTP-Anforderung, ruft die traditionelle Anwendung mit Hilfe von MQ auf und leitet Informationen aus der Antwort der traditionellen Anwendung an den HTTP-Anforderer weiter.
    1. Klicken Sie auf Datei > Neu > Nachrichtenflussprojekt.
    2. Setzen Sie Projektname auf WSHOST_MFP1, und klicken Sie auf Weiter.
    3. Wählen Sie im Teilfenster für Projekte, auf die verwiesen wird, WSHOST_MSP1 aus, und klicken Sie auf Fertig stellen.
    4. Klicken Sie im Ressourcennavigator mit der rechten Maustaste auf WSHOST_MFP1, und klicken Sie dann auf Neu > Nachrichtenfluss.
    5. Setzen Sie Schema auf WSHOST_MFP1.
    6. Setzen Sie Name auf WSHOST_WSHOST1, und klicken Sie auf Fertig stellen.
    7. Zeigen Sie die Liste der verfügbaren Knoten an (falls sie ausgeblendet ist), und fügen Sie dann folgende Knoten in den Arbeitsbereich des Nachrichtenflusses ein:
      • 1 HTTPEmpfangsknoten
      • 3 Rechenknoten
      • 2 MQSendeknoten
      • 1 MQAbrufknoten
      • 1 MQEmpfangsknoten
      • 1 HTTPAntwortknoten
    8. Klicken Sie in der Listen mit den Knoten auf Verbindung, und verbinden Sie die folgenden Knoten und Terminals:
      • HTTPEmpfangsknoten (Ausgang) - Rechenknoten (Eingang)
      • Rechenknoten (Ausgang) - MQSendeknoten (Eingang)
      • MQSendeknoten (Ausgang) - Rechenknoten1 (Eingang)
      • Rechenknoten1 (Ausgang) - MQSendeknoten1 (Eingang)
      • MQEmpfangsknoten (Ausgang) - MQAbrufknoten (Eingang)
      • MQAbrufknoten (Ausgang) - Rechenknoten2 (Eingang)
      • Rechenknoten2 (Ausgang) - HTTPAntwortknoten (Eingang)
  7. Es kann hilfreich sein, wenn Sie einige der Knoten umbenennen. Um einen Knoten umzubenennen, klicken Sie mit der rechten Maustaste auf den betreffenden Knoten, und klicken Sie dann auf Umbenennen. Folgende Namen werden vorgeschlagen:
  8. Passen Sie den HTTPEmpfangsknoten an:
    1. Klicken Sie mit der rechten Maustaste auf den HTTPEmpfangsknoten, und klicken Sie auf Eigenschaften.
    2. Wählen Sie Grundeinstellung, und setzen Sie URL-Selektor auf /samplebrokerwshost.
    3. Wählen Sie Standardwert aus:
      • Wählen Sie in der Dropdown-Liste MRM für Nachrichtendomäne aus.
      • Wählen Sie in der Dropdown-Liste WSHOST_MS1 für Nachrichtengruppe aus.
      • Geben Sie Envelope als Nachrichtentyp an.
      • Wählen Sie in der Dropdown-Liste XML1 als Nachrichtenformat aus.
    4. Klicken Sie auf OK.
  9. Passen Sie den Rechenknoten an:
    1. Klicken Sie mit der rechten Maustaste auf den Rechenknoten, und klicken Sie auf ESQL öffnen.
    2. Erstellen Sie zwischen den BEGIN- und END-Anweisungen den folgenden ESQL-Code für das Modul. Wählen Sie die Schlüsselwörter mit Hilfe des Inhaltsassistenten (Strg + Leertaste) aus. Wenn der Inhaltsassistent zum ersten Mal zum Auswählen des SOAP-Hauptteilelements und verschiedener 'IA81CONFIN'-Elemente verwendet wird, werden normalerweise '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();
      -- Ausgabe erfolgt in MQ, deshalb: die HTTP-Header entfernen
      	SET OutputRoot.HTTPInputHeader = null;
      
      -- Ausgabe erfolgt traditionell, deshalb: CWF-Format und Nachrichtennamen festlegen
      	SET OutputRoot.Properties.MessageType = 'msg_tagIA81CONF';
      	SET OutputRoot.Properties.MessageFormat = 'CWF1';
      
      -- Ein MQMD-Attribut hinzufügen
      	CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
      
      -- Nachricht erstellen, die an traditionelle Anwendung gesendet wird 	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;
  10. Passen Sie den MQSendeknoten (MQSendeknoten-Ausgabe in traditioneller Anwendung) an:
    1. Klicken Sie mit der rechten Maustaste auf den MQSendeknoten, 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. Wählen Sie Erweitert aus, und setzen Sie Transaktionsmodus auf Ja.
    5. Setzen Sie Nachrichtenkontext auf Standardwert.
    6. Wählen Sie Anforderung aus, und wählen Sie das Markierungsfeld für Anforderung aus.
    7. Setzen Sie Warteschlange für Antwortnachrichten auf WSHOST1_IN1, und klicken Sie auf OK.
  11. Passen Sie den Rechenknoten1 an:
    1. Klicken Sie mit der rechten Maustaste auf Rechenknoten1, und klicken Sie auf ESQL öffnen.
    2. Erstellen Sie zwischen den BEGIN- und END-Anweisungen den folgenden ESQL-Code für das Modul. Wählen Sie die Schlüsselwörter mit Hilfe 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.
      --DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
      --DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
      
      -- Die in diesem Knoten erstellte Ausgabenachricht speichert den HTTP-Kontext.
      -- Jedes Format kann geeignet sein, aber in diesem Beispiel
      -- wird ein selbstdefinierendes Feld einem SOAP-Header dazu verwendet,
      -- so dass XML das physische Format ist.
      -- Zielnachricht erstellen und Eigenschaften festlegen
      
      	SET OutputRoot.Properties.MessageSet = InputRoot.Properties.MessageSet;
      	SET OutputRoot.Properties.MessageType = 'Envelope';
      	SET OutputRoot.Properties.MessageFormat = 'XML1';
      
      -- Das MQMD-Attribut erstellen und 'CorrelId' festlegen
      -- Für 'CorrelId' muss der 'MsgId'-Wert der Nachricht festgelegt werden, die
      -- an die traditionelle Anwendung gesendet wird. Bei Empfang der Antwort von der
      -- trad. Anwendung wird die Nachricht mit dem MQAbrufknoten aus der Speicherwarteschlange abgerufen,
      -- wobei der 'CorrelId'-Wert der Antwort von der trad. Anwendung verwendet wird.
      
      	SET OutputRoot.MQMD.CorrelId 
      = InputLocalEnvironment.WrittenDestination.MQ.DestinationData.msgId;
      
      -- Nachricht zum Speichern des HTTP-Kontexts erstellen
      
      	SET OutputRoot.MRM.tns:Header.HTTP.RequestIdentifier 
          = InputLocalEnvironment.Destination.HTTP.RequestIdentifier;
      
      	RETURN TRUE;
  12. Passen Sie den MQSendeknoten1 (MQSendeknoten-Ausgabe speichert HTTP-Status) an:
    1. Klicken Sie mit der rechten Maustaste auf den MQSendeknoten1, und klicken Sie auf Eigenschaften.
    2. Wählen Sie Grundeinstellung aus, und setzen Sie Name der Warteschlange auf WSHOST1_STATE1.
    3. Wählen Sie Erweitert aus, und setzen Sie Transaktionsmodus auf Ja.
    4. Setzen Sie Nachrichtenkontext auf Standardwert.
    5. Klicken Sie auf OK.
  13. Passen Sie den MQEmpfangsknoten (MQEmpfangsknoten-Eingabe aus traditioneller Anwendung) an:
    1. Klicken Sie mit der rechten Maustaste auf den MQEmpfangsknoten, und klicken Sie auf Eigenschaften.
    2. Wählen Sie Grundeinstellung aus, und setzen Sie Name der Warteschlange auf WSHOST1_IN1.
    3. Wählen Sie Standardwert aus:
      • Wählen Sie in der Dropdown-Liste MRM für Nachrichtendomäne aus.
      • Wählen Sie in der Dropdown-Liste WSHOST_MS1 für Nachrichtengruppe aus.
      • Geben Sie msg_tagIA81CONF als Nachrichtentyp ein.
      • Wählen Sie in der Dropdown-Liste CWF1 als Nachrichtenformat aus.
    4. Klicken Sie auf OK.
  14. Passen Sie den MQAbrufknoten (MQAbrufknoten-Abruf des gespeicherten HTTP-Status) an:
    1. Klicken Sie mit der rechten Maustaste auf den MQAbrufknoten, und klicken Sie auf Eigenschaften.
    2. Wählen Sie Grundeinstellung aus, und setzen Sie Name der Warteschlange auf WSHOST1_STATE1.
    3. Wählen Sie Standardwert aus:
      • Wählen Sie in der Dropdown-Liste MRM für Nachrichtendomäne aus.
      • Wählen Sie in der Dropdown-Liste WSHOST_MS1 für Nachrichtengruppe aus.
      • Geben Sie Envelope als Nachrichtentyp an.
      • Wählen Sie in der Dropdown-Liste XML1 als Nachrichtenformat aus.
    4. Wählen Sie Erweitert aus:
      • Wählen Sie in der Dropdown-Liste Nachricht und lokale Umgebung für Generierungsmodus aus.
      • Wählen Sie in der Dropdown-Liste Gesamte Nachricht kopieren für Nachricht kopieren aus.
    5. Wählen Sie Anforderung aus, und wählen Sie das Markierungsfeld für Get by Correlation ID (Aus Korrelations-ID abrufen).
    6. Wählen Sie Ergebnis aus, und setzen Sie Position für Ausgabedaten auf OutputLocalEnvironment.
    7. Klicken Sie auf OK.
  15. Passen Sie den Rechenknoten2 an:
    1. Klicken mit der rechten Maustaste auf den Rechenknoten2, und klicken Sie auf Eigenschaften.
    2. Wählen Sie Grundeinstellung aus, und setzen Sie Rechenmodus auf Lokale Umgebung und Nachricht.
    3. Klicken Sie auf OK (damit HTTP-Kontext an den HTTPAntwortknoten übergeben werden kann).
    4. Klicken Sie mit der rechten Maustaste auf den Knoten, und klicken Sie auf ESQL öffnen.
    5. Erstellen Sie zwischen den BEGIN- und END-Anweisungen den folgenden ESQL-Code für dieses Modul:
      --DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
      --DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
      
      -- Eingabe im CWF-, Ausgabe im SOAP/XML-Format
      	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;
      
      -- HTTP-Antwort-ID festlegen
      	SET OutputLocalEnvironment.Destination.HTTP.RequestIdentifier =
       CAST(InputLocalEnvironment.MRM.tns:Header.HTTP.RequestIdentifier AS BLOB);
      	
      	RETURN TRUE;
      
  16. Schließen Sie 'WSHOST_WSHOST1.esql'; der Inhalt wird damit gespeichert.
  17. Schließen Sie 'WSHOST_WSHOST1.msgflow'; der Inhalt wird damit gespeichert.
  18. 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

Das Beispielprogramm 'Web Service Client' erstellen

Wenn Sie dies nicht ausführen möchten, steht Ihnen in diesem Beispielprogramm auch ein bereits fertiges Nachrichtengruppen- und Nachrichtenflussprojekt zur Verfügung.

So erstellen Sie das Beispielprogramm 'Web Service Client':

  1. Erstellen Sie eine Nachrichtengruppe. Sie dient für Nachrichten sowohl im Web-Service-Format (XML) als auch im traditionellen Format (CWF).
    1. Starten Sie das Message Brokers Toolkit.
    2. Stellen Sie sicher, dass Sie sich in der Perspektive 'Brokeranwendungsentwicklung' befinden.
    3. Klicken Sie auf Datei > Neu > Nachrichtengruppenprojekt.
    4. Setzen Sie Projektname auf WSCLIENT_MSP1, und klicken Sie auf Weiter.
    5. Setzen Sie Nachrichtengruppenname auf WSCLIENT_MS1.
    6. Wählen Sie Namensbereiche verwenden aus, und klicken Sie auf Weiter.
    7. Wählen Sie CWF-Formatname und Name des physischen XML-Formats aus, und klicken Sie auf Fertig stellen.
    8. Schließen Sie 'messageset.mset'; der Inhalt wird damit gespeichert.
  2. Importieren Sie eine C-Headerdatei. Dadurch werden die Eingabe- und Ausgabenachrichtendefinitionen der traditionellen Anwendungen bereitgestellt.
    1. Kopieren Sie die Datei legacyservice.h aus dem Projekt 'WSHOST_LEGACY' und fügen Sie sie in das Projekt WSCLIENT_MSP1 ein.
    2. Erstellen Sie auf Basis der C-Headerdatei eine Broker-Nachrichtendefinitionsdatei:
      1. Klicken Sie im Ressourcennavigator mit der rechten Maustaste auf legacyservice.h und anschließend auf Neu > Nachrichtendefinitionsdatei.
      2. Das Optionsfeld C-Headerdatei sollte bereits ausgewählt sein. Ist dies nicht der Fall, wählen Sie es aus, und klicken Sie auf Weiter.
      3. Im Projekt WSCLIENT_MSP1 sollte die Datei legacyservice.h als Standardeinstellung bereits ausgewählt sein. Ist dies nicht Fall, wählen Sie die Datei aus, und klicken Sie auf Weiter.
      4. Erweitern Sie im Teilfenster für Nachrichtengruppen WSCLIENT_MSP1, wählen Sie WSCLIENT_MS1 aus und klicken Sie anschließend aufWeiter.
      5. Klicken Sie im Bereich mit den Quellenstrukturen auf tagIA81BUY, klicken Sie auf die Schaltfläche>, klicken Sie auf tagIA81CONF, klicken Sie auf die Schaltfläche> und anschließend auf Alle auswählen > Fertig stellen.
    3. Schließen Sie legacyservice.mxsd; der Inhalt wird damit gespeichert.
  3. Importieren Sie WSDL für den Web-Service.
    1. Klicken Sie auf Datei > Importieren > Dateisystem > Weiter.
    2. Suchen Sie im Projekt WSHOST_MSP1 das Verzeichnis wsdl und wählen Sie es aus.
    3. Geben Sie als Ordner WSCLIENT_MSP1 an, und klicken Sie auf Fertig stellen.
    4. Erstellen Sie auf Basis von WSDL eine Broker-Nachrichtendefinitionsdatei:
      1. Klicken Sie im Verzeichniswsdl des Projekts WSCLIENT_MSP1 im Ressourcennavigator mit der rechten Maustaste auf WSHOST_MS1Service.wsdl und anschließend auf Neu > Nachrichtendefinitionsdatei.
      2. Das Optionsfeld WSDL-Datei sollte bereits ausgewählt sein. Ist dies nicht der Fall, wählen Sie es aus, und klicken Sie auf Weiter.
      3. Im Projekt 'WSCLIENT_MSP1' sollte die Datei WSHOST_MS1Service.wsdl bereits ausgewählt sein. Ist dies nicht Fall, wählen Sie die Datei aus, und klicken Sie auf Weiter.
      4. Erweitern Sie im Teilfenster für Nachrichtengruppen WSCLIENT_MSP1 und wählen SieWSCLIENT_MS1 aus.
      5. Stellen Sie im Teilfenster 'Namensbereich' das Namensbereichpräfix für den Namensbereichhttp:www.brokersamplewshost.ibm.com auf wshost ein und klicken Sie anschließend auf Weiter.
      6. Es wird eine Liste der Dateien, die generiert werden, angezeigt. Klicken Sie aufFertig stellen.
  4. Erstellen Sie einen Nachrichtenfluss. Der Nachrichtenfluss übernimmt eineWebSphere MQ-Nachricht als Eingabe, erstellt eine Web-Service-Anforderung und sendet die Anforderung über HTTP. Die HTTP-Antwort wird empfangen und eine WebSphere MQ-Antwortnachricht wird gesendet.
    1. Klicken Sie auf Datei > Neu > Nachrichtenflussprojekt.
    2. Setzen Sie Projektname auf WSCLIENT_MFP1 und klicken Sie anschließend aufWeiter.
    3. Wählen Sie im Teilfenster für Projekte, auf die verwiesen wird, WSCLIENT_MSP1 aus, und klicken Sie auf Fertig stellen.
    4. Klicken Sie im Ressourcennavigator mit der rechten Maustaste auf WSCLIENT_MFP1, und klicken Sie dann auf Neu > Nachrichtenfluss.
    5. Setzen Sie Schema auf WSCLIENT_MFP1.
    6. Setzen Sie Name auf WSCLIENT_WSCLIENT1, und klicken Sie auf Fertig stellen.
    7. Zeigen Sie die Liste der verfügbaren Knoten an (falls sie ausgeblendet ist), und fügen Sie dann folgende Knoten in den Arbeitsbereich des Nachrichtenflusses ein:
      • 1 MQEmpfangsknoten
      • 2 Rechenknoten
      • 1 MQAntwortknoten
      • 1 HTTPAnforderungsknoten
    8. Klicken Sie in der Listen mit den Knoten auf Verbindung, und verbinden Sie die folgenden Knoten und Terminals:
      • MQEmpfangsknoten (Ausgang) - Rechenknoten (Eingang)
      • Rechenknoten (Ausgang) - HTTPAnforderungsknoten (Eingang)
      • HTTPAnforderungsknoten (Ausgang)- Rechenknoten1 (Eingang)
      • Rechenknoten1 (Ausgang) - MQAntwortknoten (Eingang)
  5. Passen Sie den MQEmpfangsknoten (MQEmpfangsknoten-Eingabe aus traditioneller Anwendung) an:
    1. Klicken Sie mit der rechten Maustaste auf den MQEmpfangsknoten, und klicken Sie auf Eigenschaften.
    2. Wählen Sie Grundeinstellung aus, und setzen Sie Name der Warteschlange auf WSCLIENT1_IN1.
    3. Wählen Sie Standardwert aus:
      • Wählen Sie in der Dropdown-Liste MRM für Nachrichtendomäne aus.
      • Wählen Sie in der Dropdown-Liste WSCLIENT_MS1 für Nachrichtengruppe aus.
      • Wählen Sie in der Dropdown-Liste msg_tagIA81BUY für Nachrichtentyp aus.
      • Wählen Sie in der Dropdown-Liste CWF1 als Nachrichtenformat aus.
    4. Klicken Sie auf OK.
  6. Passen Sie den Rechenknoten an:
    1. Klicken Sie mit der rechten Maustaste auf den Rechenknoten, und klicken Sie auf ESQL öffnen.
    2. Erstellen Sie zwischen den BEGIN- und END-Anweisungen den folgenden ESQL-Code für das Modul. Wählen Sie die Schlüsselwörter mit Hilfe des Inhaltsassistenten (Strg + Leertaste) aus. Wenn der Inhaltsassistent zum ersten Mal zum Auswählen des SOAP-Hauptteilelements und verschiedener 'IA81CONFIN'-Elemente verwendet wird, werden normalerweise '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();
      -- Speichern Sie die MQMD; sie wird beim Senden an HTTP später im Nachrichtenfluss zerstört	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';
      
      -- Nachricht erstellen, die an Web-Service gesendet wird
      	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;
  7. Passen Sie den HTTPAnforderungsknoten an:
    1. Klicken Sie mit der rechten Maustaste auf den HTTPAnforderungsknoten und klicken Sie auf Eigenschaften.
    2. Wählen Sie Grundeinstellung, und setzen Sie URL des Webservices auf http://localhost:7080/samplebrokerwshost. Beachten Sie, dass diese URL entsprechend geändert werden muss, wenn der den Web-Service betreibende Broker sich auf einem anderen System wie dieser Broker befindet und/oder eine nicht standardmäßige Portnummer verwendet.
    3. Wählen Sie Standardwert aus:
      • Wählen Sie in der Dropdown-Liste MRM für Nachrichtendomäne aus.
      • Wählen Sie in der Dropdown-Liste WSCLIENT_MS1 für Nachrichtengruppe aus.
      • Wählen Sie in der Dropdown-Liste Envelope als Nachrichtentyp aus.
      • Wählen Sie in der Dropdown-Liste XML1 als Nachrichtenformat aus.
    4. Klicken Sie auf OK.
  8. Passen Sie den Rechenknoten1 an:
    1. Klicken Sie mit der rechten Maustaste auf Rechenknoten1, und klicken Sie auf ESQL öffnen.
    2. Erstellen Sie zwischen den BEGIN- und END-Anweisungen den folgenden ESQL-Code für das Modul. Wählen Sie die Schlüsselwörter mit Hilfe 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.
      --DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
      --DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
      
      CALL CopyMessageHeaders();
      -- Ausgabe erfolgt in MQ, deshalb: die HTTP-Header entfernen
          SET OutputRoot.HTTPResponseHeader = NULL;
      
      -- Ausgabe erfolgt in CWF, deshalb: die Zielnachrichtengruppene igenschaften einstellen
      	SET OutputRoot.Properties.MessageType = 'msg_tagIA81CONF';
      	SET OutputRoot.Properties.MessageFormat = 'CWF1';
      
      -- Eine MQMD erstellen und die gespeicherten Werte wiederherstellen
      	CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
          SET OutputRoot.MQMD = Environment.MQMD;
      
      -- Nachricht zum Senden erstellen
      
      	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. Passen Sie den MQAntwortknoten an:
    1. Es kann keine Anpassung durchgeführt werden
  10. Schließen Sie 'WSCLIENT_WSCLIENT1.esql'; der Inhalt wird damit gespeichert.
  11. Schließen Sie 'WSCLIENT_WSCLIENT1.msgflow'; der Inhalt wird damit gespeichert.

Symbol für die Hauptseite   Zurück zum Beginn des Beispielprogramms