WebSphere Product Center: Portal-Unterstützung
Version 5.2
Hinweis: Bevor Sie die vorliegenden Informationen und das zugehörige Produkt verwenden, lesen Sie bitte die Informationen im Abschnitt "Bemerkungen" am Ende dieses Dokuments.
21. März 2005
Diese Veröffentlichung ist eine Übersetzung des Dokuments
WebSphere Product Center Version 5.2: Portal Enablement,
herausgegeben von International Business Machines Corporation, USA
(C) Copyright International Business Machines Corporation 2005
(C) Copyright IBM Deutschland GmbH 2005
Informationen, die nur für bestimmte Länder Gültigkeit haben und für Deutschland, Österreich und die Schweiz nicht zutreffen, wurden in dieser Veröffentlichung im Originaltext übernommen.
Möglicherweise sind nicht alle in dieser Übersetzung aufgeführten Produkte in Deutschland angekündigt und verfügbar; vor Entscheidungen empfiehlt sich der Kontakt mit der zuständigen IBM Geschäftsstelle.
Änderung des Textes bleibt vorbehalten.
Herausgegeben von:
SW NLS Center
Kst. 2877
März 2005
Kapitel 1 - Einführung
Voraussetzungen
Einschränkungen
Kapitel 2 - Architektur des Portal-Integrationsframeworks
Integrationsframework für Product Center
Web-Services-Funktionalität für WebSphere Portal Server
Daten
Anforderungs- und Antwortdaten in Product Center
Elementspezifikation
Komponenten
Product Center-Mediator
Web-Services-Schnittstelle
Datenkonvertierungsfunktionen
Datentypen
JavaBean
Komponenten der Benutzerschnittstelle
Services für den Datenaustausch
Services
Unterstützung für Internationalisierung/Lokalisierung
Unterstützung von Sicherheitsfunktionen
Ressourcen
Kapitel 3 - Installation und Konfiguration eines Lieferantenportals
Portal Server-Sicherheit mit LDAP konfigurieren
Datenbank für LDAP konfigurieren
Datenbank für LDAP konfigurieren
Suffix hinzufügen
Portalbenutzer erstellen
Portal konfigurieren
Benutzer mit Administratorberechtigung für das Portal erstellen
Anmeldeservice für das Lieferantenportal anpassen
Konfiguration von Product Center
Fazit
Ressourcen
Kapitel 4 - Product Center-Portlet erstellen
Musterportlet - WorkWithItem
XML-Nachrichten
Datenobjekt zur Darstellung des Elements
XMLGenerator und XMLParser
Methoden zum Product Center-Mediator hinzufügen
Portlet erstellen
Verweis auf den Web-Service des Product Center-Servers
einrichten
Kapitel 5 - Implementierung und Anpassung der Benutzerschnittstelle des Lieferantenportals
Lieferantenportal implementieren
Benutzerschnittstelle für das Lieferantenportal anpassen
Navigationsmenü erstellen
Schemas und Oberflächen installieren
Portlets auf den Registerkarten erstellen
Zugriffsberechtigungen für Registerkarten einrichten
Konfigurationsdateien aktualisieren
Konfigurationsdateien
Fazit
Kapitel 6 - Framework für die Benutzerschnittstelle
Portletstruktur
Verfügbare Portlets
Kapitel 7 - Übersicht über das Nachrichtenformat
Übersicht über einbezogene Scripts und Web-Services
Verschiedene Nachrichtenformate
Durch die Unterstützung von Portalen in WebSphere Product Center wird Kunden die Möglichkeit geboten, Handelspartnerportale zu erstellen. Portale können tausenden Benutzern den Zugriff auf wertvolle Artikel ermöglichen und dadurch den Wert einer WebSphere Product Center-Implementierung deutlich erhöhen.
Das Portal unterstützt beispielsweise die folgenden Geschäftsprozesse: Erstellen oder Ändern von Artikeln, Ändern synchronisierter Artikelinformationen, Massenhochladevorgänge, benutzerspezifische Auswahlmöglichkeiten und die Möglichkeit zur Eingabe von Angeboten und Vertragsbedingungen.
WebSphere Portal Server kann in WebSphere Product Center integriert werden. Durch Integration von Portal Server werden die folgenden Portal Server-Operationen möglich:
Elemente in WebSphere Product Center hinzufügen
Elemente in WebSphere Product Center ändern
Elemente in WebSphere Product Center löschen
Elemente auf Basis von GTIN (Global Trade Identification Number), SKU (Stock Keeping Unit) oder GLN (Global Location Number) suchen
Unterstützung von Auswahlmöglichkeiten
CSV-Dateien (Comma Separated Values) hochladen und herunterladen
Massenaktualisierungen
In diesem Dokument wird vorausgesetzt, dass folgende Komponenten in der WebSphere Product Center-Umgebung zum Einsatz kommen:
Momentan enthält WebSphere Product Center keine PIM-Portlets (Product Information Management). Dafür stehen in WebSphere Product Center die APIs und Metadaten zur Entwicklung von Portlets und von Benutzerschnittstellen für Lieferantenportale zur Verfügung.
In diesem Kapitel wird die Erstellung von Portlets für IBM WebSphere Product Center (nachfolgend als 'Product Center' oder 'WPC' bezeichnet) erläutert. Es beschreibt die Architektur, mit der eine Benutzerschnittstelle für Product Center bereitgestellt werden kann.
Das Integrationsframework bietet die notwendige Unterstützung für die Zusammenarbeit von Portlets und Product Center, damit es Benutzern möglich wird, Product Center-Informationen anzusehen und zu bearbeiten. Die Integration des Frameworks für Benutzerschnittstellen und Product Center basiert auf der Web-Service-Unterstützung von Product Center.
Die Architektur setzt sich aus Portlets zusammen, die mit Product Center über die Web-Services-Schnittstellen von Product Center kommunizieren (s. Abbildung 1). In Product Center steht eine Scriptingebene zur Verfügung, die als API verwendet werden kann. Diese Scripts können als Web-Services weiter zugänglich gemacht werden. Für jede Geschäftsfunktion, die in Product Center zugänglich gemacht werden muss, wird ein Web-Service erstellt. Für die Interaktion mit diesem Web-Service wird ein entsprechendes Portlet erstellt. Der Web-Service führt in Product Center die erforderlichen Scripts aus und arbeitet mit anderen Web-Services zusammen, um die gewünschten Geschäftsfunktionen bereitzustellen. Der Web-Service übernimmt die notwendige Abstimmung zwischen Scripts und anderen Web-Services, wobei folgende Zielsetzung verfolgt wird:
Abbildung 1
Für die Portalintegration werden Daten über XML-Dokumente ausgetauscht. Dabei entscheidet der Modus der empfangenen Anforderungsnachricht darüber, ob eine Antwort direkt oder zu einem späteren Zeitpunkt erfolgt. In Abbildung 2 wird die grundlegende Architektur dargestellt.
Abbildung 2
Bei der Kommunikation zwischen Product Center und WebSphere Portal Server handelt es sich um eine Dokument/Literal-basierte XML-Dokumenttransformation. Die Verwaltung asynchroner/synchroner Transaktionen hängt vom Web-Service-Framework von Product Center ab und sollte keine Abhängigkeiten auf Ebene des Implementierungsscripts aufweisen. Mit dieser Funktion lassen sich beliebige Operationen jederzeit zu asynchronen oder synchronen Operationen machen, ohne dass Scriptänderungen erforderlich wären.
Als Datenaustauschformat wird XML verwendet. Das Datenmodell basiert auf einem einzelnen Umschlag oder Container, in dem alle für die Transaktionsverarbeitung erforderlichen Informationen definiert sind. Der Umschlag enthält folgende Definitionen:
Tabelle 1 enthält ein Beispiel für die Struktur einer Anforderungs-XML:
Tabelle 1: Anforderungs-XML
<wpc:envelope xmlns:wpc="http://ibm.com/wpc/" communicationVersion="5.2">
<wpc:WPCResponseType>synchronous</wpc:WPCResponseType>
<wpc:wpcHeader>
<wpc:companyName>TSS</wpc:companyName>
<wpc:userID>Scott</wpc:userID>
<wpc:password>null</wpc:password>
<wpc:messageIdentifier> 905EF150-8F05-11D9-B150-B7A43B4A833E </wpc:messageIdentifier>
<wpc:timestamp>2005-03-07</wpc:timestamp>
<wpc:supplierId>1234567890123</wpc:supplierId>
</wpc:wpcHeader>
<wpc:wpcBody>
<wpc:wpcCommand type="ITEMDETAIL" mode="SYNC">
<wpc:wpcParentCategory />
<wpc:wpcCatalogName>CTG_PORTAL_MASTER </wpc:wpcCatalogName>
<wpc:wpcTradeItem ID="C139" />
</wpc:wpcCommand>
</wpc:wpcBody>
</wpc:envelope>
Tabelle 2 enthält ein Beispiel für die entsprechende Antwort-XML:
Tabelle 2: Antwort-XML
<wpc:envelope communicationVersion="5.2" xmlns:wpc="http://ibm.com/wpc/">
<wpc:wpcHeader>
<wpc:companyName>TSS</wpc:companyName>
<wpc:userID>wpsadmin</wpc:userID>
<wpc:password>null</wpc:password>
<wpc:messageIdentifier>1110199602</wpc:messageIdentifier>
<wpc:timestamp>2005-03-07</wpc:timestamp>
</wpc:wpcHeader>
<wpc:wpcBody>
<wpc:wpcResponse>
<wpc:wpcEntityIdentifier>
<wpc:wpcMessageIdentifier>8CD1DD80-8F06-11D9-9D80-A9B52946044C</wpc:wpcMessageIdentifier>
</wpc:wpcEntityIdentifier>
<wpc:wpcNotification type="SUCCESS">
<wpc:notificationInfo>
<wpc:notificationCode>000</wpc:notificationCode>
<wpc:notificationMessage>SUCCESS</wpc:notificationMessage>
</wpc:notificationInfo>
</wpc:wpcNotification>
<wpc:wpcTradeItem ID="C144">
...
...
</wpc:wpcTradeItem>
</wpc:wpcResponse>
</wpc:wpcBody>
</wpc:envelope>
Bei der Elementspezifikation handelt es sich um eine Product Center-spezifische Definition eines Elements und seiner Attributsammlungen. Diese Definition kann in einem XML-Dokument erfasst werden. Die Elementspezifikation enthält Verweise auf die verschiedenen Datentypen, die zur Definition eines Elements und seiner Attribute verwendet werden. In Verbindung mit der Sichtdefinition wird die Elementspezifikation zur Darstellung von Portletanzeigen eingesetzt, wobei diese Darstellung in einem automatischen Wiedergabemodus oder durch manuelles Codieren der JSPs stattfinden kann.
Das Framework besteht aus einer Gruppe von Komponenten, die Sie bei der Ausführung von Interaktionen mit Product Center sowie bei der Datenkonvertierung unterstützen.
Der Mediator erleichtert die Interaktion mit Portlets und Product Center-Web-Services. Er fungiert als zentrale Anlaufstelle für diese Ebenen und führt die notwendigen Datenkonvertierungen für den Einsatz dieser beiden Ebenen durch. Der Mediator steht den Portlets in Form einer Schnittstelle zur Verfügung.
Die Schnittstelle zu Web-Services wird über das AXIS-Framework für Web-Services-Aufrufe geschaffen. Die Web-Services-Ebene leitet durch Interaktion mit dem AXIS-Client einen entsprechenden Web-Service-Aufruf in Product Center ein. Dieser Aufruf ist vom Typ 'Dokument/Literal', wobei SOAP als Kommunikationsprotokoll eingesetzt wird und diese Kommunikation über HTTP-Transport stattfindet. Die aktuelle Web-Service-Ebene wird zum Austauschen von XML-Daten verwendet und ermöglicht den Upload und Download von Anhängen. Für diesen Zweck wird die Implementierung SwA (SOAP-with-Attachments) in AXIS verwendet. Der Abschnitt "Ressourcen" in diesem Kapitel enthält weitere Informationen zum AXIS-Framework.
Die Liste der Web-Services, die für eine Aktion in der Benutzerschnittstelle aufgerufen werden müssen, wird in einer Konfigurationsdatei gespeichert. Aktionen und Web-Services werden einander wie folgt zugeordnet:
Tabelle 3: Zuordnungen von Aktionen zu Web-Services
<soap-url action="<Aktionsname>">http://<Servername>:<Serverport>/services/<Servicename></soap-url>
<soap-url action="ADD">http://ibm.com:9557/webservices/addAction</soap-url>
Auf Mediatorebene kommen verschiedene Parser und Generatoren zum Einsatz, wenn XML-Inhalte aus Product Center ausgewertet werden oder wenn XML-Inhalte für den Einsatz in Product Center generiert und konvertiert werden müssen. Diese Konvertierungsfunktionen wandeln Daten aus dem XML-Format in ein vordefiniertes Java-Objekt um, und umgekehrt. Für die Konvertierung in ein Java-Objekt ist die Unterstützung einer bestimmten Gruppe von Datentypen und Datenobjekten erforderlich. Diese werden in den nachfolgenden Abschnitten beschrieben.
Product Center definiert eine Gruppe von Attributen für seine Elementdefinition. Bei diesen Attributen handelt es sich um Zeichenfolgen, Zahlen, Gruppenattribute oder weitere Attributtypen. Die Attribute und ihr Verhalten seitens des Frameworks für die Benutzerschnittstelle werden in einer Gruppe von Attribut- und Attributtypklassen erfasst.
Abbildung 3 enthält eine vollständige Liste der unterstützten Attribute. An die Attribute lassen sich Validierungs-, Formatierungs- und Wiedergabefunktionen anhängen.
Die JavaBean unterstützt die im Portlet angezeigten Inhalte und ermöglicht die Steuerung von Abläufen in der Benutzerschnittstelle insofern, dass der aktuelle Status oder Modus des Portlets gespeichert werden kann.
Die Komponenten der Benutzerschnittstelle sind hauptsächlich für die Darstellung der Benutzerschnittstelle verantwortlich. Sie reagieren auf Benutzerinteraktionen und führen Aufrufe auf Mediatorebene aus, um Daten in Product Center zu speichern oder aus Product Center abzurufen. Die Hauptkomponenten der Benutzerschnittstelle bilden die Portlets und die Tag-Bibliotheken, die bei der Darstellung der Benutzerschnittstelle für die Portlets zum Einsatz kommen.
Abbildung 3
Die Portlets auf dem Portalserver können ihre Informationen nicht auf elegante Weise austauschen. Dies ist besonders dann der Fall, wenn diese Portlets auf unterschiedlichen Seiten vorhanden sind. Nur Portlets, die sich auf der gleichen Seite befinden, können effektiv miteinander kommunizieren. Der Datenaustauschservice fungiert als zentrale Anlaufstelle für alle Portlets. Er dient als Informationsspeicher und wird von den Portlets zum Austauschen von Daten verwendet. Bei diesem Service handelt es sich momentan um ein Singleton, das in Form einer Java-Methode aufgerufen wird. Dieser Service wird zukünftig erweitert, um den Austausch weiterer Objekte und Objekttypen zu unterstützen. Der Service wird auch als separate Anwendung implementiert, um eine bessere Optimierung des Leistungsverhaltens zu ermöglichen.
Das Framework für die Benutzerschnittstelle nutzt die Infrastruktur des Portalservers, um die Internationalisierung zu ermöglichen und Sicherheitsfunktionen zu bieten.
Auf dem Portalserver stehen in Form von Schemas und Oberflächen zahlreiche angepasste Tags und Ressourcenpakete zur Lokalisierung der vom Framework des Portals angezeigten Inhalte zur Verfügung. Der Inhalt von Portlets wird mit Hilfe von Ressourcenpaketen lokalisiert, die wiederum die entsprechenden Bezeichnungen, Schaltflächen und angezeigten Nachrichten enthalten. Die Lokalisierung von Product Center-Inhalten richtet sich nach der für den Anwendungsstand verfügbaren Localeunterstützung.
Das portalbasierte Framework für die Benutzerschnittstelle sowie Product Center verwenden LDAP zum Speichern des Benutzerregisters. Product Center und das Framework für die Benutzerschnittstelle verwenden getrennte Benutzerschemas, um Benutzerdaten zu speichern. Dies hat in erster Linie den Grund, dass Benutzer auf Portalebene das Portal verwenden, um mit Anbietern oder Lieferanten zu kommunizieren. Bei den Benutzern, die in Product Center registriert sind, handelt es sich hingegen hauptsächlich um Hauptbenutzer und Systemadministratoren. Der nächste Schritt im Bereich des Benutzerregisters ist die Integration der Schemas, die vom Framework und von Product Center gemeinsam verwendet werden. Dadurch würde neben einem gemeinsamen Benutzerregister eine Definition der Benutzer und ihrer Aufgabenbereiche entstehen.
Authentifizierung von Benutzern
Im Szenario für das Lieferantenportal verwenden Lieferanten und Endbenutzer das Portal, um sich zu registrieren und anzumelden. Das Benutzermanagement und die Benutzerauthentifizierung werden auf der LDAP-Ebene des Portals ausgeführt. Die wesentliche Information, die das Portal mit der zugrunde liegenden Product Center-Ebene gemeinsam nutzt, ist die Identität des Lieferanten. Anhand dieser Information werden die Daten gefiltert, die ein Benutzer erstellt oder bearbeitet hat.
Autorisierung von Benutzern
Die Vergabe von Berechtigungen für Daten auf Basis des angemeldeten Benutzers ist primär eine Funktion von Product Center. Im aktuellen Stand des Systems erfolgen Autorisierungen grundsätzlich durch Datenfilterung auf Basis der Lieferanten-ID. Das Portal bietet Autorisierungsfunktionen für den Portalzugriff, die einem Benutzer abhängig von seinem Aufgabenbereich (Administrator, Endbenutzer) ermöglichen, bestimmte Aktionen anzuzeigen und auszuführen.
In diesem Artikel wird die Architektur des Frameworks für die Portalintegration für Product Center erläutert.
In den folgenden Abschnitten wird die Umgebungskonfiguration erläutert, die für die Implementierung des Lieferantenportals in einer Organisation erforderlich ist.
In diesem Kapitel wird vorausgesetzt, dass folgende Software in der WebSphere Product Center-Umgebung installiert ist:
Die Kombination der installierten Software ergibt sich aus der Wahl des verwendeten Betriebssystems. Die Basisplattform, auf der das Lieferantenportal arbeitet, ist Portal Server Version 5.0.2.2.
Die Installation der Portalintegration für WebSphere Product Center umfasst zwei komprimierte Dateien. Eine dieser Dateien wird auf dem Portalserver implementiert, während die andere zur Integration des Portals auf dem Product Center-Server implementiert wird.
Konfigurieren Sie im ersten Schritt zur Konfiguration des Lieferantenportals die Sicherheit des Portalservers für LDAP. In diesem Schritt wird davon ausgegangen, dass folgende Produkte installiert sind: IBM DB2, Directory Server und das Directory Server-Verwaltungstool.
In diesem Schritt wird die Konfiguration des DB2-Exemplars für LDAP erläutert.
1. Öffnen Sie das Konfigurationstool für Directory Server durch Klicken auf Start -> Programme -> IBM Tivoli Directory Server -> Verzeichniskonfiguration.
2. Wählen Sie im linken Teilfenster des Konfigurationstools die Option Administrator-DN/Kennwort aus.
3. Geben Sie die folgenden Werte für die Felder ein:
4. Klicken Sie auf OK.
5. Wählen Sie im linken Teilfenster des Konfigurationstools die Option Datenbank konfigurieren aus.
6. Wählen Sie die Option Neue Datenbank erstellen aus und klicken Sie auf Weiter.
7. Geben Sie die Benutzer-ID und das Kennwort für den DB2-Benutzer mit Administratorberechtigung ein (normalerweise 'db2admin' und 'password'). Klicken Sie auf Weiter.
8. Geben Sie auf der nächsten Seite den Namen des DB2-Exemplars und den Datenbanknamen ein. Klicken Sie auf Fertig stellen.
In diesem Schritt wird ein Suffix für die LDAP-Hierarchie hinzugefügt.
1. Öffnen Sie das Konfigurationstool für Directory Server durch Klicken auf Start -> Programme -> IBM Tivoli Directory Server -> Verzeichniskonfiguration.
2. Wählen Sie im linken Teilfenster des Konfigurationstools die Option Suffixe verwalten aus.
3. Geben Sie die Zeichenfolge "dc=wps,dc=com" in das Feld Suffix-DN ein.
4. Klicken Sie auf Hinzufügen. Klicken Sie anschließend auf OK.
In diesem Schritt wir die Liste der Benutzer definiert, die für den Zugriff auf das Portal berechtigt sind.
1. Öffnen Sie das Konfigurationstool für Directory Server durch Klicken auf Start -> Programme -> IBM Tivoli Directory Server -> Verzeichniskonfiguration.
2. Wählen Sie im linken Teilfenster des Konfigurationstools die Option LDIF-Daten importieren aus. Dadurch wird eine Anzeige geöffnet, in der Sie eine LDIF-Datei auswählen und die Benutzerdaten importieren können.
3. Wählen Sie die erforderliche LDIF-Datei für das Lieferantenportal aus und führen Sie den Import durch. Der Status des Importvorgangs wird im Nachrichtenbereich für Tasks angezeigt.
In diesem Schritt wird die Sicherheit des Portals konfiguriert.
1. Vergewissern Sie sich, dass der Directory Server installiert ist und alle für WebSphere Portal erforderlichen Konfigurationsschritte durchgeführt wurden.
2. Lokalisieren Sie die Datei '<Stammverzeichnis_des_Portalservers>/config/wpconfig.properties' und erstellen Sie eine Sicherungskopie, bevor Sie Änderungen an den Werten vornehmen.
3. Öffnen Sie die Datei '<WP-Stammverzeichnis>/config/wpconfig.properties' mit einem Texteditor.
4. Ersetzen Sie alle Einträge, die mit dem Suffix-DN 'dc=yourco,dc=com' enden, durch 'dc=wps,dc=com'.
5. Passen Sie folgende Merkmale im Abschnitt 'LDAP Properties Configuration' den Erfordernissen Ihrer Umgebung entsprechend an:
WasUserid=uid=wpsbind,cn=users,dc=wps,dc=com
WasPassword=wpsbind
PortalAdminId=uid=wpsadmin,cn=users,dc=wps,dc=com
PortalAdminIdShort=wpsadmin
PortalAdminPwd=wpsadmin
LDAPHostName=localhost (IP-Adresse des LDAP-Hostsystems)
LDAPPort=389
LDAPAdminUId=cn=root
LDAPAdminPwd=kennwort
LDAPServerType=IBM_DIRECTORY_SERVER
LDAPBindID=uid=wpsbind,cn=users,dc=wps,dc=com
LDAPBindPassword=wpsbind
LDAPSuffix=dc=wps,dc=com
6. Speichern Sie die Datei.
7. Öffnen Sie eine Eingabeaufforderung und wechseln Sie in das Verzeichnis '<Stammverzeichnis_des_Anwendungsservers>/bin'.
8. Geben Sie die folgenden Befehle ein:
startServer server1
stopServer WebSphere_Portal
9. Wechseln Sie in das Verzeichnis '<Stammverzeichnis_des_Portalservers>/config'.
10. Geben Sie den folgenden Befehl ein, um die entsprechende Konfigurationstask auszuführen:
WPSconfig.bat validate-ldap
Hinweis: Schlägt die Konfigurationstask fehl, überprüfen Sie die Werte in der Datei 'wpconfig.properties'.
11. Geben Sie folgenden Befehl ein, um die entsprechende Konfigurationstask zur Aktivierung der LDAP-Sicherheit auszuführen:
WPSconfig.bat enable-security-ldap
12. Wechseln Sie in das Verzeichnis '<Stammverzeichnis_des_Anwendungsservers>/bin', und geben Sie folgende Befehle ein:
a) stopServer server1
b) startServer server1
c) startServer WebSphere_PortalWenn die Sicherheitsfunktion in WebSphere Application Server aktiviert ist, müssen Sie bei Eingabe der Befehle eine Benutzer-ID und ein Kennwort für die Sicherheitsauthentifizierung angeben:
d) stopServer server1 -user was_administrator_id -password was_administratorkennwort
e) startServer server1
f) startServer WebSphere_PortalEinige der Schritte im Infocenter hängen vom Installationstyp und von der Betriebsumgebung ab. Diese Schritte können je nach Anforderung ausgelassen werden.
In diesem Schritt werden Portalbenutzer mit Administratorberechtigung erstellt.
1. Melden Sie sich beim Webverwaltungs-Tool von Directory Server an.
2. Wählen Sie Schemaverwaltung > Attribut hinzufügen aus und fügen Sie folgende Attribute hinzu:
WPCRole{Syntax - Directory String Syntax, Attribute Length - 50}
userStatus{Syntax - Boolean}
userGLN{Syntax - Directory String Syntax, Attribute Length - 50}
company{Syntax - Directory String Syntax, Attribute Length - 50}
3. Wählen Sie Schemaverwaltung > Objektklasse hinzufügen aus und fügen Sie Folgendes hinzu:
Objektklasse: wpcUserClass
Erforderliche Attribute - abstract, company, UserStatus, WPCRole
Optionale Attribute - userGLN
4. Speichern Sie diese Änderungen.
5. Importieren Sie die Datei 'portalAdmin.ldif' aus dem Konfigurationstool. Eine LDIF-Musterdatei ist zur Referenz angehängt.
6. Melden Sie sich mit 'admin'/'admin'/'ibm' für das Portal an.
Die vom Portal angebotene Schnittstelle für Product Center erfordert, dass sich ein Benutzer unter Angabe von Benutzer-ID, Kennwort und Unternehmensinformationen beim Portal anmeldet. Dafür muss eine Änderung an der standardmäßigen Anmeldeseite des Portalservers vorgenommen werden.
1. Bevor die Anmeldeseite geändert werden kann, muss ein Benutzer mit Administratorprivilegien für das Lieferantenportal eingerichtet werden.
a) Melden Sie sich mit der Benutzer-ID und dem Kennwort des Portaladministrators an.
b) Klicken Sie in der oberen Leiste auf den Link "Administration" und wählen Sie im linken Teilfenster die Optionen Zugriff > Benutzer und Gruppen aus.
c) Wählen Sie wpsadmins in der Liste der angezeigten Gruppen aus.
d) Fügen Sie den über 'portalAdmin.ldif' erstellten Benutzer hinzu und speichern Sie die Änderungen.Dadurch erhält der Benutzer 'admin' Administratorberechtigungen für das Lieferantenportal.
Meldet sich ein Portalbenutzer beim Portal an oder ab, führt WebSphere Portal bestimmte Befehle zur An- bzw. Abmeldung aus. Die Klassennamen dieser Befehle werden in der Merkmaldatei '<Stammverzeichnis_des_Portalservers>/shared/app/config/services/ConfigService.properties' mit folgenden Standardeinstellungen angegeben: command.login = LoginUserAuth und command.logout = LogoutUserAuth.
Der Paketsuchpfad für diese Befehle wird in Form einer durch Kommas getrennten Liste in der Merkmaldatei '<Stammverzeichnis_des_Portalservers>/shared/app/config/services/LoaderService.properties' mit folgenden Standardeinstellungen angegeben:
command.path = com.ibm.wps.engine.commands
3. Speichern Sie die Datei 'customlogin.jar' im Ordner '<Stammverzeichnis_des_Portalservers>/shared/app', da diese für LDAP-Dienstprogramme erforderlich ist.
4. Speichern Sie die Datei 'ibmjndi.jar' im Ordner '<Stammverzeichnis_des_Portalservers>/shared/app', da diese für LDAP-Dienstprogramme erforderlich ist.
5. Stellen Sie anschließend sicher, dass die neue Klasse im Klassenpfad des Portals gefunden wird, und fügen Sie das Befehlspaket als ersten Eintrag zum Befehlspfad (command.path) in der Datei 'LoaderService.properties' hinzu.
Beispiel: command.path=com.ibm.ccd.ui.services.user, com.ibm.wps.engine.commands
6. Fügen Sie der Datei 'Login.jsp' im Ordner '<Stammverzeichnis_des_Anwendungsservers>/installedApps/<Hostname>/wps.ear/wps.war/screens/html' die erforderlichen Felder hinzu. Das folgende Codefragment fügt der Anmeldeanzeige beispielsweise ein Feld 'Company' hinzu und kommentiert das Codefragment für die Schaltfläche 'Cancel' aus, da diese nicht benötigt wird.
<tr>
<td> </td>
<td align="<%= bidiAlignLeft %>" class="wpsEditText">
<label for="company">
<wps:text key="company" bundle="nls.field"/>
</label>
</td>
</tr>
<tr>
<td> </td>
<td> <input dir="ltr" class="wpsFieldText" size="16" value="" id="company" name="company" type="text"></td>
</tr>
7. Fügen Sie die landessprachlich relevanten Einträge aus der Datei 'Login.jsp' in der Merkmaldatei '<Stammverzeichnis_des_Portalservers>/shared/app/nls/field.properties' hinzu.
Beispiel: company = Unternehmen
8. Fügen Sie die zu 'Login.jsp' gehörigen Fehlernachrichten in der Merkmaldatei '<Stammverzeichnis_des_Portalservers>/shared/app/nls/problem.properties' hinzu.
9. Fügen Sie die folgenden Einträge für das Lieferantenportal hinzu:
a) login.invalid.userStatus = Dieser Benutzer ist inaktiv. Bitte wenden Sie sich an den Systemadministrator.
b) login.invalid.company = Dieser Benutzer gehört nicht zu diesem Unternehmen. Bitte überprüfen Sie die Angaben.
c) ldap.not.configured = Der LDAP-Authentifizierungsservice ist fehlgeschlagen. Bitte wenden Sie sich an den Systemadministrator.
Anhand der folgenden Schritte können Sie Product Center für die problemlose Integration mit Portal Server konfigurieren.
1. Legen Sie die Werte für 'soap_company', 'soap_user' und 'trigo_web_url' in der Datei 'common.properties' fest.
a) soap_company ist der Name des verwendeten Product Center-Unternehmens.
b) soap_user ist stets 'Admin'.
c) trigo_web_url ist 'http://<IP-Adresse>:<Port>'
2. Führen Sie einen Mount des Verzeichnisses 'public_html' durch.
3. Erhöhen Sie die Frequenz für den Dämon des Managers für Mount-Operationen (mountmgr) in der Datei 'common.properties' auf 1000.
4. Ändern Sie die FTP-Details in der Referenztabelle 'Portal_Config'. Beispielwerte sind angegeben.
5. ftpDir (in 'Portal_Config') sollte sich unterhalb des Stammverzeichnisses des FTP-Servers befinden.
6. Richten Sie Schreibzugriff auf die Datei '/public_html/WEB-INF/server-config.wsdd' ein.
7. Importieren Sie zunächst die Datei 'PORTAL_LKP.ZIP'.
8. Importieren Sie dann die Datei 'PORTAL_NON_LKP.ZIP'.
9. Führen Sie einen Neustart des Servers durch.
10. Wenn Sie Web Logic verwenden, müssen Sie den Web-Service speichern, nachdem Sie den folgenden Block wie folgt geändert haben:
<xs:element name="wpcSearchElementOperator">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="="/>
<xs:enumeration value=">="/>
<xs:enumeration value="<="/>
<xs:enumeration value=">"/>
<xs:enumeration value="<"/>
<xs:enumeration value="!="/>
<xs:enumeration value="BEGINSWITH"/>
<xs:enumeration value="CONTAINS"/>
<xs:enumeration value="ENDSWITH"/>
<xs:enumeration value="ISEMPTY"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Änderung:
<xs:element name="wpcSearchElementOperator">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="="/>
<xs:enumeration value=">="/>
<xs:enumeration value="<="/>
<xs:enumeration value=">"/>
<xs:enumeration value="<"/>
<xs:enumeration value="!="/>
<xs:enumeration value="BEGINSWITH"/>
<xs:enumeration value="CONTAINS"/>
<xs:enumeration value="ENDSWITH"/>
<xs:enumeration value="ISEMPTY"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Am Ende dieses Kapitels haben Sie folgende Tasks erledigt:
In diesem Kapitel wird die Vorgehensweise zum Erstellen eines Portlets für Product Center beschrieben. Dabei dient das vorhandene Product Center-Portlet "WorkWithItem" als Beispiel.
Neben Arbeitserfahrungen im Entwickeln und Testen von Portlets mit IBM WebSphere Portal Server werden in diesem Kapitel auch praktische Erfahrungen im Umgang mit den Funktionen von IBM WebSphere Studio Application Developer vorausgesetzt. In diesem Kapitel wird nicht im Detail auf die Erstellung des Product Center-Scripts eingegangen, das die Anforderung des Portlets auf Product Center-Seite bedient. Detaillierte Informationen zur Erstellung dieser Scripts und zum Hosting dieser Scripts als Web-Services würden den Rahmen dieses Kapitels sprengen.
In den folgenden Abschnitten werden die Infrastruktur des Frameworks und das Portlet beschrieben, das diese Infrastruktur nutzt. In der Infrastruktur wird für den Datenaustausch das XML-Format verwendet, wobei die XML-Daten in Form eines Datenobjekts dargestellt werden. Daher sind zusätzliche Klassen notwendig, die Konvertierungen zwischen XML und Java durchführen. An den Product Center-Mediator müssen für den Einsatz des Portlets eine Reihe von Methoden angehängt werden.
Die Elemente in Product Center befinden sich in einem Product Center-Katalog. Diese Elemente werden anhand einer Elementspezifikation beschrieben. Bei dieser Spezifikation handelt es sich um eine Attributsammlung. Die Elemente sind in Kategorien und Unterkategorien gruppiert. Diese Baumstruktur der Kategorien wird auch als Hierarchie bezeichnet.
Das WorkWithItem-Portlet unterstützt den Benutzer bei der Arbeit mit einem Element. Es ist für folgende Tasks erforderlich:
a) Element anzeigen
b) Element erstellen
c) Element ändern
d) Element klonen
e) Element löschen
Die grundlegenden Funktionen des WorkwithItem-Portlets sind das Anzeigen, Erstellen, Ändern, Klonen und Löschen von Katalogelementen. Diese Aktionen erfordern, dass das Portlet mit Product Center Daten im XML-Format über einen Web-Service austauscht. Das bedeutet, dass für jede in einem Portlet durchgeführte Aktion eine Anforderung in XML-Format and Product Center gesendet wird. Nach Abschluss der Verarbeitung liefert Product Center dann eine entsprechende Antwort im XML-Format zurück.
Beispielsweise kann folgende Anforderungs-XML zum Abrufen eines Elementdetails verwendet werden:
Tabelle 1: Product Center-Anforderungs-XML
<wpc:wpcCommand type="ITEMDETAIL" mode="SYNC" >
<wpc:wpcParentCategory>1/5</wpc:wpcParentCategory>
<wpc:wpcCatalogName>CTG_PORTAL_MASTER</wpc:wpcCatalogName>
<wpc:wpcTradeItem ID="1732"></wpc:wpcTradeItem>
</wpc:wpcCommand>
Der Aktionsbefehl ruft die Details des Elements ab, wobei der Aufrufmodus synchron oder asynchron (SYNC/ASYNC) sein kann. Dieser Modus bestimmt, ob die Web-Service-API beim Aufruf in Product Center synchron oder asynchron funktioniert. In dieser Anforderung sind die Felder 'Trade ItemID', 'CatalogName' und 'ParentCategory' erforderlich, um die Details zu einem Element abzurufen.
Die nachfolgende Antwort-XML für die Details eines Elements besteht aus einer Attributsammlung für dieses Element:
Tabelle 2 : Product Center-Antwort-XML
<wpc:attribute-list>
<wpc:attribute name="Master Item Spec/GTIN" type="STRING">
<wpc:values>
<wpc:value occurrence="0">1087383</wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="Master Item Spec/Effective Start Date" type="DATE">
<wpc:values>
<wpc:value occurrence="0">2005-01-06 00:00:00</wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="Master Item Spec/Product Content/Web Image" type="IMAGE">
<wpc:values>
<wpc:value occurrence="0">1109678022009_id-w3-sitemark-simple.gif</wpc:value>
</wpc:values>
</wpc:attribute>
...
</wpc:attribute-list>
Auf Basis der Struktur der Anforderungs- und Antwort-XML wird ein Datenobjekt definiert, das die Daten aus Product Center-Mediator darstellt. Diese Konvertierung eines Datenobjekts in eine XML-Zeichenfolge und umgekehrt findet auf Ebene des Product Center-Mediators statt.
Beispielsweise ist das Product Center-Element im WorkWithItem-Portlet in einer Klasse "CatalogItem" enthalten, die eine Attributsammlung enthält.
Der XML-Generator und der XML-Parser dienen zur Konvertierung der Java-Darstellung eines Product Center-Elements in eine XML-Darstellung, und umgekehrt. Der CatalogItemGenerator erstellt eine Product Center-Anforderungs-XML. Die XML-Generierung ist befehlsspezifisch, wobei der Befehl in diesem Fall im Abrufen der Elementdetails besteht. Die XML wird mit den Eingabewerten des Benutzers gefüllt, wobei diese Werte vom Anforderungsobjekt des Portlets erfasst werden.
Das folgende Codefragment zeigt ein Beispiel einer XML, die für die Abrufoperation von Elementdetails generiert wird.
public class CatalogItemGenerator {
public static String prepareItemDetailsRequestXML(
String parentCtgyID,
String catalogID,
String itemID) {
StringBuffer requestXML = new StringBuffer();
requestXML
.append(XMLHelper.WPC_NS_REF_BEG)
.append(ISoapMessageKeys.PARENT_CATEGORY)
.append(">")
.append(parentCtgyID)
.append(XMLHelper.WPC_NS_REF_END)
.append(ISoapMessageKeys.PARENT_CATEGORY)
.append(">")
.append(XMLHelper.WPC_NS_REF_BEG)
.append(ISoapMessageKeys.CATALOG_NAME)
.append("> ")
.append(catalogID)
.append(XMLHelper.WPC_NS_REF_END)
.append(ISoapMessageKeys.CATALOG_NAME)
.append(">")
.append(XMLHelper.WPC_NS_REF_BEG)
.append(ISoapMessageKeys.TRADE_ITEM)
.append(" ")
.append(ISoapMessageKeys.ID)
.append("=\"")
.append(itemID)
.append("\">")
.append(XMLHelper.WPC_NS_REF_END)
.append(ISoapMessageKeys.TRADE_ITEM)
.append(">");
return requestXML.toString();
}
}
}
CatalogItemParser wertet den Inhalt der Product Center-Antwort-XML in das Datenobjekt des Katalogelements aus.
public class CatalogItemParser {
public static ICatalogItem prepareItem(
Element specElement,
Element tradeItemElement) {
// Spezifikation vorbereiten
ICatalogItem item = getCatalogSpecItem(specElement);
// Element mit Attributwerten füllen
prepareItem(item, tradeItemElement);
return item;
}
}
}
Die Portlets sollten für den Austausch von Daten mit Product Center ausschließlich mit der Mediatorebene interagieren. Der Mediator wiederum muss alle Methoden besitzen, die die Portletklassen zur Ausführung der notwendigen Operationen für den Aufruf von Product Center-Web-Services benötigen. Das Portlet stellt Operationen zur Bearbeitung von funktionellen Anforderungen und Benutzerinteraktionen dar. In unserem Beispiel muss das Portlet WorkwithItem folgende Aufgaben erfüllen:
a) Element anzeigen
b) Element erstellen
c) Element ändern
d) Element klonen
e) Element löschen
Folglich müssen der Mediatorebene Methoden zur Durchführung der folgenden Aufgaben hinzugefügt werden:
1. Geeignete SOAP-URL für den Web-Service-Aufruf laden.
2. Anforderungs-XML für diesen Methodenaufruf erstellen.
3. SOAP-URL zur Initialisierung von synchronen/asynchronen Aufrufen aufrufen.
4. Antwort-XML empfangen und interpretieren.
5. Bei Erfolg die Antwort-XML in entsprechende Datenobjekte konvertieren.
6. Bei Misserfolg die Fehlerinformationen in Form einer Benachrichtigungs-Bean an das Portlet übergeben. Dabei sollte die Ausnahmebedingung WPCMediatorException ausgelöst werden.
Eine Methode zum Abrufen eines Katalogelements (CatalogItem) im Mediator sieht beispielsweise wie folgt aus:
public ICatalogItem getCatalogItem(
String parentCgyID,
String catalogID,
String itemID,
WPSContext context)
throws WPCMediatorException {
try {
// Elementspezifikationen abrufen
item = getCatalogItem(parentCgyID, catalogID, context);
//Anforderungs-XML für das Element zum Abrufen der Daten konstruieren
String itemReqXML =
CatalogItemGenerator.prepareItemDetailsRequestXML(
parentCgyID,
catalogID,
itemID);
// soapHelper aufrufen
Element itemElement = wsHelper.getCatalogItemXML(itemReqXML, user);
// Element durch Parsing der Ergebnisse vorbereiten
CatalogItemParser.prepareItem(item, itemElement);
return item;
} catch (WPCMediatorException wpce) {
if (DEBUG) wpce.printStackTrace();
throw wpce;
}
}
Mediator delegiert den Aufruf an die WSHelper-Klasse, die daraufhin den Anforderungs-XML erstellt und die SOAP-URL aufruft.
public Element getCatalogItemXML(String itemReqXML, WPCUser user)
throws WPCMediatorException {
String requestXML = XMLHelper.prepareWPCRequest(
itemReqXML,
"ITEMDETAIL",
"SYNC",
user);
SoapResponse soapResponse = invokeSOAP(getSoapURL("ITEMDETAIL"),requestXML);
String responseXML = soapResponse.getDataXML();
}
Wie oben gezeigt empfängt die Methode getCatalogItem() die Antwort-XML und übergibt sie an den CatalogItemParser, der wiederum die Antwort-XML in das CatalogItem-Objekt konvertiert.
XMLHelper generiert den vollständigen XML-Code für alle derartigen Aufrufe.
Zusammengefasst folgt jede Mediatoroperation folgendem generischen Ablauf:
Portlet > WPCMediator > WSHelper > SoapInvoker > Axis-API
Unter folgender Adresse erhalten Sie Details zur Entwicklung und Implementierung von Portlets unter WebSphere Portal Server:
<Stammverzeichnis_des_Portalservers>\doc\de\InfoCenter\index.html.
Das Product Center-Portlet führt den entsprechenden Aufruf des Product Center-Mediators aus und legt die Nachricht fest, die dem Endbenutzer als Ergebnis des Aufrufs angezeigt wird. Diese Nachrichten müssen der Nachrichtensammlung über die zu diesem Zweck verfügbaren APIs hinzugefügt werden.
Die JSPs zur Darstellung der einzelnen Anzeigen des aktuellen Portlets müssen den angepassten Tag enthalten, der zur Anzeige des Inhalts dieser Benutzernachrichten erforderlich ist.
<wpctags:uimessages/>
Ändern Sie die Konfigurationsdateien (wie z. B. 'soapactionurls.xml') so ab, dass diese auf die entsprechende SOAP-URL zeigen. Nachfolgend wird eine Musterkonfigurationsdatei dargestellt:
<soap-url action="<Aktionsname>">http://<Servername>:<Serverport>/services/<servicename></soap-url>
<soap-url action="ADD">http://9.184.114.58:9999/services/wpc_portal_integrated_dev
</soap-url>
In diesem Kapitel werden die einzelnen Schritte zur Installation und Konfiguration des Lieferantenportals in Product Center erläutert.
Folgende Softwarekomponenten müssen in Ihrer Umgebung installiert sein:
Dieser Schritt beschreibt die Implementierung des Lieferantenportals.
1. Öffnen Sie eine Eingabeaufforderung, wechseln Sie in das Verzeichnis '<Stammverzeichnis_des_Anwendungsservers>\bin' und stoppen Sie den Server mit folgendem Befehl:
stopServer WebSphere_Portal -username wpsbind -password wpsbind
2. Öffnen Sie im Webverwaltungs-Tool von Directory Server die URL 'http://localhost:9080/IDSWebApp/IDSjsp/Login.jsp' und melden Sie sich wie folgt an:
LDAP-Hostname : localhost
Benutzername : cn=root
Kennwort : kennwort
3. Stoppen Sie das Webverwaltungs-Tool.
4. Wechseln Sie in der Eingabeaufforderung in das Verzeichnis '<Stammverzeichnis_des_Verzeichnisservers>\appsrv\bin' und stoppen Sie den LDAP-Server mit folgendem Befehl:
stopServer server1 -username wpsbind -password wpsbind
5. Laden Sie die ZIP-Datei der Anwendung herunter und extrahieren Sie ihren Inhalt. Sie enthält die JAR-Datei "customlogin.jar[I2]". Diese Dateien stehen ebenfalls auf der Installations-CD von Product Center zur Verfügung.
6. Fügen Sie dem Ordner '<Stammverzeichnis_des_Portalservers>\shared\app' die Dateien 'customlogin.jar' und 'ibmjndi.jar' hinzu.
7. Wechseln Sie in der Eingabeaufforderung in das Verzeichnis '<Stammverzeichnis_des_Verzeichnisservers>\appsrv\bin' und starten Sie den LDAP-Server mit folgendem Befehl:
startServer server1 -username wpsbind -password wpsbind
8. Öffnen Sie im Webverwaltungs-Tool von Directory Server die URL 'http://localhost:9080/IDSWebApp/IDSjsp/Login.jsp' und melden Sie sich wie folgt an:
LDAP-Hostname : localhost
Benutzername : cn=root
Kennwort : kennwort
9. Starten Sie das Webverwaltungs-Tool.
10. Öffnen Sie eine Eingabeaufforderung, wechseln Sie in das Verzeichnis '<Stammverzeichnis_des_Anwendungsservers>\bin' und starten Sie den Portalserver mit folgendem Befehl:
startServer WebSphere_Portal -username wpsbind -password wpsbind
11. Melden Sie sich mit 'admin'/'admin'/'ibm' an.
12. Klicken Sie auf Verwaltung -> Portlets > Anwendungen verwalten.
13. Deinstallieren Sie frühere Instanzen der Anwendung, sofern vorhanden.
14. Installieren Sie die aktuelle Anwendungsinstanz und fügen Sie den erforderlichen Seiten die Portlets hinzu.
15. Weisen Sie den Portlets die erforderlichen Benutzerberechtigungen zu.
In diesem Schritt wird die Benutzerschnittstelle für das Lieferantenportal angepasst. Dem Portal wird ein Standardlayout zugewiesen und die Darstellung und Funktionsweise (Look-and-feel) wird standardmäßig festgelegt.
Erstellen Sie zur Anpassung des Portals zunächst die folgenden Bezeichnungen im Portal (s. Abbildung 1):
Abbildung 1
Installieren Sie die Schemas und Oberflächen für die Anwendung.
1. Extrahieren Sie die Datei 'themes.zip' in den Ordner '<Stammverzeichnis_des_Anwendungsservers>\installedApps\<Hostname_des_Anwendungsservers>\wps.ear\wps.war\themes\html'.
2. Extrahieren Sie die Datei 'skins.zip' in den Ordner '<Stammverzeichnis_des_Anwendungsservers>\installedApps\<Hostname_des_Anwendungsservers>\wps.ear\wps.war\skins\html'.
3. Melden Sie sich beim Portalserver als Administrator an.
4. Klicken Sie im oberen rechten Bereich auf Administrator.
5. Wählen Sie Benutzerschnittstelle des Portals -> Schemas und Oberflächen aus.
6. Klicken Sie auf Neues Schema hinzufügen.
7. Geben Sie für den Namen und das Verzeichnis des neuen Schemas 'WPC_Default_theme' ein. Klicken Sie auf OK.
8. Klicken Sie auf Neue Oberfläche hinzufügen.
9. Geben Sie für den Namen und das Verzeichnis der neuen Oberfläche 'WPC_Default_skin' ein. Klicken Sie auf OK.
Verwalten Sie die Portlets wie folgt auf mehreren Registerkarten:
Registerkarte 'Home' |
|
Registerkarte 'Suchen' |
|
Registerkarte 'Element erstellen/bearbeiten' |
|
Registerkarte 'Massenbearbeitung' |
|
Registerkarte 'Daten hochladen' |
|
Registerkarte 'Registrierung' |
|
Nachfolgend wird erläutert, wie Sie den Registerkarten die entsprechenden Portlets hinzufügen:
1. Melden Sie sich beim Portalserver als Administrator an.
2. Klicken Sie im oberen rechten Bereich auf Administrator.
3. Wählen Sie Portalbenutzerschnittstelle > Seiten verwalten aus.
4. Klicken Sie für die gewünschte Seite im rechten Anzeigebereich auf die Schaltfläche Seitenlayout bearbeiten.
5. Fügen Sie der Seite die erforderlichen Portlets hinzu.
6. Wiederholen Sie die Schritte 4 und 5 für alle oben genannten Registerkarten.
1. Melden Sie sich beim Portalserver als Administrator an.
2. Klicken Sie im oberen rechten Bereich auf Administrator.
3. Wählen Sie Zugriff -> Ressourcenberechtigungen aus.
4. Klicken Sie unter Mein Portal auf die Schaltfläche Zugriffsberechtigung zuordnen und geben Sie in der Anzeige Zugriff für Aufgabenbereich bearbeiten die Option Alle authentifizierten Benutzer an. Klicken Sie anschließend auf OK.
5. Legen Sie in ähnlicher Weise den Zugriff für Anonymer Benutzer auf die Registrierungsseite fest (s. Schritt 4).
1. Nehmen Sie die folgenden, die Abmeldung betreffenden Änderungen an der unten genannten Konfigurationsdatei vor:
<Stammverzeichnis_des_Portalservers>/shared/app/config/services/ConfigService.properties
# Parameter zum Umleiten der Abmeldung
redirect.logout = true
redirect.logout.url = /wps/myportal
Die oben genannten Änderungen bewirken, dass das Portal über den Link "Abmelden" auf die Anmeldeseite umgeleitet wird.
2. Nehmen Sie die folgenden, die Abmeldung betreffenden Änderungen an den unten genannten Konfigurationsdateien vor:
<Stammverzeichnis_des_Portalservers>/shared/app/nls/engine_de.properties
<Stammverzeichnis_des_Portalservers>/shared/app/nls/engine.properties
Ändern Sie die folgenden Einträge, um die Namen der Links entsprechend zu ändern:
link.enrollment = Registrieren
link.login = Anmelden
link.logout = Abmelden
Fügen Sie diese beiden Einträge hinzu, damit die angepasste Begrüßungsnachricht angezeigt wird:
default_welcome = Willkommen!
login_welcome = Willkommen, {0}
3. Ändern Sie in den nachfolgend genannten Konfigurationsdateien die Schaltfläche zur Anmeldung wie folgt:
<Stammverzeichnis_des_Portalservers>/shared/app/nls/button_de.properties
<Stammverzeichnis_des_Portalservers>/shared/app/nls/button.properties
Bearbeiten Sie den folgenden Eintrag, um den Link für die Anmeldung zu ändern:
login = Anmelden
Im Rahmen der Installation und Konfiguration des Lieferantenportals werden einige Konfigurationsdateien des Portalservers und einige Anwendungsdateien des Lieferantenportals geändert. Diese Dateien werden nachfolgend kurz beschrieben.
<Stammverzeichnis_des_Portalservers>/config/wpconfig.properties
<Stammverzeichnis_des_Portalservers>/wmm/wmmLDAPServerAttributes.xml
<Stammverzeichnis_des_Portalservers>/shared/app/config/services/ConfigService.properties
<Stammverzeichnis_des_Portalservers>/shared/app/config/services/LoaderService.properties
<Stammverzeichnis_des_Portalservers>/shared/app/nls/field.properties
<Stammverzeichnis_des_Portalservers>/shared/app/nls/problem.properties
<Stammverzeichnis_des_Portalservers>/shared/app/nls/engine.properties
<Stammverzeichnis_des_Portalservers>/shared/app/nls/button.properties
Anwendungsspezifische Konfigurationsdateien für das Lieferantenportal:
<Stammverzeichnis_der_Anwendung>/WebContent/WEB-INF/config/soapactionurls.xml
<Stammverzeichnis_der_Anwendung>/WebContent/WEB-INF/config/timezonevalues.xml
<Stammverzeichnis_der_Anwendung>/WebContent/WEB-INF/config/catalog_configuration.xml
<Stammverzeichnis_der_Anwendung>/WebContent/WEB-INF/config/portletActions2pages.xml
Am Ende dieses Kapitels haben Sie folgende Tasks erledigt:
Dieses Kapitel enthält Details zu folgenden Themen:
Die allgemeine Portletstruktur wird in der folgenden Abbildung darstellt. Der Benutzer wird über den Status einer Transaktion im Nachrichtenbereich informiert. Er interagiert mit dem aktiven Bereich und mit dem Aktionsschaltflächenbereich.
Die folgenden Portlets stehen für die einzelnen Benutzerszenarien zur Verfügung:
Benutzerregistrierung
a. Klicken Sie auf der Anmeldeseite auf Registrieren.
b. Das Portlet zur Benutzerregistrierung (User Registration) wird angezeigt.
c. Das Portlet zur Benutzerregistrierung zeigt die Lieferanten-GLN und die E-Mail-Adresse an. Der Benutzer gibt diese Informationen ein.
d. Der Benutzer klickt auf die Schaltfläche Weiter, um die GLN und die E-Mail-Adresse prüfen zu lassen.
e. Hat das System diese Angaben erkannt, werden die Kennwortfelder angezeigt.
f. Das System überprüft, ob die Kennwörter identisch sind.
g. Eine Anzeige informiert darüber, dass der Benutzer Informationen zur Genehmigung der Registrierung erhalten wird und sich anschließend beim Portal anmelden kann.
Manuelle Genehmigung der Benutzerregistrierung
a. Es handelt sich hierbei um einen manuellen Prozess. Der WebSphere Product Center-Administrator muss eine Genehmigung für registrierte Benutzer erteilen. Dadurch können sich diese beim Portal anmelden und mit WebSphere Product Center-spezifischen Portlets arbeiten.
b. Der WebSphere Product Center-Administrator muss dem registrierten Benutzer einen Aufgabenbereich zuweisen. Dieser Vorgang muss manuell auf dem LDAP-Speicher erfolgen, der vom Portalserver und von WebSphere Product Center gemeinsam genutzt wird. Dadurch wird sichergestellt, dass der Benutzer über die notwendige Berechtigung zum Ausführen von WebSphere Product Center-spezifischen Transaktionen verfügt.
Elementkatalog anzeigen
a. Das Portlet 'Item Catalog' führt den Elementkatalog in einem Baumstrukturformat auf. Elemente werden als Blätter in dieser Katalogbaumstruktur dargestellt.
b. Der Benutzer wählt einen Katalog aus und kann ein Element hinzufügen. Diese Option steht im Aktionsschaltflächenbereich in Form einer Schaltfläche zur Verfügung.
c. Der Benutzer wählt ein Element aus und kann dieses anzeigen, bearbeiten, klonen oder löschen. Diese Optionen stehen im Aktionsschaltflächenbereich in Form von Schaltflächen zur Verfügung.
d. Diese Schaltflächen gelten nur für Operationen mit dem aktuellen Element.
e. Die erste Katalogebene wird von WebSphere Product Center abgerufen. Die untergeordneten Knoten (Unterkataloge und Elemente) werden abhängig von der Benutzerinteraktion abgerufen. Wenn der Benutzer einen Knoten erweitert, wird dessen Inhalt angezeigt. Dadurch reduziert sich zwar das Datenvolumen, das zu einem bestimmten Zeitpunkt geladen werden muss, es sind allerdings auch mehr Aufrufe an WebSphere Product Center notwendig, um diese Informationen abzurufen.
Vorhandenes Element anzeigen
a. Wählen Sie ein Element im Portlet 'Item Catalog' aus und klicken Sie auf die Schaltfläche Element anzeigen. Dadurch werden die Elementdetails im Portlet 'WorkWithItem' wiedergegeben. Der Inhalt wird im schreibgeschützten Modus angezeigt.
Neues Element hinzufügen
a. Wählen Sie im Portlet 'Item Catalog' einen Katalog aus und klicken Sie auf die Schaltfläche Element hinzufügen. Dadurch wird der Elementinhalt im Portlet 'WorkWithItem' wiedergegeben und der Benutzer kann die Elementdaten eingeben. Die Operation 'Hinzufügen' fügt dem ausgewählten Katalog das eingegebene Element hinzu.
b. Dieser Prozess zur Elementerstellung kann auch durch Klicken auf die Schaltfläche 'Element hinzufügen' im Portlet 'WorkWithItem' eingeleitet werden. Dadurch wird ein Element in einem nicht zugewiesenen Katalog erstellt.
c. Beim Übergeben des Elements finden die notwendigen Prüfungen des Elementeintrags statt. Die erste Prüfungsstufe wird auf Basis von Attributmetainformationen aus WebSphere Product Center ausgeführt. Bei diesen Prüfungen handelt es sich um Typen- und Bereichsprüfungen. Die Prüfungen werden nicht im Rahmen einer Prüfung auf JavaScript-Ebene ausgeführt.
d. Der Benutzer kann sich auch entscheiden, die Operation abzubrechen. Dadurch wird das Portlet in seinen Anfangsstatus zurückversetzt.
Vorhandenes Element aktualisieren
a. Wählen Sie im Portlet 'Item Catalog' ein Element aus und klicken Sie auf die Schaltfläche Element aktualisieren. Dadurch wird der Elementinhalt im Portlet 'WorkWithItem' wiedergegeben und der Benutzer kann die aktualisierten Elementdaten eingeben.
b. Diesen Aktualisierungsprozess für Elemente können Sie auch einleiten, indem Sie nach einem Element suchen, dieses auswählen und dann in den Suchergebnissen auf die Schaltfläche 'Mit Element arbeiten' klicken. Dadurch werden die Elementdaten in das Portlet 'WorkWithItem' übernommen. Der Benutzer kann dann auf die Schaltfläche Element aktualisieren klicken und mit dem Element arbeiten.
c. Diesen Aktualisierungsprozess für Elemente können Sie auch einleiten, indem Sie ein Element im Portlet 'Item Catalog' auswählen und auf Element anzeigen klicken. Dadurch werden die Daten in das Portlet 'WorkWithItem' übernommen. Der Benutzer kann dann auf die Schaltfläche Aktualisieren klicken. Dadurch wird der Inhalt im bearbeitbaren Modus dargestellt.
d. Beim Übergeben des Elements finden die notwendigen Prüfungen des Elementeintrags statt. Die erste Prüfungsstufe wird auf Basis von Attributmetainformationen aus WebSphere Product Center ausgeführt. Bei diesen Prüfungen handelt es sich um Typen- und Bereichsprüfungen. Die Prüfungen werden nicht im Rahmen einer Prüfung auf JavaScript-Ebene ausgeführt.
e. Der Benutzer kann sich auch entscheiden, die Operation abzubrechen. Dadurch wird das Portlet in seinen Anfangsstatus zurückversetzt.
Element klonen
a. Wählen Sie im Portlet 'Item Catalog' ein Element aus und klicken Sie auf die Schaltfläche Element klonen. Dadurch wird eine Kopie des Elementinhalts im Portlet 'WorkWithItem' wiedergegeben und der Benutzer kann die Elementdaten kopieren.
b. Diesen Klonprozess für Elemente können Sie auch einleiten, indem Sie nach einem Element suchen, dieses auswählen und dann in den Suchergebnissen auf die Schaltfläche 'Mit Element arbeiten' klicken. Dadurch werden die Elementdaten in das Portlet 'WorkWithItem' übernommen. Der Benutzer kann dann auf die Schaltfläche Klonen klicken und mit dem Element arbeiten.
c. Diesen Klonprozess für Elemente können Sie auch einleiten, indem Sie ein Element im Portlet 'Item Catalog' auswählen und auf Element anzeigen klicken. Dadurch werden die Daten in das Portlet 'WorkWithItem' übernommen. Der Benutzer kann dann auf die Schaltfläche Klonen klicken. Dadurch wird der Inhalt im bearbeitbaren Modus dargestellt.
d. Beim Übergeben des Elements finden die notwendigen Prüfungen des Elementeintrags statt. Die erste Prüfungsstufe wird auf Basis von Attributmetainformationen aus WebSphere Product Center ausgeführt. Bei diesen Prüfungen handelt es sich um Typen- und Bereichsprüfungen. Die Prüfungen werden nicht im Rahmen einer Prüfung auf JavaScript-Ebene ausgeführt.
e. Der Benutzer kann sich auch entscheiden, die Operation abzubrechen. Dadurch wird das Portlet in seinen Anfangsstatus zurückversetzt.
Vorhandenes Element entfernen
a. Wählen Sie im Portlet 'Item Catalog' ein Element aus und klicken Sie auf die Schaltfläche Element löschen. Dadurch wird der Elementinhalt im Portlet 'WorkWithItem' wiedergegeben und der Benutzer kann die Operation zum Löschen des Elements ausführen. Der Elementinhalt wird im lesbaren Modus angezeigt.
b. Diesen Löschprozess für Elemente können Sie auch einleiten, indem Sie nach einem Element suchen, dieses auswählen und dann in den Suchergebnissen auf die Schaltfläche 'Mit Element arbeiten' klicken. Dadurch werden die Elementdaten in das Portlet 'WorkWithItem' übernommen. Der Benutzer kann dann auf die Schaltfläche Löschen klicken und das Element löschen.
c. Diesen Löschprozess für Elemente können Sie auch einleiten, indem Sie ein Element im Portlet 'Item Catalog' auswählen und auf Element anzeigen klicken. Dadurch werden die Daten in das Portlet 'WorkWithItem' übernommen. Der Benutzer kann dann auf die Schaltfläche Löschen klicken.
d. Der Benutzer kann sich auch entscheiden, die Operation abzubrechen. Dadurch wird das Portlet in seinen Anfangsstatus zurückversetzt.
Elementsuche
a. Das Suchportlet zeigt zu Beginn die folgenden Suchkriterien an: GTIN, GLN, Zielmarkt, Produktstatus (Genehmigt, Zurückgewiesen, Entwurf usw.), Artikelnummer (SKU), Preis und Rückgabe von einzelnen Elementen oder Hierarchien. Der Benutzer kann bei der Suche Platzhalterzeichen verwenden.
b. Für Suchkriterien vom Typ Datum oder Zahl kann ein Bereich angegeben werden. Beispielsweise könnte für das Kriterium Preis ein Bereich von €100,00 bis €500,00 angegeben werden.
c. Die letzten 10 Suchkriterien, die der Benutzer verwendet hat, werden gespeichert und in einer Liste aufgeführt. Durch Klicken auf diesen Link wird eine Suche mit diesen Kriterien ausgeführt.
d. Die Suchergebnisse werden im selben Portlet unterhalb der Suchkriterien angezeigt. Die zurückgegebenen Suchergebnisse werden gemäß der vom Benutzer festgelegten Seitengröße für das Blättern angezeigt. Dieser Wert kann mit der Bearbeitungsoption des Portlets festgelegt werden. Die Größe der Suchergebnisse wird von WebSphere Product Center gesteuert und hat hauptsächlich Einfluss auf die Suchleistung. Die Anzeige der Suchergebnisse wird vom Portlet gesteuert, wobei hier hauptsächlich die Funktionalität für den Benutzer im Vordergrund steht.
e. Der Benutzer kann ein einzelnes Element in den Suchergebnissen auswählen und auf die Schaltfläche 'Mit Element arbeiten' klicken. Dadurch werden die Elementdaten an das Portlet 'WorkWithItem' übertragen.
f. Der Benutzer kann mehrere Elemente in den Suchergebnissen auswählen und auf die Schaltfläche 'Mit Elementen arbeiten' klicken. Dadurch werden die Elemente an das Portlet "Items Mass-Update" übertragen.
Massenhochladevorgänge
a. Mit der Dateibrowserschnittstelle des Portlets 'Mass Upload' können CSV-Dateien (Comma Separated Values) vom System des Benutzers an WebSphere Product Center übertragen werden.
b. Da diese Transaktion aus der Perspektive von WebSphere Product Center einen längeren Zeitraum beanspruchen kann, findet die Interaktion asynchron statt. Die CSV-Datei wird in WebSphere Product Center hochgeladen und das Ergebnis dieser Transaktion wird dem Benutzer in Form einer Portalnachricht oder per E-Mail mitgeteilt.
Massenaktualisierungen
a. Der Benutzer verwendet das Portlet 'Search', um nach Elementen zu suchen. Er wählt die Elemente in den Suchergebnissen aus und klickt auf die Schaltfläche 'Mit Elementen arbeiten'.
Dadurch werden die Inhalte der ausgewählten Elemente an das Portlet 'Items Mass-Update' übertragen. Der Benutzer kann jetzt eine Massenaktualisierung von Elementen für eine ausgewählte Gruppe von Attributen ausführen.
Das verwendete Nachrichtenformat ähnelt dem UCCNet-Nachrichtenformat. Der Umschlag besitzt einen Header und einen Hauptteil. Der Header enthält Informationen zur Identifizierung von Absender- und Empfängerdetails sowie die eindeutige Nachrichten-ID. Der Hauptteil enthält bei Anforderungsnachrichten den auszuführenden Befehl und zugehörige Informationen, bei Antwortnachrichten enthält er die Antwortdetails.
Nachrichtentransaktionen zwischen Portal und Product Center können synchron oder asynchron erfolgen.
Dokumentstruktur
<envelope>
<wpcHeader>
<!— companyName. Standardmäßig werden Benutzer-ID
und Unternehmen in WPC dem entsprechenden Scriptkontext entnommen. Dieses Feld dient momentan
nur zur Information -->
< companyName></ companyName>
<!—UserID. Standardmäßig werden Benutzer-ID
und Unternehmen in WPC dem entsprechenden Scriptkontext entnommen. Dieses Feld dient momentan
nur zur Information -->
< userID></ userID>
<!--messageIdentifier dient zur
eindeutigen Identifizierung der einzelnen Nachrichten -->
< messageIdentifier></
messageIdentifier>
<!— Zeitmarke,
an der die Nachricht gesendet wurde -->
<timestamp></timestamp>
<!—Lieferanten-ID des WPS-Benutzers -- >
<supplierId></supplierId>
</wpcHeader>
<wpcBody>
< wpcCommand type=ADD mode=SYNC
>
………...
</wpcCommand>
</wpcBody>
</envelope>
Das Attribut 'type' des Elements 'wpcCommand' kann die Werte 'ADD', 'MODIFY', 'DELETE', 'SEARCH' 'QUERY_TRANSACTION' usw. besitzen. Es legt die auszuführende Operation fest. Das Attribut 'mode' des Elements 'wpcCommand' legt den Modus der auszuführenden Operation fest. Gültige Werte sind 'SYNC' (synchron) und 'ASYNC' (asynchron).
Im synchronen Modus wird das XML-Anforderungsdokument verarbeitet, und anschließend wird sofort ein entsprechendes XML-Dokument generiert und zurückgesendet.
Im asynchronen Modus wird bei Empfang eines XML-Anforderungsdokuments eine Transaktions-ID an den Aufrufer zurückgegeben, sofern das Dokument gültig ist und das richtige Format aufweist. Anschließend kann der Aufrufer jederzeit anhand der Transaktions-ID den Status der angeforderten Transaktion abfragen.
Das Portal sollte das folgende Nachrichtengerüst mit den entsprechend eingetragenen Daten verwenden, um in Product Center ein Katalogelement hinzuzufügen. Der Parameter 'mode' sollte den Wert 'SYNC' haben, wenn unverzüglich eine Antwort erfolgen soll. Soll die Verarbeitung asynchron stattfinden, muss entsprechend der Wert 'ASYNC' verwendet werden.
<envelope>
<wpcHeader>
<!— companyName. Standardmäßig werden Benutzer-ID
und Unternehmen in WPC dem entsprechenden Scriptkontext entnommen. Dieses Feld dient momentan
nur zur Information -->
< companyName></ companyName>
<!—UserID. Standardmäßig werden Benutzer-ID
und Unternehmen in WPC dem entsprechenden Scriptkontext entnommen. Dieses Feld dient momentan
nur zur Information -->
< userID></ userID>
<!--messageIdentifier dient zur
eindeutigen Identifizierung der einzelnen Nachrichten -->
< messageIdentifier></
messageIdentifier>
</wpcHeader>
<wpcBody>
< wpcCommand type=ADD mode=SYNC
>
<wpcCatalogItem>
………...
</wpcCatalogItem>
</wpcCommand>
</wpcBody>
</envelope>
Die zugehörige Antwort von Product Center sollte wie folgt aussehen:
<envelope> <wpcHeader> <!— companyName. Standardmäßig werden Benutzer-ID und Unternehmen in WPC dem entsprechenden Scriptkontext entnommen. Dieses Feld dient momentan nur zur Information --> < companyName></ companyName> <!— UserID. Standardmäßig werden Benutzer-ID und Unternehmen in WPC dem entsprechenden Scriptkontext entnommen. Dieses Feld dient momentan nur zur Information --> < userID></ userID> <!--messageIdentifier dient zur eindeutigen Identifizierung der einzelnen Nachrichten --> < messageIdentifier></ messageIdentifier> </wpcHeader> <wpcBody> < wpcResponse> < wpcEntityIdentifier> <!—messageidentifier - Wert der Anforderungsnachricht --!> < wpcMessageIdentifier > </ wpcMessageIdentifier > <!—Für Anforderungsnachricht erstellte WPC-Transaktions-ID --!> < wpcTransactionID ></ wpcTransactionID > </ wpcEntityIdentifier> < wpcNotification > < notificationInfo type=”SUCCESS” > < notificationCode >000</ notificationCode > <notificationMessage>SUCCESS</notificationMessage> </ wpcResponse> </wpcBody> </envelope>
Tritt ein Fehler auf, enthält das Attribut 'type' des Elements 'notificationInfo' einen der Werte 'FEHLER' oder 'WARNUNG', 'notificationCode' enthält den Fehlercode und 'notificationMessage' enthält die zugehörige Fehlernachricht. Dies gilt für alle Nachrichten, die vom Portal gesendet werden. Im Fall einer Such- oder Auswahlanforderung enthält 'wpcResponse' den Block 'wpcCatalogueItem' als Teil der Antwort, die bei einer Anforderung im synchronen Modus das Ergebnis der Suche bzw. Auswahl darstellt.
Bei einer asynchronen Anforderung sollte die Anforderungsnachricht wie folgt aussehen:
<envelope>
<wpcHeader>
<!— companyName. Standardmäßig werden Benutzer-ID
und Unternehmen in WPC dem entsprechenden Scriptkontext entnommen. Dieses Feld dient momentan
nur zur Information -->
< companyName></ companyName>
<!—UserID. Standardmäßig werden Benutzer-ID
und Unternehmen in WPC dem entsprechenden Scriptkontext entnommen. Dieses Feld dient momentan
nur zur Information -->
< userID></ userID>
!--messageIdentifier dient zur
eindeutigen Identifizierung der einzelnen Nachrichten -->
< messageIdentifier></ messageIdentifier>
</wpcHeader>
<wpcBody>
< wpcCommand type=ADD mode=”ASYNC”>
<!— Der folgende Block wird für Massenelementoperationen verwendet --!>
<!— Zum jetzigen Zeitpunkt wird nur das Dateiformat CSV unterstützt --!>
<wpcDataContainer fileType=”CSV”>
<serverName></serverName>
<userName></userName>
<password></password>
<dataDir></dataDir>
<fileName></filename>
</wpcCommand>
</wpcBody>
</envelope>
Die zugehörige Antwort sieht wie folgt aus:
<envelope>
<wpcHeader>
<!— companyName. Standardmäßig werden Benutzer-ID
und Unternehmen in WPC dem entsprechenden Scriptkontext entnommen. Dieses Feld dient momentan
nur zur Information -->
< companyName></ companyName>
<!—UserID. Standardmäßig werden Benutzer-ID
und Unternehmen in WPC dem entsprechenden Scriptkontext entnommen. Dieses Feld dient momentan
nur zur Information -->
< userID></ userID>
<!--messageIdentifier dient zur
eindeutigen Identifizierung der einzelnen Nachrichten -->
< messageIdentifier></ messageIdentifier>
</wpcHeader>
<wpcBody>
< wpcResponse>
< wpcEntityIdentifier>
<!—messageidentifier - Wert der Anforderungsnachricht --!>
< wpcMessageIdentifier > </ wpcMessageIdentifier >
<!—Für Anforderungsnachricht erstellte WPC-Transaktions-ID --!>
< wpcTransactionID ></ wpcTransactionID >
</ wpcEntityIdentifier>
< wpcNotification >
< notificationInfo type=”PROCESSING” >
< notificationCode >999</ notificationCode >
<notificationMessage>PROCESSING</notificationMessage>
</ wpcResponse>
</wpcBody>
</envelope>
Das Portal kann nun durch wiederholtes Abfragen von Product Center den Abschluss der Transaktion prüfen. Die folgende Nachricht erfüllt diesen Zweck:
<envelope>
<wpcHeader>
<!— companyName. Standardmäßig werden Benutzer-ID
und Unternehmen in WPC dem entsprechenden Scriptkontext entnommen. Dieses Feld dient momentan
nur zur Information -->
< companyName></ companyName>
<!—UserID. Standardmäßig werden Benutzer-ID
und Unternehmen in WPC dem entsprechenden Scriptkontext entnommen. Dieses Feld dient momentan
nur zur Information -->
< userID></ userID>
<!--messageIdentifier dient zur
eindeutigen Identifizierung der einzelnen Nachrichten -->
< messageIdentifier></ messageIdentifier>
</wpcHeader>
<wpcBody>
< wpcCommand type=”QUERY_TRANSACTION” mode=”ASYNC”>
< wpcEntityIdentifier>
<!—messageidentifier - Wert der Anforderungsnachricht --!>
< wpcMessageIdentifier > </ wpcMessageIdentifier >
<!—Für Anforderungsnachricht erstellte WPC-Transaktions-ID --!>
< wpcTransactionID ></ wpcTransactionID >
</ wpcEntityIdentifier>
</wpcCommand>
</wpcBody>
</envelope>
Bei erfolgreichem Abschluss der Operation sendet Product Center die folgende Antwort zurück:
<envelope>
<wpcHeader>
<!— companyName. Standardmäßig werden Benutzer-ID
und Unternehmen in WPC dem entsprechenden Scriptkontext entnommen. Dieses Feld dient momentan
nur zur Information -->
< companyName></ companyName>
<!—UserID. Standardmäßig werden Benutzer-ID
und Unternehmen in WPC dem entsprechenden Scriptkontext entnommen. Dieses Feld dient momentan
nur zur Information -->
< userID></ userID>
<!--messageIdentifier dient zur
eindeutigen Identifizierung der einzelnen Nachrichten -->
< messageIdentifier></ messageIdentifier>
</wpcHeader>
<wpcBody>
< wpcResponse>
< wpcEntityIdentifier>
<!—messageidentifier - Wert der Anforderungsnachricht --!>
< wpcMessageIdentifier > </ wpcMessageIdentifier >
<!—Für Anforderungsnachricht erstellte WPC-Transaktions-ID --!>
< wpcTransactionID ></ wpcTransactionID >
</ wpcEntityIdentifier>
< wpcNotification >
< notificationInfo type=”SUCCESS” >
< notificationCode >000</ notificationCode >
<notificationMessage>SUCCESS</notificationMessage>
</ wpcResponse>
</wpcBody>
</envelope>
Wenn die Anforderung noch in Bearbeitung ist, wird die gleiche Antwort wie unmittelbar nach dem Empfang der asynchronen Anforderung in Product Center gesendet.
In diesem Abschnitt werden die Scripts und Web-Services erläutert, die mit der Portalintegration verbunden sind.
wpc_portal_integrated_dev
Web-Service-Implementierungsscript (/scripts/wbs/wpc_portal_integrated_dev0)
/scripts/triggers/WPC-Portal-RequestUtil.wpcs
/scripts/triggers/WPC-Portal-ResponseUtil.wpcs
/scripts/triggers/WPC-Portal-ItemHelper.wpcs
/scripts/triggers/WPC-Portal-CSVHelper.wpcs
/scripts/triggers/WPC-Portal-ViewHelper.wpcs
In den folgenden Abschnitten finden Sie XML-Beispielnachrichten und zugehörige Scripts zum Aufrufen der jeweils angegebenen Befehle.
Die angegebene Anforderung fügt das Element hinzu und liefert eine Erfolgs- oder Fehlernachricht zurück.
// Aufrufen der Nachricht zum Hinzufügen eines Elements
<?xml version="1.0" encoding="UTF-8"?>
<envelope xmlns="http://ibm.com/wpc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/wpc/
C:\wpc\portal\webservice_dev.xsd" communicationVersion="5.2">
<WPCResponseType>synchronous</WPCResponseType>
<wpcHeader>
<companyName>null</companyName>
<userID>administrator</userID>
<password>null</password>
<messageIdentifier>D5D92CE0-97A8-11D9-B84B-A068E33E0476</messageIdentifier>
<timestamp>2005-03-18</timestamp>
<supplierId>null</supplierId>
</wpcHeader>
<wpcBody>
<wpcCommand type="ADD" mode="SYNC">
<wpcParentCategory>1/5</wpcParentCategory>
<wpcCatalogName> CTG_PORTAL_MASTER</wpcCatalogName>
<wpcTradeItem>
<attribute-list>
<attribute name="Master Item Hier Sec Spec1/name"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Hier Sec Spec1/ID"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/GTIN" type="STRING">
<values>
<value occurrence="0">393939</value>
</values>
</attribute>
<attribute name="Master Item Spec/Internal ID"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Short Description"
type="STRING">
<values>
<value occurrence="0">short description</value>
</values>
</attribute>
<attribute name="Master Item Spec/Long Description"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Thumbnail Preview" type="THUMBNAIL_IMAGE_URL">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Item Type" type="STRING_ENUMERATION">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Item Regulation" type="STRING_ENUMERATION">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Item Source" type="STRING_ENUMERATION">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Perishable Type" type="STRING_ENUMERATION">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Product Content"
type="GROUPING">
<values>
<groupvalue>
<attribute name="Master Item Spec/Product Content/Thumbnail Image"
type="URL">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Product Content/Small Thumbnail
Image" type="URL">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Product Content/Print Image"
type="URL">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Product Content/Web Image"
type="IMAGE">
<values>
<file type="" occurrence="0">
<name/>
<dir/>
<server-name/>
<userID/>
<password/>
</file>
</values>
</attribute>
<attribute name="Master Item Spec/Product Content/POS Image"
type="URL">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Product Content/Hi-Res Image"
type="URL">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Product Content/Product
Documents"
type="GROUPING">
<values>
<groupvalue>
<attribute name="Master Item Spec/Product Content/Product
Documents/Document" type="URL">
<values>
<value occurrence="0"/>
</values>
</attribute>
</groupvalue>
</values>
</attribute>
</groupvalue>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet"
type="GROUPING">
<values>
<groupvalue>
<attribute name="Master Item Spec/UCCnet/Product Type"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Brand"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Category"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Color"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Consumer Unit"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Coupon Family Code"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Dated Product - Days"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Detailed Description"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/D-U-N-S"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/EANUCC Code"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/EANUCC Type"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Effective Date"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/First Arrival"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/First Order"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/First Ship"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Flash Point Temp"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Flash Point Unit"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/GLN"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Gross Weight"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/GTIN"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Hazmat Class Code"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Hazmat Code"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Hazmat Code Qualifier"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Hazmat Description"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Hazmat Sequence"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Height"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/HI"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/InnerPack"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Item Description"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Item Status"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Last Arrival"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Last Order"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Last Ship"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Length"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Linear"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Maximum Order"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Maximum Ship"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Minimum Order"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Minimum Ship"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Name"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Net Weight"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Order Increment"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Order Sizing Factor"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Orderable Unit"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Order Increment Units"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Pack"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Page"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Phone"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/POS Desc 1"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/POS Desc 2"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Pre Priced Amount"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Private"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Replaced by GTIN"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Replaces GTIN"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Size"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Size Units"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Special Handling Code"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Suggested Retail Price"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/TI"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Version"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Version Status"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Volume"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Volume Unit"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Weight"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Width"
type="STRING">
<values>
<value/>
</values>
</attribute>
</groupvalue>
</values>
</attribute>
<attribute name="Master Item Spec/Supplier_ID"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/ItemStatus"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Effective Start Date"
type="DATE">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Effective End Date"
type="DATE">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Last Updated By"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Update on"
type="DATE">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Comment 1"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Comment 2"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Comment 3"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Comment 4"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Comment 5"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/AddedVia" type="STRING_ENUMERATION">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/ModifiedVia" type="STRING_ENUMERATION">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Item Price"
type="NUMBER">
<values>
<value occurrence="0">0.0</value>
</values>
</attribute>
<attribute name="Master Item Spec/Item Unit Size"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/testImage"
type="IMAGE">
<values>
<file>
<name/>
</file>
</values>
</attribute>
</attribute-list>
</wpcTradeItem>
</wpcCommand>
</wpcBody>
</envelope>
Die nachfolgend dargestellte Anforderung ändert das Element mit dem gegebenen Primärschlüssel:
// Aufrufen der Nachricht zum Ändern eines Elements
<?xml version="1.0" encoding="UTF-8"?>
<envelope xmlns="http://ibm.com/wpc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/wpc/
C:\wpc\portal\webservice_dev.xsd" communicationVersion="5.2">
<WPCResponseType>synchronous</WPCResponseType>
<wpcHeader>
<companyName>null</companyName>
<userID>administrator</userID>
<password>null</password>
<messageIdentifier>253667D0-97A9-11D9-B84B-CFE00DAB579A</messageIdentifier>
<timestamp>2005-03-18</timestamp>
<supplierId>null</supplierId>
</wpcHeader>
<wpcBody>
<wpcCommand type="MODIFY" mode="SYNC">
<wpcParentCategory>1/5</wpcParentCategory>
<wpcCatalogName> CTG_PORTAL_MASTER</wpcCatalogName>
<wpcTradeItem ID="393939">
<attribute-list>
<attribute name="Master Item Hier Sec Spec1/name"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Hier Sec Spec1/ID"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/GTIN" type="STRING">
<values>
<value occurrence="0">393939</value>
</values>
</attribute>
<attribute name="Master Item Spec/Internal ID"
type="STRING">
<values>
<value occurrence="0">23</value>
</values>
</attribute>
<attribute name="Master Item Spec/Short Description"
type="STRING">
<values>
<value occurrence="0">short description</value>
</values>
</attribute>
<attribute name="Master Item Spec/Long Description"
type="STRING">
<values>
<value occurrence="0">23</value>
</values>
</attribute>
<attribute name="Master Item Spec/Thumbnail Preview" type="THUMBNAIL_IMAGE_URL">
<values>
<value occurrence="0">http://23</value>
</values>
</attribute>
<attribute name="Master Item Spec/Item Type" type="STRING_ENUMERATION">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Item Regulation" type="STRING_ENUMERATION">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Item Source" type="STRING_ENUMERATION">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Perishable Type" type="STRING_ENUMERATION">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Product Content"
type="GROUPING">
<values>
<groupvalue>
<attribute name="Master Item Spec/Product Content/Thumbnail Image"
type="URL">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Product Content/Small Thumbnail
Image" type="URL">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Product Content/Print Image"
type="URL">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Product Content/Web Image"
type="IMAGE">
<values>
<file type="" occurrence="0">
<name/>
<dir/>
<server-name/>
<userID/>
<password/>
</file>
</values>
</attribute>
<attribute name="Master Item Spec/Product Content/POS Image"
type="URL">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Product Content/Hi-Res Image"
type="URL">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Product Content/Product
Documents" type="GROUPING">
<values>
<groupvalue>
<attribute name="Master Item Spec/Product Content/Product
Documents/Document" type="URL">
<values>
<value occurrence="0"/>
</values>
</attribute>
</groupvalue>
</values>
</attribute>
</groupvalue>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet"
type="GROUPING">
<values>
<groupvalue>
<attribute name="Master Item Spec/UCCnet/Product Type"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Brand"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Category"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Color"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Consumer Unit"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Coupon Family Code"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Dated Product - Days"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Detailed Description"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/D-U-N-S"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/EANUCC Code"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/EANUCC Type"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Effective Date"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/First Arrival"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/First Order"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/First Ship"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Flash Point Temp"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Flash Point Unit"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/GLN"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Gross Weight"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/GTIN"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Hazmat Class Code"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Hazmat Code"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Hazmat Code Qualifier"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Hazmat Description"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Hazmat Sequence"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Height"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/HI"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/InnerPack"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Item Description"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Item Status"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Last Arrival"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Last Order"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Last Ship"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Length"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Linear"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Maximum Order"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Maximum Ship"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Minimum Order"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Minimum Ship"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Name"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Net Weight"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Order Increment"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Order Sizing Factor"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Orderable Unit"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Order Increment Units"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Pack"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Page"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Phone"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/POS Desc 1"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/POS Desc 2"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Pre Priced Amount"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Private"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Replaced by GTIN"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Replaces GTIN"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Size"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Size Units"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Special Handling Code"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Suggested Retail Price"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/TI"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Version"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Version Status"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Volume"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Volume Unit"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Weight"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/UCCnet/Width"
type="STRING">
<values>
<value/>
</values>
</attribute>
</groupvalue>
</values>
</attribute>
<attribute name="Master Item Spec/Supplier_ID"
type="STRING">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/ItemStatus"
type="STRING">
<values>
<value occurrence="0">232</value>
</values>
</attribute>
<attribute name="Master Item Spec/Effective Start Date"
type="DATE">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Effective End Date"
type="DATE">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Last Updated By"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Update on"
type="DATE">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Comment 1"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Comment 2"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Comment 3"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Comment 4"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/Comment 5"
type="STRING">
<values>
<value occurrence="0"/>
</values>
</attribute>
<attribute name="Master Item Spec/AddedVia" type="STRING_ENUMERATION">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/ModifiedVia" type="STRING_ENUMERATION">
<values>
<value/>
</values>
</attribute>
<attribute name="Master Item Spec/Item Price"
type="NUMBER">
<values>
<value occurrence="0">0.0</value>
</values>
</attribute>
<attribute name="Master Item Spec/Item Unit Size"
type="STRING">
<values>
<value occurrence="0">23</value>
</values>
</attribute>
<attribute name="Master Item Spec/testImage"
type="IMAGE">
<values>
<file>
<name/>
</file>
</values>
</attribute>
</attribute-list>
</wpcTradeItem>
</wpcCommand>
</wpcBody>
</envelope>
Die nachfolgend dargestellte Anforderung löscht das Element mit dem gegebenen Primärschlüssel:
// Aufrufen der Nachricht zum Löschen eines Elements
var strXML = "<?xml version=\"1.0\"
encoding=\"UTF-8\"?>" +
"<wpc:envelope xmlns:wpc=\"http://ibm.com/wpc/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xsi:schemaLocation=\"http://ibm.com/wpc/
C:\vrprabu\5.2\xsd\portalschema\wpc\5.2_siva\envelop_portal.xsd\"
communicationVersion=\"5.2\"> " +
" <wpc:WPCResponseType>synchronous</wpc:WPCResponseType>"
+
" <wpc:wpcHeader>" +
" <wpc:companyName>IBM</wpc:companyName>" +
" <wpc:userID>Admin</wpc:userID>" +
" <wpc:password>trinitron</wpc:password>" +
" <wpc:messageIdentifier>12344</wpc:messageIdentifier>" +
" <wpc:timestamp>2004-10-10</wpc:timestamp>" +
" </wpc:wpcHeader>" +
" <wpc:wpcBody>" +
" <wpc:wpcCommand type=\"DELETE\"
mode=\"SYNC\">" +
" <wpc:wpcParentCategory>Hierarchy1/Category1</wpc:wpcParentCategory>"
+
" <wpc:wpcCatalogName>CTG_PORTAL</wpc:wpcCatalogName>" +
" <wpc:wpcTradeItem ID=\"173\">" +
" </wpc:wpcTradeItem>" +
" </wpc:wpcCommand>" +
" </wpc:wpcBody>" +
"</wpc:envelope>";
var resp = invokeSoapServerForDocLit("<URL des entsprechenden Web-Services>",strXML);
var respLog = createOtherOut("Response.xml"); // Hier wird die Transaktions-ID abgelegt. Die eigentliche Antwort befindet sich unter /scripts/soap/messages/response/<Transaktions-ID>.
respLog.writeln(resp);
respLog.save("Response.xml");
In dieser Suchnachricht können alle Suchparameter verwendet werden, die in einer erweiterten Auswahl zulässig sind. In der WSDL finden Sie weitere Nachrichtenformate für die einzelnen Suchkriterien.
var
strXML = "<wpc:envelope xmlns:wpc='http://ibm.com/wpc/'
communicationVersion='5.2'>" +
"<wpc:WPCResponseType>synchronous</wpc:WPCResponseType>" +
" <wpc:wpcHeader>" +
" <wpc:companyName>ibm</wpc:companyName>" +
" <wpc:userID>admin</wpc:userID>" +
" <wpc:password>admin</wpc:password>" +
" <wpc:messageIdentifier>C815A530-9077-11D9-A530-E0AE7B025BD4</wpc:messageIdentifier>"
+
" <wpc:timestamp>2005-03-09</wpc:timestamp>" +
" <wpc:supplierId>1236868684668</wpc:supplierId>" +
" </wpc:wpcHeader>" +
" <wpc:wpcBody>" +
" <wpc:wpcCommand type=\"SEARCH\" mode=\"SYNC\"
>" +
" <wpc:wpcCatalogName>CTG_PORTAL_MASTER</wpc:wpcCatalogName>"
+
" <wpc:wpcResultCount>2</wpc:wpcResultCount>" +
" <wpc:wpcSearchCriteria>" +
" <wpc:wpcSearchOperator name=\"AND\">" +
" <wpc:wpcSearchOperator name=\"AND\">" +
" <wpc:wpcSearchElement>" +
" <wpc:wpcAttributePath>Master Item Spec/GTIN</wpc:wpcAttributePath>"
+
" <wpc:wpcAttributeValue></wpc:wpcAttributeValue>" +
" <wpc:wpcAttributeNotPredicate>1</wpc:wpcAttributeNotPredicate>"
+
" <wpc:wpcSearchElementOperator>ISEMPTY</wpc:wpcSearchElementOperator>"
+
" </wpc:wpcSearchElement>" +
" </wpc:wpcSearchOperator>" +
" </wpc:wpcSearchOperator>" +
" </wpc:wpcSearchCriteria>" +
" </wpc:wpcCommand>" +
" </wpc:wpcBody>" +
"</wpc:envelope>";
var resp = invokeSoapServerForDocLit("<URL des entsprechenden Web-Services>",strXML);
var respLog = createOtherOut("Response.xml"); // Hier wird die Transaktions-ID abgelegt. Die eigentliche Antwort befindet sich unter /scripts/soap/messages/response/<Transaktions-ID>.
respLog.writeln(resp);
respLog.save("Response.xml");
Die Nachricht liefert die Primärspezifikation des gegebenen Katalogs zurück. Wenn die Kategoriedaten vorhanden sind und dieser Kategorie eine Elementkategoriespezifikation zugeordnet ist, werden diese Informationen ebenfalls mit der Nachricht zurückgesendet.
// Aufrufen der Nachricht ITEMSKELETON
var strXML = "<wpc:envelope xmlns:wpc=\"http://ibm.com/wpc/\"
communicationVersion=\"5.2\">" +
" <wpc:WPCResponseType>synchronous</wpc:WPCResponseType>"
+
" <wpc:wpcHeader>"+
" <wpc:companyName>carmel</wpc:companyName>" +
" <wpc:userID>Admin</wpc:userID>" +
" <wpc:password>trinitron</wpc:password>" +
" <wpc:messageIdentifier>12345</wpc:messageIdentifier>" +
" <wpc:timestamp>2004-12-13</wpc:timestamp>" +
" </wpc:wpcHeader> " +
" <wpc:wpcBody> " +
" <wpc:wpcCommand type=\"ITEMSKELETON\"
mode=\"SYNC\"> " +
" <wpc:wpcCatalogName>CTG_PORTAL_MASTER</wpc:wpcCatalogName>"
+
" </wpc:wpcCommand>" +
" </wpc:wpcBody>" +
"</wpc:envelope>";
var resp = invokeSoapServerForDocLit("<URL des entsprechenden Web-Services>",strXML);
var respLog = createOtherOut("Response.xml"); // Hier wird die Transaktions-ID abgelegt. Die eigentliche Antwort befindet sich unter /scripts/soap/messages/response/<Transaktions-ID>.
respLog.writeln(resp);
respLog.save("Response.xml");
Dieser Befehl wird vom WPC-Web-Service-Framework selbst verarbeitet, nicht von der entsprechenden Scriptimplementierung. Das Web-Service-Framework vergibt für jede asynchrone Anforderung eine eindeutige Transaktions-ID. Wenn WPS die Nachricht zum Abfragen der Transaktionsdetails mit der gegebenen Transaktions-ID sendet, sendet das Framework die vom Implementierungsscript generierte Antwort zurück.
// Aufrufen der Nachricht QUERY_TRANSACTION_DETAILS
<ibm:envelope xmlns:ibm="http://ibm.com/wpc/"
communicationVersion="5.2">
<ibm:WPCResponseType>synchronous</ibm:WPCResponseType>
<ibm:wpcHeader>
<ibm:companyName>String</ibm:companyName>
<ibm:userID>String</ibm:userID>
<ibm:password>String</ibm:password>
<ibm:messageIdentifier>1242432</ibm:messageIdentifier>
<ibm:timestamp>1967-08-13</ibm:timestamp>
</ibm:wpcHeader>
<ibm:wpcBody>
<ibm:wpcCommand type="QUERY_TRANSACTION_DETAILS"
mode="SYNC">
<ibm:wpcTransactionID>99</ibm:wpcTransactionID>
</ibm:wpcCommand>
</ibm:wpcBody>
</ibm:envelope>
Diese Sendeaufrufnachricht wird in regelmäßigen Abständen vom Benutzer gesendet, um zu ermitteln, ob die Verarbeitung der gegebenen Transaktions-ID (asynchrone Nachricht) abgeschlossen ist. Auch diese Nachricht wird vom Web-Service-Framework bearbeitet, nicht von den Implementierungsscripts.
// Aufrufen der Nachricht QUERY_TRANSACTION_STATUS
<ibm:envelope xmlns:ibm="http://ibm.com/wpc/"
communicationVersion="5.2">
<ibm:WPCResponseType>synchronous</ibm:WPCResponseType>
<ibm:wpcHeader>
<ibm:companyName>String</ibm:companyName>
<ibm:userID>String</ibm:userID>
<ibm:password>String</ibm:password>
<ibm:messageIdentifier>1242432</ibm:messageIdentifier>
<ibm:timestamp>1967-08-13</ibm:timestamp>
</ibm:wpcHeader>
<ibm:wpcBody>
<ibm:wpcCommand type="QUERY_TRANSACTION_STATUS"
mode="SYNC">
<ibm:wpcTransactionID>99</ibm:wpcTransactionID>
</ibm:wpcCommand>
</ibm:wpcBody>
</ibm:envelope>
Datei hochladen
Soll eine Datei hochgeladen werden, die als Anhang eines Web-Services gesendet wurde, kopiert ein Antwortimplementierungsscript die hochgeladene Datei in den entsprechenden Ordner 'ctg_files' des Lieferanten im Dokumentspeicher und sendet den aktuellen Pfad des Dokumentspeichers zurück.
// Aufrufen der Nachricht UPLOAD_FILE ohne Anhänge
var strXML = "<wpc:envelope xmlns:wpc=\"http://ibm.com/wpc/\"
communicationVersion=\"5.2\">" +
"<wpc:WPCResponseType>synchronous</wpc:WPCResponseType>" +
" <wpc:wpcHeader>" +
" <wpc:companyName>null</wpc:companyName>" +
" <wpc:userID>wpsadmin</wpc:userID>" +
" <wpc:password>null</wpc:password>" +
" <wpc:messageIdentifier>C71125E0-8002-11D9-BDC3-93DA3F31311D</wpc:messageIdentifier>"
+
" <wpc:timestamp>2005-02-16</wpc:timestamp>" +
" <wpc:supplierId>null</wpc:supplierId>" +
" </wpc:wpcHeader>" +
"<wpc:wpcBody>" +
" <wpc:wpcCommand type=\"UPLOAD_FILE\"
mode=\"SYNC\">" +
" <wpc:wpcDataContainer>" +
" <wpc:wpcAttachmentsDataContainer>" +
" <wpc:FileName>xyz.jpg</wpc:FileName>" +
" </wpc:wpcAttachmentsDataContainer>" +
" </wpc:wpcDataContainer>" +
" </wpc:wpcCommand>" +
"</wpc:wpcBody>" +
"</wpc:envelope>";
var resp = invokeSoapServerForDocLit("<URL des entsprechenden Web-Services>",strXML);
var respLog = createOtherOut("Response.xml"); // Hier wird die Transaktions-ID abgelegt. Die eigentliche Antwort befindet sich unter /scripts/soap/messages/response/<Transaktions-ID>.
respLog.writeln(resp);
respLog.save("Response.xml");
Bevor dieser Befehl aufgerufen wird, wird zunächst der Befehl zum Hochladen von Dateien verwendet, um die CSV-Datei mit den gewünschten Daten hochzuladen. Anschließend wird die Importnachricht in Verbindung mit dem Pfad des Dokumentspeichers der hochgeladenen Datei gesendet. Diese Daten werden außerdem vom Implementierungsscript verarbeitet, um die entsprechenden Datensätze hinzuzufügen oder zu aktualisieren.
// Aufrufen der Nachricht IMPORT ohne Anhänge
var strXML = "<wpc:envelope xmlns:wpc=\"http://ibm.com/wpc/\"
communicationVersion=\"5.2\">" +
"<wpc:WPCResponseType>asynchronous</wpc:WPCResponseType>"
+
" <wpc:wpcHeader>" +
" <wpc:companyName>null</wpc:companyName>" +
" <wpc:userID>wpsadmin</wpc:userID>" +
" <wpc:password>null</wpc:password>" +
" <wpc:messageIdentifier>C71125E0-8002-11D9-BDC3-93DA3F31311D</wpc:messageIdentifier>"
+
" <wpc:timestamp>2005-02-16</wpc:timestamp>" +
" <wpc:supplierId>null</wpc:supplierId>" +
" </wpc:wpcHeader>" +
"<wpc:wpcBody>" +
" <wpc:wpcCommand type=\"IMPORT\" mode=\"ASYNC\">"
+
"<wpc:wpcFileDocStorePath>public_html/ctg_files/1108730965078_15.3KB.1.csv</wpc:wpcFileDocStorePath>"
+
" </wpc:wpcCommand>" +
"</wpc:wpcBody>" +
"</wpc:envelope>";
var resp = invokeSoapServerForDocLit("<URL des entsprechenden Web-Services>",strXML);
var respLog = createOtherOut("Response.xml"); // Hier wird die Transaktions-ID abgelegt. Die eigentliche Antwort befindet sich unter /scripts/soap/messages/response/<Transaktions-ID>.
respLog.writeln(resp);
respLog.save("Response.xml");
Die folgende Nachricht ruft alle Elementattribute einschließlich der kategoriespezifischen Attribute ab, sofern vorhanden.
// Abrufen der Elementdetails
<wpc:envelope xmlns:wpc="http://ibm.com/wpc/" communicationVersion="5.2">
<wpc:WPCResponseType>synchronous</wpc:WPCResponseType>
<wpc:wpcHeader>
<wpc:companyName>IBM</wpc:companyName>
<wpc:userID>Admin</wpc:userID>
<wpc:password>trinitron</wpc:password>
<wpc:messageIdentifier>12343</wpc:messageIdentifier>
<wpc:timestamp>2004-12-10</wpc:timestamp>
<wpc:supplierId>2348623864826</wpc:supplierId>
</wpc:wpcHeader>
<wpc:wpcBody>
<wpc:wpcCommand type="ITEMDETAIL" mode="ASYNC">
<wpc:wpcParentCategory>1/5</wpc:wpcParentCategory>
<wpc:wpcCatalogName>CTG_PORTAL_MASTER</wpc:wpcCatalogName>
<wpc:wpcTradeItem ID="111225868"></wpc:wpcTradeItem>
</wpc:wpcCommand>
</wpc:wpcBody>
</wpc:envelope>
var resp = invokeSoapServerForDocLit("<URL des entsprechenden Web-Services>",strXML);
var respLog = createOtherOut("Response.xml"); // Hier wird die Transaktions-ID abgelegt. Die eigentliche Antwort befindet sich unter /scripts/soap/messages/response/<Transaktions-ID>.
respLog.writeln(resp);
respLog.save("Response.xml");
Diese Nachricht gibt eine Elementdetailantwort ohne Werte für den Primärschlüssel zurück.
// Aufrufen einer Nachricht zum Klonen eines Elements
// Abrufen der Elementdetails
<wpc:envelope xmlns:wpc="http://ibm.com/wpc/" communicationVersion="5.2">
<wpc:WPCResponseType>synchronous</wpc:WPCResponseType>
<wpc:wpcHeader>
<wpc:companyName>IBM</wpc:companyName>
<wpc:userID>Admin</wpc:userID>
<wpc:password>trinitron</wpc:password>
<wpc:messageIdentifier>12343</wpc:messageIdentifier>
<wpc:timestamp>2004-12-10</wpc:timestamp>
<wpc:supplierId>2348623864826</wpc:supplierId>
</wpc:wpcHeader>
<wpc:wpcBody>
<wpc:wpcCommand type="CLONEITEM" mode="ASYNC">
<wpc:wpcParentCategory>1/5</wpc:wpcParentCategory>
<wpc:wpcCatalogName>CTG_PORTAL_MASTER</wpc:wpcCatalogName>
<wpc:wpcTradeItem ID="111225868"></wpc:wpcTradeItem>
</wpc:wpcCommand>
</wpc:wpcBody>
</wpc:envelope>
var resp = invokeSoapServerForDocLit("<URL des entsprechenden Web-Services>",strXML);
var respLog = createOtherOut("Response.xml"); // Hier wird die Transaktions-ID abgelegt. Die eigentliche Antwort befindet sich unter /scripts/soap/messages/response/<Transaktions-ID>.
respLog.writeln(resp);
respLog.save("Response.xml");
Dieser Befehl liefert eine Antwort mit allen untergeordneten Kategorien und Elementen der aktuellen Kategorie für den gegebenen Katalog und seine primäre Kategoriebaumstruktur zurück, sofern in der Anforderungsnachricht keine Informationen zur Kategoriebaumstruktur angegeben werden.
// Aufrufen der Nachricht QUERY_CATALOG_CHILDREN
var strXML = "<?xml version=\"1.0\"
encoding=\"UTF-8\"?>" +
"<wpc:envelope xmlns:wpc=\"http://ibm.com/wpc/\"
communicationVersion=\"5.2\"> " +
"<wpc:WPCResponseType>synchronous</wpc:WPCResponseType>"
+
"<wpc:wpcHeader>" +
"<wpc:companyName>ibm</wpc:companyName>" +
"<wpc:userID>portaluser</wpc:userID>" +
"<wpc:password>password</wpc:password>" +
"<wpc:messageIdentifier>A2473730-5D85-11D9-BF8A-BC1A417CAB44</wpc:messageIdentifier>"
+
"<wpc:timestamp>2005-01-03</wpc:timestamp>" +
"</wpc:wpcHeader>" +
"<wpc:wpcBody>" +
"<wpc:wpcCommand type=\"QUERY_CATALOG_CHILDREN\"
mode=\"SYNC\">" +
"<wpc:wpcParentCategory>1/5</wpc:wpcParentCategory>" +
"<wpc:wpcCatalogName>CTG_PORTAL</wpc:wpcCatalogName>" +
"<wpc:wpcHierarchyName name=\"Hier_Portal\"
type=\"PRIMARY\"/>" +
"</wpc:wpcCommand>" +
"</wpc:wpcBody>" +
"</wpc:envelope>";
var resp = invokeSoapServerForDocLit("<URL des entsprechenden Web-Services>",strXML);
var respLog = createOtherOut("Response.xml"); // Hier wird die Transaktions-ID abgelegt. Die eigentliche Antwort befindet sich unter /scripts/soap/messages/response/<Transaktions-ID>.
respLog.writeln(resp);
respLog.save("Response.xml");
Diese Nachricht ruft alle in WPC verfügbaren Kataloge ab und sendet diese Kataloge als Antwort zurück.
// Aufrufen des Nachrichtentyps GET_CATALOGS
var strXML = "<?xml version=\"1.0\"
encoding=\"UTF-8\"?>" +
"<wpc:envelope xmlns:wpc=\"http://ibm.com/wpc/\"
communicationVersion=\"5.2\"> " +
"<wpc:WPCResponseType>synchronous</wpc:WPCResponseType>"
+
"<wpc:wpcHeader>" +
"<wpc:companyName>ibm</wpc:companyName>" +
"<wpc:userID>portaluser</wpc:userID>" +
"<wpc:password>password</wpc:password>" +
"<wpc:messageIdentifier>A2473730-5D85-11D9-BF8A-BC1A417CAB44</wpc:messageIdentifier>"
+
"<wpc:timestamp>2005-01-03</wpc:timestamp>" +
"</wpc:wpcHeader>" +
"<wpc:wpcBody>" +
"<wpc:wpcCommand type=\"GET_CATALOGS\"
mode=\"SYNC\"/>" +
"</wpc:wpcBody>" +
"</wpc:envelope>";
var resp = invokeSoapServerForDocLit("<URL des entsprechenden Web-Services>",strXML);
var respLog = createOtherOut("Response.xml"); // Hier wird die Transaktions-ID abgelegt. Die eigentliche Antwort befindet sich unter /scripts/soap/messages/response/<Transaktions-ID>.
respLog.writeln(resp);
respLog.save("Response.xml");
Diese Nachricht gibt die angegebene Ansicht in der XML-Antwort zurück. Die Nachricht wird von Product Center momentan nicht verwendet.
Diese Nachricht gibt die angeforderte Antwort als Anhang zurück.
// Aufrufen der Nachricht GET_RESOURCE
<?xml version="1.0" encoding="UTF-8"?>
<envelope xmlns="http://ibm.com/wpc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/wpc/
C:\wpc\portal\webservice_dev.xsd" communicationVersion="5.2">
<WPCResponseType>synchronous</WPCResponseType>
<wpcHeader>
<companyName>null</companyName>
<userID>administrator</userID>
<password>null</password>
<messageIdentifier>1D3589B0-97AB-11D9-B84B-AED0CDB181F1</messageIdentifier>
<timestamp>2005-03-18</timestamp>
<supplierId>null</supplierId>
</wpcHeader>
<wpcBody>
<wpcCommand type="GET_RESOURCE" mode="SYNC">
<wpcParentCategory>9/11</wpcParentCategory>
<wpcCatalogName>CTG_PORTAL_MASTER</wpcCatalogName>
<wpcHierarchyName type="PRIMARY" name="null"/>
<wpcTradeItem ID="1732">
<attribute-list>
<attribute name="Master Item Spec/Product Content/Web Image"
type="IMAGE"/>
</attribute-list>
</wpcTradeItem>
</wpcCommand>
</wpcBody>
</envelope>
Möglicherweise bietet IBM die in dieser Dokumentation beschriebenen Produkte, Services oder Funktionen in anderen Ländern nicht an. Informationen über die gegenwärtig im jeweiligen Land verfügbaren Produkte und Services sind beim IBM Ansprechpartner erhältlich. Hinweise auf IBM Lizenzprogramme oder andere IBM Produkte bedeuten nicht, dass nur Programme, Produkte oder Services von IBM verwendet werden können. Anstelle der IBM Produkte, Programme oder Services können auch andere ihnen äquivalente Produkte, Programme oder Services verwendet werden, solange diese keine gewerblichen oder anderen Schutzrechte der IBM verletzen. Die Verantwortung für den Betrieb von Fremdprodukten, Fremdprogrammen und Fremdservices liegt beim Kunden.
Für in diesem Handbuch beschriebene Erzeugnisse und Verfahren kann es IBM Patente oder Patentanmeldungen geben. Mit der Auslieferung dieses Handbuchs ist keine Lizenzierung dieser Patente verbunden. Lizenzanforderungen sind schriftlich an folgende Adresse zu richten (Anfragen an diese Adresse müssen auf Englisch formuliert werden):
IBM Europe
Director of Licensing
92066 Paris La Defense Cedex
France
Trotz sorgfältiger Bearbeitung können technische Ungenauigkeiten oder Druckfehler in dieser Veröffentlichung nicht ausgeschlossen werden. Die Angaben in diesem Handbuch werden in regelmäßigen Zeitabständen aktualisiert. Die Änderungen werden in Überarbeitungen oder in Technical News Letters (TNLs) bekannt gegeben. IBM kann ohne weitere Mitteilung jederzeit Verbesserungen und/oder Änderungen an den in dieser Veröffentlichung beschriebenen Produkten und/oder Programmen vornehmen.
Verweise in diesen Informationen auf Websites anderer Anbieter dienen lediglich als Benutzerinformationen und stellen keinerlei Billigung des Inhalts dieser Websites dar. Das über diese Websites verfügbare Material ist nicht Bestandteil des Materials für dieses IBM Produkt. Die Verwendung dieser Websites geschieht auf eigene Verantwortung.
Werden an IBM Informationen eingesandt, können diese beliebig verwendet werden, ohne dass eine Verpflichtung gegenüber dem Einsender entsteht.
Lizenznehmer des Programms, die Informationen zu diesem Produkt wünschen mit der Zielsetzung: (i) den Austausch von Informationen zwischen unabhängigen, erstellten Programmen und anderen Programmen (einschließlich des vorliegenden Programms) sowie (ii) die gemeinsame Nutzung der ausgetauschten Informationen zu ermöglichen, wenden sich an folgende Adresse:
IBM Burlingame Laboratory
Director IBM Burlingame Laboratory
577 Airport Blvd., Suite 800
Burlingame, CA 94010
U.S.A
Die Bereitstellung dieser Informationen kann unter Umständen von bestimmten Bedingungen - in einigen Fällen auch von der Zahlung einer Gebühr - abhängig sein.
Die Lieferung des im Handbuch aufgeführten Lizenzprogramms sowie des zugehörigen Lizenzmaterials erfolgt im Rahmen der ICA-Lizenzbedingungen (IBM Customer Agreement), der Internationalen Nutzungsbedingungen der IBM für Programmpakete (IPLA) oder einer äquivalenten Vereinbarung.
Alle in diesem Dokument enthaltenen Leistungsdaten stammen aus einer gesteuerten Umgebung. Die Ergebnisse, die in anderen Betriebsumgebungen erzielt werden, können daher erheblich von den hier erzielten Ergebnissen abweichen. Einige Daten stammen möglicherweise von Systemen, deren Entwicklung noch nicht abgeschlossen ist. Eine Gewährleistung, dass diese Daten auch in allgemein verfügbaren Systemen erzielt werden, kann nicht gegeben werden. Darüber hinaus wurden einige Daten unter Umständen durch Extrapolation berechnet. Die tatsächlichen Ergebnisse können abweichen. Benutzer dieses Dokuments sollten die entsprechenden Daten in ihrer spezifischen Umgebung prüfen.
Alle Informationen zu Produkten anderer Anbieter stammen von den Anbietern der aufgeführten Produkte, deren veröffentlichten Ankündigungen oder anderen allgemein verfügbaren Quellen. IBM hat diese Produkte nicht getestet und kann daher keine Aussagen zu Leistung, Kompatibilität oder anderen Merkmalen machen. Fragen zu den Leistungsmerkmalen von Produkten anderer Anbieter sind an den jeweiligen Anbieter zu richten.
Diese Veröffentlichung enthält Beispiele für Daten und Berichte des alltäglichen Geschäftsablaufes. Sie sollen nur die Funktionen des Lizenzprogrammes illustrieren; sie können Namen von Personen, Firmen, Marken oder Produkten enthalten. Alle diese Namen sind frei erfunden; Ähnlichkeiten mit tatsächlichen Namen und Adressen sind rein zufällig.
Die oben genannten Erklärungen bezüglich der Produktstrategien und Absichtserklärungen von IBM stellen die gegenwärtige Absicht der IBM dar, unterliegen Änderungen oder können zurückgenommen werden, und repräsentieren nur die Ziele der IBM.
Falls Informationen zu Programmierschnittstellen zur Verfügung gestellt wurden, sollen Ihnen diese bei der Erstellung von Anwendungssoftware mit diesem Programm behilflich sein.
Mit allgemeinen Programmierschnittstellen können Sie Anwendungssoftware schreiben, die auf die Services der Tools dieses Programms zurückgreift.
Diese Informationen können jedoch auch Diagnose-, Änderungs- und Optimierungsinformationen zur Verfügung stellen. Diagnose-, Änderungs- und Optimierungsinformationen sind enthalten, damit Sie Fehler in Ihrer Anwendungssoftware beheben können.
Warnung: Verwenden Sie diese Diagnose-, Änderungs- und Optimierungsinformationen nicht als Programmierschnittstelle, da sie geändert werden können.
Folgende Namen sind in gewissen Ländern (oder Regionen) Marken oder eingetragene Marken der International Business Machines Corporation:
IBM
Das IBM Logo
AIX
CrossWorlds
DB2
DB2 Universal Database
Domino
Lotus
Lotus Notes
MQIntegrator
MQSeries
Tivoli
WebSphere
Microsoft, Windows, Windows NT und das Windows-Logo sind in gewissen Ländern Marken der Microsoft Corporation.
MMX, Pentium und ProShare sind in gewissen Ländern Marken oder eingetragene Marken der Intel Corporation.
Java und alle Java-basierten Marken sind in gewissen Ländern Marken von Sun Microsystems, Inc.
Andere Namen von Unternehmen, Produkten oder Services können Marken oder Servicemarken anderer Unternehmen sein.
IBM WebSphere Product Center enthält bestimmte "Ausgeschlossene Komponenten"
(gemäß der Definition in der entsprechenden Lizenzinformation), für die zusätzlich die folgenden
Bedingungen gelten. Diese Software wird auf Basis der Internationalen Nutzungsbedingungen für Programmpakete (IPLA)
gemäß den entsprechenden Bedingungen zu "Ausgeschlossenen Komponenten" lizenziert. IBM ist verpflichtet,
in Verbindung mit dieser Software die folgenden Hinweise zu geben:
i.) IBM WebSphere Product Center beinhaltet die folgende Software, die von IBM von der Apache Software Foundation
auf Basis der Bedingungen der Apache 2.0-Lizenz lizenziert wurde:
- Apache Regular Expression v1.2
- Apache Axis v1.1
- Apache XML4J v3.0.1
- Apache Log4j v1.1.1
- Apache Jakarta Commons DBCP Package v1.1
- Apache Jakarta Commons Pool Package v1.1
- Apache Jakarta Commons Collections Package v3.0
Apache-Lizenz
Version 2.0, Januar 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use,
reproduction, and distribution as defined by Sections 1 through 9 of this
document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other
entities that control, are controlled by, or are under common control with that
entity. For the purposes of this definition, "control" means (i)
the power, direct or indirect, to cause the direction or management of such
entity, whether by contract or otherwise, or (ii) ownership of fifty percent
(50%) or more of the outstanding shares, or (iii) beneficial ownership of such
entity.
"You" (or "Your") shall mean an individual or Legal
Entity exercising permissions granted by this License.
"Source" form shall mean the preferred form for making
modifications, including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation, and conversions to
other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a copyright
notice that is included in or attached to the work (an example is provided in
the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the editorial
revisions, annotations, elaborations, or other modifications represent, as a
whole, an original work of authorship. For the purposes of this License,
Derivative Works shall not include works that remain separable from, or merely
link (or bind by name) to the interfaces of, the Work and Derivative Works
thereof.
"Contribution" shall mean any work of authorship, including the
original version of the Work and any modifications or additions to that Work or
Derivative Works thereof, that is intentionally submitted to Licensor for
inclusion in the Work by the copyright owner or by an individual or Legal Entity
authorized to submit on behalf of the copyright owner. For the purposes of this
definition, "submitted" means any form of electronic, verbal, or
written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems, and
issue tracking systems that are managed by, or on behalf of, the Licensor for
the purpose of discussing and improving the Work, but excluding communication
that is conspicuously marked or otherwise designated in writing by the copyright
owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal
Entity on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of this
License, each Contributor hereby grants to You a perpetual, worldwide,
non-exclusive, no-charge, royalty-free, irrevocable copyright license to
reproduce, prepare Derivative Works of, publicly display, publicly perform,
sublicense, and distribute the Work and such Derivative Works in Source or
Object form.
3. Grant of Patent License. Subject to the terms and conditions of this
License, each Contributor hereby grants to You a perpetual, worldwide,
non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this
section) patent license to make, have made, use, offer to sell, sell, import,
and otherwise transfer the Work, where such license applies only to those patent
claims licensable by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s) with the Work
to which such Contribution(s) was submitted. If You institute patent litigation
against any entity (including a cross-claim or counterclaim in a lawsuit)
alleging that the Work or a Contribution incorporated within the Work
constitutes direct or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate as of the date
such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the Work or
Derivative Works thereof in any medium, with or without modifications, and in
Source or Object form, provided that You meet the following conditions:
(a) You must give any other recipients of the Work or Derivative Works a copy of
this License; and
(b) You must cause any modified files to carry prominent notices stating that
You changed the files; and
(d) You must retain, in the Source form of any Derivative Works that You
distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work, excluding those notices
that do not pertain to any part of the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained within such NOTICE
file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one of the following
places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or documentation, if
provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and wherever such
third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and do not modify the
License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside or as an addendum
to the NOTICE text from the Work, provided that such additional attribution
notices cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may
provide additional or different license terms and conditions for use,
reproduction, or distribution of Your modifications, or for any such Derivative
Works as a whole, provided Your use, reproduction, and distribution of the Work
otherwise complies with the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise, any
Contribution intentionally submitted for inclusion in the Work by You to the
Licensor shall be under the terms and conditions of this License, without any
additional terms or conditions. Notwithstanding the above, nothing herein shall
supersede or modify the terms of any separate license agreement you may have
executed with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade names,
trademarks, service marks, or product names of the Licensor, except as required
for reasonable and customary use in describing the origin of the Work and
reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in
writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including,
without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT,
MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any risks
associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory, whether in
tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly negligent
acts) or agreed to in writing, shall any Contributor be liable to You for
damages, including any direct, indirect, special, incidental, or consequential
damages of any character arising as a result of this License or out of the use
or inability to use the Work (including but not limited to damages for loss of
goodwill, work stoppage, computer failure or malfunction, or any and all other
commercial damages or losses), even if such Contributor has been advised of the
possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing the Work
or Derivative Works thereof, You may choose to offer, and charge a fee for,
acceptance of support, warranty, indemnity, or other liability obligations
and/or rights consistent with this License. However, in accepting such
obligations, You may act only on Your own behalf and on Your sole
responsibility, not on behalf of any other Contributor, and only if You agree to
indemnify, defend, and hold each Contributor harmless for any liability incurred
by, or claims asserted against, such Contributor by reason of your accepting any
such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include the brackets!)
The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a file or class name
and description of purpose be included on the same "printed page" as
the copyright notice for easier identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License"); you
may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
for the specific language governing permissions and limitations under the
License.
ii.) IBM WebSphere Product Center beinhaltet die folgende Software, die von IBM von Scott Hudson, Frank Flannery
und C. Scott Ananian auf Basis der folgenden Bedingungen lizenziert wurde:
- Cup Parser Generator v0.10k
CUP Parser Generator Copyright Notice, License, and Disclaimer
Copyright 1996-1999 by Scott Hudson, Frank Flannery, C. Scott Ananian
Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the names of the authors or their employers not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. The authors and their employers disclaim all warranties with regard to this
software, including all implied warranties of merchantability and fitness. In no
event shall the authors or their employers be liable for any special, indirect
or consequential damages or any damages whatsoever resulting from loss of use,
data or profits, whether in an action of contract, negligence or other tortious
action, arising out of or in connection with the use or performance of this
software.
iii.) IBM WebSphere Product Center beinhaltet die folgende Software, die von IBM von
Elliot Joel Berk und C. Scott Ananian auf Basis der folgenden Bedingungen lizenziert wurde:
- JLex v1.2.6
JLEX COPYRIGHT NOTICE, LICENSE AND DISCLAIMER.
Copyright 1996-2003 by Elliot Joel Berk and C. Scott Ananian
Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the name of the authors or their employers not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. The authors and their employers disclaim all warranties with regard to this
software, including all implied warranties of merchantability and fitness. In no
event shall the authors or their employers be liable for any special, indirect
or consequential damages or any damages whatsoever resulting from loss of use,
data or profits, whether in an action of contract, negligence or other tortious
action, arising out of or in connection with the use or performance of this
software. Java is a trademark of Sun Microsystems, Inc. References to the Java
programming language in relation to JLex are not meant to imply that Sun
endorses this product.
iv.) IBM WebSphere Product Center beinhaltet die folgende Software, die von IBM von der
International Business Machines Corporation und anderen auf Basis der folgenden Bedingungen lizenziert wurde:
- ICU4J v2.8
ICU-Lizenz - ICU 1.8.1 und höher
COPYRIGHT UND GENEHMIGUNGSNACHWEIS
Copyright (c) 1995-2003 International Business Machines Corporation und andere.
Alle Rechte vorbehalten.
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen
Dokumentationsdateien (die "Software") erhält, die kostenlose Genehmigung erteilt,
uneingeschränkt mit der Software zu handeln. Dazu gehört ohne Einschränkung
das Recht, Kopien der Software zu nutzen, zu kopieren, zu ändern, zusammenzufügen, zu veröffentlichen,
weiterzugeben und/oder zu verkaufen und den Personen, denen
die Software zur Verfügung gestellt wird, das gleiche Recht einzuräumen,
vorausgesetzt, dass der obige Copyrightvermerk (bzw. die Copyrightvermerke) und dieser
Berechtigungshinweis auf allen Kopien der Software sowie der zugehörigen Dokumentation
erscheinen.
DIE SOFTWARE WIRD OHNE WARTUNG (AUF "AS IS"-BASIS) UND OHNE GEWÄHRLEISTUNG
(VERÖFFENTLICHT ODER STILLSCHWEIGEND) ZUR VERFÜGUNG GESTELLT, EINSCHLIESSLICH, ABER NICHT BEGRENZT
AUF DIE IMPLIZIERTE GEWÄHRLEISTUNG FÜR DIE HANDELSÜBLICHKEIT, DIE VERWENDUNGSFÄHIGKEIT FÜR EINEN
BESTIMMTEN ZWECK UND DIE FREIHEIT DER RECHTE DRITTER. UNTER KEINEN UMSTÄNDEN IST DER
ODER SIND DIE HIER AUFGEFÜHRTEN COPYRIGHTINHABER HAFTBAR FÜR SPEZIELLE,
UNMITTELBARE, MITTELBARE ODER FOLGESCHÄDEN ODER SCHÄDEN DURCH
NUTZUNGSAUSFALL, DATENVERLUST, GEWINNEINBUSSEN. DIES GILT UNABHÄNGIG VON DER HAFTUNGSGRUNDLAGE,
SEI SIE VERSCHULDENSABHÄNGIG ODER VERSCHULDENSUNABHÄNGIG, SOFERN SIE IN
IRGENDEINER FORM AUF DIE NUTZUNG DER SOFTWARE ZURÜCKZUFÜHREN WÄRE.
Mit Ausnahme der Verwendung in diesem Hinweis darf der Name eines Copyrightinhabers
ohne seine vorherige schriftliche Genehmigung nicht zu Werbezwecken,
anderen Arten der Verkaufsförderung oder zur Nutzung
in dieser Software verwendet werden.
-----------------------------------------------------------------------------
Alle an dieser Stelle genannten Marken und eingetragenen Marken sind das Eigentum der jeweiligen
Rechtsinhaber.