WebSphere Product Center : Intégration d'une solution de portail

Version 5.2

 

 

 

 

 

 

 

 

 

 

 


Remarque : avant d'utiliser ces informations et le produit concerné, lisez les informations dans la rubrique "Remarques" à la fin du présent document.

 

21 mars 2005

Cette édition du document s'applique à WebSphere Product Center, version 5.2 (5724-I68) et à toutes les versions et modifications ultérieures, jusqu'à mention contraire dans les nouvelles éditions.

Copyright International Business Machines Corporations 2005. All rights reserved.
US Government Users Restricted Rights-Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

Table des matières

Chapitre 1 - Introduction
Configuration requise
Limitations

Chapitre 2 - Architecture de la structure d'intégration de portail
Structure d'intégration pour Product Center
Fonctionnalité de services Web pour WebSphere Portal Server
Données
Données de demande et de réponse Product Center
Spécification d'article
Composants
Product Center Mediator
Interface des services Web
Convertisseurs de données
Types de données
Bean de données
Composants de l'interface utilisateur
Services d'échange de données
Services
Prise en charge d'internationalisation/localisation
Prise en charge de la sécurité
Ressources

Chapitre 3 - Installation et configuration de Supplier Portal

Configuration de la sécurité de Portal Server avec LDAP
Configuration de la base de données pour LDAP
Configuration de la base de données pour LDAP
Ajout de suffixe
Création d'utilisateurs de portail
Configuration de portail
Création d'administrateurs de portail
Personnalisation du service de connexion pour Supplier Portal
Configuration de Product Center
Conclusion
Ressources

Chapitre 4 - Création d'un portlet Product Center

Exemple de portlet - WorkWithItem
Messages XML
Objet données illustrant l'article
Générateur et analyseur XML
Ajout de méthodes à Product Center Mediator
Création d'un portlet
Désignation du service Web de Product Center Server

Chapitre 5 - Déploiement et personnalisation de l'interface utilisateur de Supplier Portal

Déploiement de Supplier Portal
Personnalisation de l'interface utilisateur de Supplier Portal
Création d'un menu de navigation
Installation de thèmes et d'habillages
Agencement de portlets dans les onglets
Octroi du droit d'accès aux onglets
Mise à jour des fichiers de configuration
Fichiers de configuration
Conclusion

Chapitre 6 - Structure de l'interface utilisateur
Structure de portlets
Stock de portlets

Chapitre 7 - Généralités sur les formats de messages
Généralités sur les scripts et les services Web concernés
Différents formats de messages

Chapitre 1 - Introduction

L'intégration de portail de WebSphere Product Center offre une base aux clients pour construire des portails de communication avec leurs partenaires d'échanges. Les initiatives de portails peuvent fournir l'accès à des données essentielles à des milliers d'utilisateurs, d'où une implémentation de WebSphere Product Center plus optimale.  

Exemples de processus métier pris en charge par la fonctionnalité de portail : création ou modification d'un article, modification d'informations synchronisées sur un article, téléchargements de masse d'articles, sélections spécifiques à des utilisateurs, possibilité d'indiquer des données de propositions, de termes et de conditions.  

WebSphere Portal Server peut être adapté pour intégrer WebSphere Product Center. L'intégration de Portal Server permet d'effectuer les opérations suivantes depuis Portal Server :

Configuration requise

Ce document suppose que les composants suivants sont utilisés dans l'environnement WebSphere Product Center :

Limitations

WebSphere Product Center ne fournit actuellement pas de portlets de gestion d'informations produit. Toutefois, WebSphere Product Center contient des API et des métadonnées nécessaires à la prise en charge du développement de l'interface utilisateur de Supplier Portal et de portlets.

Chapitre 2 - Architecture de la structure d'intégration de portail

Ce chapitre explique comment créer des portlets pour IBM WebSphere Product Center (ci-après nommé Product Center). Il décrit l'architecture nécessaire pour fournir une interface utilisateur à Product Center. 

Structure d'intégration pour Product Center

La structure d'intégration offre la prise en charge de portlets pour travailler avec Product Center et permettre ainsi à l'utilisateur d'afficher et de manipuler des informations de ce produit. L'intégration entre la structure de l'interface utilisateur et Product Center repose sur la prise en charge de services Web dans Product Center. 

L'architecture se compose de portlets qui communiquent avec Product Center via des interfaces de services Web fournies par Product Center (voir figure 1). Product Center fournit une couche de scripts pouvant servir de couche API. Ces scripts peuvent ensuite être exposés en tant que services Web. Un service Web est créé pour chaque fonction métier devant être exposée dans Product Center. Un portlet correspondant est généré pour interagir avec ce service Web. Ce dernier exécute un ou plusieurs scripts dans Product Center et fonctionne avec d'autres services pour fournir la fonction métier souhaitée. Sachant que le service Web réalise la chorégraphie requise entre des scripts et d'autres services Web, il accomplit ce qui suit :

 

Figure 1

Pour l'intégration de portail. Les documents XML constituent le mode de transfert de données ; en fonction du mode de message de demande reçu, la réponse sera envoyée immédiatement ou plus tard. La figure 2 ci-dessous illustre l'architecture d'ensemble. 

Figure 2

La communication entre Product Center et WebSphere Portal Server correspond toujours à une transformation de documents XML de type Document/Literal. La gestion de transactions ASYNC / SYNC dépend de la structure de services Web de Product Center et ne doit pas être déterminée par le niveau de script d'implémentation. Grâce à cette fonction ; toute opération peut être effectuée ASYNC / SYNC à n'importe quel moment sans modifier de scripts.

Données

Le format d'échange de données est XML et le modèle de données repose sur une enveloppe ou conteneur définissant les informations requises pour traiter une transaction. L'enveloppe détermine ce qui suit :

Données de demande et de réponse Product Center

Le tableau 1 comporte un exemple de structure XML de demande :

Tableau 1 : XML de demande

<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>

L'exemple de code XML de réponse correspondant figure dans le tableau 2.

Tableau 2 : XML de réponse

<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>

Spécification d'article

La spécification d'article correspond à la définition spécifique à Product Center d'un article et de ses collections d'attributs. Cette définition peut être capturée sous la forme d'un document XML. Elle sert à référencer les divers types de données utilisés pour définir un article et ses attributs. Associée à la définition de vue, la spécification d'article permet d'afficher des écrans de portlets, tant en mode de rendu automatique que si un développeur doit coder manuellement les JSP.

Composants

La structure comprend un ensemble de composants permettant de réaliser des interactions avec Product Center, ainsi que la transformation de données.

Product Center Mediator

Mediator permet d'interagir avec les portlets et les services Web de Product Center. Il sert de point de contact pour ces couches et exécute la transformation requise des données pour utiliser ces couches. Mediator est disponible comme interface pour les portlets.  

Interface des services Web

L'interfaçage des services Web a lieu grâce à une structure d'appel de services Web AXIS. La couche de services Web interagit avec le client AXIS pour lancer l'appel de service Web correspondant dans Product Center. L'appel de service Web est de type Document/Literal et SOAP est employé comme protocole de communication ; l'opération se déroule via un transfert HTTP. La couche actuelle de service Web permet d'échanger des données XML, ainsi que de télécharger des pièces jointes. L'implémentation SwA (SOAP-with-Attachments) dans AXIS est utilisée à cette fin. Voir la section "Ressources" de ce chapitre pour en savoir plus sur la structure AXIS.

Un fichier de configuration contient la liste des services Web devant être appelés pour une action depuis l'interface utilisateur. Cette mise en correspondance d'actions avec des services Web est présentée comme suit :

Tableau 3 : Mises en correspondance d'actions avec des services Web

<soap-url action="<nom action>">http://<nom serveur>:<port serveur>/services/<nom service></soap-url>

<soap-url action="ADD">http://ibm.com:9557/webservices/addAction</soap-url>

Convertisseurs de données

La couche Mediator utilise un ensemble d'analyseurs et de générateurs pour analyser le contenu XML dans Product Center et convertir le contenu généré pour utiliser ce produit. Ces convertisseurs transforment des données au format XML en objet Java prédéfini, et inversement. La conversion en objet Java requiert la prise en charge d'un ensemble déterminé de types de données et d'objets données. Voir les sections qui suivent à ce sujet.

Types de données

Product Center établit un ensemble d'attributs pour sa définition d'article. Ces attributs sont de divers types, tels que Chaîne, Nombre ou Attributs de groupe. Ces types d'attributs et leur comportement du côté de la structure de l'interface utilisateur sont capturés dans un ensemble de classes et de types d'attributs.  

La liste complète d'attributs pris en charge apparaît à la figure 3. Les attributs offrent une base à laquelle peut être associée la fonctionnalité de validation, de formatage et d'affichage.

Bean de données

Le bean de données offre la prise en charge du contenu affiché dans le portlet et permet de contrôler le flux de l'interface utilisateur en enregistrant le mode ou l'état actuel du portlet.

Composants de l'interface utilisateur

Les composants de l'interface utilisateur sont principalement concernés par l'affichage de l'interface, la gestion des interactions utilisateur et l'exécution d'appels spécifiques dans la couche Mediator pour extraire ou stocker des données de ou vers Product Center. Les principaux composants de l'interface utilisateur sont les portlets ; les bibliothèques de balises permettent d'afficher l'interface utilisateur pour les portlets.

Figure 3

Service d'échange de données

Les portlets déployés dans Portal Server ne disposent pas d'une méthode élégante pour échanger des informations, notamment lorsqu'ils figurent dans plusieurs pages. La communication entre portlets fonctionne uniquement pour ceux se trouvant dans la même page. Le service d'échange de données offre un point de contact unique pour tous les portlets, a la possibilité de conserver des informations et est utilisé par les portlets pour échanger des données. Ce service est actuellement unique et est appelé en tant que simple appel de méthode Java. Il sera étendu pour traiter un ensemble ou type plus important d'échanges d'objets et déployé comme application distincte afin d'améliorer les réglages de performances.

Services

La structure de l'interface utilisateur repose sur l'infrastructure de base fournie par Portal Server pour offrir une prise en charge de l'internationalisation et la sécurité.  

Prise en charge de l'internationalisation/localisation

Portal Server fournit un ensemble de balises personnalisées et des regroupements de ressources pour localiser le contenu affiché par la structure de portail (thèmes et habillages). Le contenu dans les portlets est localisé à l'aide d'un ensemble de regroupements de ressources apportant du texte pour les libellés, les boutons et les messages affichés. Le contenu choisi dans Product Center est localisé en fonction du support d'environnement local disponible au niveau de cette application.  

Prise en charge de la sécurité

La structure de l'interface utilisateur reposant sur un portail et Product Center utilisent LDAP pour gérer le registre d'utilisateurs. Product Center et la structure de l'interface utilisateur possèdent un ensemble distinct de schémas utilisateur afin de conserver les informations utilisateur. La principale raison est que les utilisateurs enregistrés au niveau du portail l'emploient pour des interactions de fournisseurs. En revanche, les utilisateurs enregistrés avec Product Center sont surtout des administrateurs ou responsables du système. L'étape suivante en matière de registre d'utilisateurs consiste à intégrer les schémas employés par la structure et par Product Center. Elle permet d'obtenir un registre d'utilisateurs courant, ainsi que la définition des utilisateurs et de leurs rôles.  

Authentification des utilisateurs

Dans le cas du scénario de fournisseur, les utilisateurs standard et les fournisseurs se servent du portail pour s'enregistrer et se connecter. La gestion des utilisateurs, et donc de leur authentification, est effectuée au niveau LDAP du portail. Les informations essentielles que le portail partage avec la couche Product Center sous-jacente sont relatives à l'identification des fournisseurs. Ces informations servent à filtrer les données générées et employées par l'utilisateur.  

Autorisation d'utilisateurs

L'autorisation de données, en fonction de l'utilisateur connecté, est avant tout une fonction de Product Center. Dans l'état actuel du système, les autorisations concernent surtout l'identification des fournisseurs en fonction du filtrage. Le portail indique un degré de droit d'accès : l'utilisateur est autorisé à afficher et à réaliser des actions selon son type, à savoir standard ou administrateur.

Ressources

Cet article décrit l'architecture de la structure d'intégration de portail pour Product Center.

Chapitre 3 - Installation et configuration de Supplier Portal

Les sections qui suivent présentent la configuration de l'environnement à effectuer pour activer le déploiement de Supplier Portal au sein d'une organisation. 

Ce chapitre suppose que les logiciels ci-après sont installés dans l'environnement de WebSphere Product Center :

Le choix du système d'exploitation détermine les logiciels à installer. La plateforme de base sur laquelle Supplier Portal sera exécuté est Portal Server version 5.0.2.2. 

L'installation de l'intégration de portail pour WebSphere Product Center implique deux fichiers compressés. L'un est déployé dans Portal, l'autre sur le serveur de Product Center pour l'intégration de portail.  

Configuration de la sécurité de Portal Server avec LDAP

Dans le cadre de la première étape consistant à configurer Supplier Portal, configurez la sécurité de Portal Server pour LDAP. Cette étape suppose que les logiciels suivants sont installés : IBM DB2, Directory Server et l'outil d'administration de Directory Server.

Configuration de la base de données pour LDAP

Cette étape configure l'instance DB2 pour LDAP.

1. Ouvrez l'outil de configuration de Directory Server en sélectionnant Démarrer -> Programmes -> IBM Tivoli Directory Server -> Configurer l'annuaire.

2. Sélectionnez Nom distinctif/mot de passe administrateur dans la sous-fenêtre de gauche de l'outil de configuration.

3. Entrez les valeurs suivantes :

4. Cliquez sur OK.

5. Sélectionnez Configurer la base de données dans la sous-fenêtre de gauche de l'outil de configuration.

6. Sélectionnez Créer une base de données et cliquez sur Suivant.

7. Entrez l'ID utilisateur et le mot de passe de l'administrateur de DB2 (généralement db2admin et password). Cliquez sur Suivant.

8. Entrez le nom de l'instance DB2 comme nom de base de données dans l'écran suivant. Cliquez sur Fin.

Ajout de suffixe

Cette étape consiste à ajouter un suffixe pour la hiérarchie LDAP.

1. Ouvrez l'outil de configuration de Directory Server en sélectionnant Démarrer -> Programmes -> IBM Tivoli Directory Server -> Configurer l'annuaire.

2. Sélectionnez Gérer les suffixes dans la sous-fenêtre de gauche de l'outil de configuration.

3. Entrez la chaîne "dc=wps,dc=com" dans la zone Suffix DN.

4. Cliquez sur Ajouter. Cliquez ensuite sur OK.

Création d'utilisateurs de portail

Cette étape consiste à établir la liste des utilisateurs autorisés à accéder au portail.  

1. Ouvrez l'outil de configuration de Directory Server en sélectionnant Démarrer -> Programmes -> IBM Tivoli Directory Server -> Configurer l'annuaire.

2. Sélectionnez Importer des données LDIF dans la sous-fenêtre de gauche de l'outil de configuration. Un écran s'ouvre avec les options de parcours du fichier LDIF et d'importation des données utilisateur.

3. Sélectionnez le fichier LDIF requis pour Supplier Portal et réalisez une importation. Le statut de l'importation est indiqué dans la zone de messages de la tâche.

Configuration de portail

Cette étape consiste à configurer le portail en matière de sécurité.  

1. Vérifiez que Directory Server est installé et que toute configuration requise par WebSphere Portal a été effectuée.

2. Recherchez le fichier <racine_PortalServer>/config/wpconfig.properties et créez une copie de sauvegarde avant d'en modifier les valeurs.

3. Utilisez un éditeur de texte pour ouvrir le fichier <racine_wp>/config/wpconfig.properties.

4. Remplacez toutes les entrées terminant par Suffix DN "dc=yourco,dc=com" with "dc=wps,dc=com".

5. Modifiez les propriétés suivantes dans la section "Configuration des propriétés LDAP" appropriée à votre environnement.

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(adresse IP de la machine hôte LDAP)
LDAPPort=389
LDAPAdminUId=cn=root
LDAPAdminPwd=password
LDAPServerType=IBM_DIRECTORY_SERVER
LDAPBindID=uid=wpsbind,cn=users,dc=wps,dc=com
LDAPBindPassword=wpsbind
LDAPSuffix=dc=wps,dc=com

6. Enregistrez le fichier.

7. Ouvrez une fenêtre d'invite de commande et allez au répertoire <racine_AppServer>/bin.

8. Entrez les commandes suivantes :

startServer server1
stopServer WebSphere_Portal

9. Passez au répertoire <racine_PortalServer>/config.

10. Entrez la commande qui suit pour exécuter la tâche de configuration appropriée :

WPSconfig.bat validate-ldap

Remarque : si la tâche de configuration échoue, validez les valeurs dans le fichier wpconfig.properties.

11. Entrez la commande qui suit pour exécuter la tâche de configuration appropriée et activer la sécurité LDAP :

WPSconfig.bat enable-security-ldap

12. Passez au répertoire <racine_AppServer>/bin et entrez les commandes suivantes :

(a) stopServer server1
(b) startServer server1
(c) startServer WebSphere_Portal

Si vous travaillez avec la sécurité activée dans WebSphere Application Server, vous devez indiquer un ID utilisateur et un mot de passe pour l'authentification de sécurité au moment d'entrer les commandes :

(d) stopServer server1 -user idutilisateur_admin_was -password motdepasse_admin_was
(e) startServer server1
(f) startServer WebSphere_Portal

Remarque : quelques étapes dans Infocenter dépendent du type d'installation et des environnements d'exploitation. Elles peuvent être ignorées en fonction de la configuration requise.

Création d'administrateurs de portail

Cette étape consiste à créer des utilisateurs de portail dotés de droits administrateur.

1. Connectez-vous à l'outil d'administration Web de Directory Server.

2. Sélectionnez Gérer les schémas > Ajouter un attribut, puis ajoutez les attributs suivants :

WPCRole{Syntaxe - Syntaxe Chaîne Répertoire, Longueur d'attribut - 50}
userStatus{Syntaxe - Booléen}
userGLN{Syntaxe - Syntaxe Chaîne Répertoire, Longueur d'attribut - 50}
company{Syntaxe - Syntaxe Chaîne Répertoire, Longueur d'attribut - 50}

3. Sélectionnez Gérer les schémas > Ajouter une classe d'objets, puis ajoutez ce qui suit :

Classe d'objets : wpcUserClass

Attributs requis - abstract, company, UserStatus, WPCRole
Attributs facultatifs - userGLN

4. Enregistrez tous les changements.

5. Importez le fichier portalAdmin.ldif depuis l'outil de configuration. Un fichier exemple LDIF est associé pour référence.  

6. Connectez-vous en tant que admin/admin/ibm pour le portail.

Personnalisation du service de connexion pour Supplier Portal

Le portail fournit une interface pour Product Center ; par conséquent, un utilisateur doit indiquer un ID, un mot de passe et des informations sur l'entreprise au moment de sa connexion au portail. La page standard de connexion fournie par Portal Server doit donc être modifiée.

1. Avant de personnaliser la page de connexion, un utilisateur doté de droits administrateur doit être configuré pour Supplier Portal. 

(a) Connectez-vous avec l'ID utilisateur et le mot de passe administrateur.
(b) Cliquez sur le lien Administration dans la barre supérieure, puis sélectionnez Accès> Utilisateurs et groupes dans la sous-fenêtre de gauche.
(c) Choisissez wpsadmins dans les groupes affichés.
(d) Ajoutez l'utilisateur "admin" créé via portalAdmin.ldif et enregistrez les changements.

L'utilisateur "admin" est alors doté des privilèges d'administration pour Supplier Portal.

2. Lorsqu'un utilisateur de portail se connecte ou se déconnecte du portail, WP exécute une commande correspondante. Les noms de classes de ces commandes sont indiqués dans le fichier de propriétés racine_PortalServer>/shared/app/config/services/ConfigService.properties avec les paramètres par défaut : command.login = LoginUserAuth et command.logout = LogoutUserAuth

Le chemin de recherche du package pour ces commandes est indiqué sous forme de liste dont les entrées sont séparées par des virgules dans le fichier de propriétés <racine_PortalServer>/shared/app/config/services/LoaderService.properties avec les paramètres par défaut :

command.path = com.ibm.wps.engine.commands

3. Placez le fichier customlogin.jar requis pour les utilitaires liés à LDAP dans le dossier <racine_PortalServer>/shared/app.

4. Placez le fichier ibmjndi.jar requis pour les utilitaires liés à LDAP dans le dossier <racine_PortalServer>/shared/app.

5. Assurez-vous ensuite que la nouvelle classe peut être détectée dans le chemin de classes du portail et ajoutez le package de commandes comme première entrée de command.path dans LoaderService.properties.

Par exemple : command.path=com.ibm.ccd.ui.services.user, com.ibm.wps.engine.commands

6. Modifiez "Login.jsp" dans le dossier <racine_AppServer>/installedApps/<nomhôte>/wps.ear/wps.war/screens/html en ajoutant les zones requises. Par exemple, le fragment de code suivant ajoute une zone "Company" à l'écran de connexion et met en commentaire le fragment de code du bouton Annuler qui n'est pas obligatoire.

<tr>
<td>&nbsp;&nbsp;&nbsp;</td>
<td align="<%= bidiAlignLeft %>" class="wpsEditText">
<label for="company">
<wps:text key="company" bundle="nls.field"/>
</label>
</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;</td>
<td> <input dir="ltr" class="wpsFieldText" size="16" value="" id="company" name="company" type="text"></td>
</tr>

7. Ajoutez les entrées liées au support plurilingue de Login.jsp dans le fichier de propriétés situé dans <racine_PortalServer>/shared/app/nls/field.properties.

Par exemple : company = Company

8. Ajoutez les messages d'erreur relatifs à Login.jsp dans le fichier de propriétés situé dans <racine_PortalServer>/shared/app/nls/problem.properties

9. Ajoutez les entrées suivantes pour Supplier Portal :

(a) login.invalid.userStatus = Cet utilisateur est désactivé, contactez votre administrateur système.
(b) login.invalid.company = Cet utilisateur n'appartient pas à cette entreprise, vérifiez son nom.
(c) ldap.not.configured = Le service d'authentification LDAP est défaillant. Contactez votre administrateur système.

Configuration de Product Center

Procédez comme suit pour configurer correctement Product Center en vue de l'intégration à Portal Server.

1. Définissez les valeurs soap_company, soap_user et trigo_web_url dans common.properties.

a) soap_company correspond au nom de l'entreprise Product Center en cours.

b) soap_user est toujours Admin.

c) trigo_web_url sera http://<adresseip>:<port>

2. Montez le répertoire public_html.

3. Augmentez la fréquence pour le démon mountmgr dans common.properties à 1000.

4. Modifiez les détails FTP dans la table de consultation Portal_Config. Des exemples de valeurs sont fournis.

5. ftpDir (dans Portal_Config) doit se trouver sous le répertoire racine sur le serveur FTP.

6. Accordez un accès en écriture au fichier /public_html/WEB-INF/server-config.wsdd.

7. Importez d'abord PORTAL_LKP.ZIP.

8. Importez ensuite PORTAL_NON_LKP.ZIP.

9. Assurez-vous enfin de redémarrer le serveur.

10. En cas de logique Web, veillez à enregistrer le service Web après avoir remplacé le bloc qui suit :

<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>

par

<xs:element name="wpcSearchElementOperator">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="="/>
<xs:enumeration value="&gt;="/>
<xs:enumeration value="&lt;="/>
<xs:enumeration value="&gt;"/>
   <xs:enumeration value="&lt;"/>
       <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>

Conclusion

En fin de chapitre, les tâches suivantes doivent avoir été réalisées :

Ressources

 

Chapitre 4 - Création d'un portlet WebSphere Product Center

Ce chapitre décrit la procédure à suivre pour créer un portlet pour Product Center. Un exemple nommé WorkWithItem servira ici d'exemple.

Les explications dans ces pages supposent la maîtrise du développement et du test de portlets dans IBM WebSphere Portal Server, ainsi qu'une pratique des fonctions d'IBM WebSphere Studio Application Developer. Ce chapitre ne décrit pas en détails la création du script Product Center devant traiter la demande du portlet du côté de Product Center. Les informations sur la rédaction de ces scripts et leur hébergement comme services Web dépassent la portée du présent chapitre.

L'infrastructure et le portlet qui l'utilise sont présentés dans les sections qui suivent. L'infrastructure correspond au format XML pour l'échange de données et à un objet données représentant ce format. Des classes doivent également être converties de XML en Java et inversement. Un ensemble de méthodes doivent être associées à Product Center Mediator en vue de l'utilisation du portlet.

Exemple de portlet - WorkWithItem

Dans Product Center, les articles figurent dans un catalogue. Ils sont décrits à l'aide d'une spécification, laquelle correspond à une collection d'attributs. Les articles sont ensuite regroupés dans des catégories et des sous-catégories. Cette arborescence est également qualifiée de hiérarchie.  

Le portlet WorkWithItem permet à un utilisateur de travailler avec un article et est requis pour réaliser les tâches qui suivent :

(a) Afficher un article
(b) Créer un article
(c) Modifier un article
(d) Cloner un article
(e) Supprimer un article

Messages XML

La fonction de base du portlet WorkwithItem consiste à afficher, créer, modifier, cloner et supprimer un article dans le catalogue. Pour ce faire, le portlet doit échanger des données avec Product Center au format XML via un service Web. En d'autres termes, pour chaque action réalisée dans un portlet, une demande au format XML est envoyée à Product Center et une réponse dans le même format est retournée après traitement.

Par exemple, pour extraire des détails sur un article, le code XML de demande est le suivant : 

Tableau 1 : XML de demande Product Center

<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>

La commande d'action récupère les détails sur l'article et le mode d'appel est SYNC/ASYNC. Ces modes déterminent si l'API du service Web appelée dans Product Center fonctionnera en mode synchrone ou asynchrone. Pour cette demande précise, l'ID de l'article, le nom du catalogue et la catégorie parent sont des zones obligatoires afin d'obtenir des détails sur l'article.  

Le code XML de réponse pour les détails sur un article correspond à une collection d'attributs, comme suit :

Tableau 2 : XML de réponse Product Center 

<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>

Objet données illustrant l'article

En fonction de la structure du code XML de demande et de réponse, un objet données est défini pour représenter les données de Product Center Mediator. Cette conversion d'un objet données en chaîne XML et inversement a lieu dans la couche de Product Center Mediator.

Par exemple, dans le portlet WorkWithItem, l'article Product Center figure dans une classe CatalogItem possédant une collection d'attributs. 

Générateur et analyseur XML

Le générateur et l'analyseur XML permettent de convertir la représentation Java de l'article Product Center en représentation XML, et inversement. CatalogItemGenerator génère un code XML de demande Product Center. La génération XML est spécifique à une commande, laquelle dans ce cas extrait les détails sur l'article. Ce code XML comporte les valeurs d'entrée fournies par l'utilisateur et capturées depuis l'objet de demande du portlet.  

Le fragment de code ci-après est juste un exemple de code XML généré pour l'opération d'extraction de détails sur l'article.

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 analyse le contenu XML de réponse de Product dans l'objet données des articles de catalogue.

public class CatalogItemParser {
        public static ICatalogItem prepareItem(
                Element specElement, 
                Element tradeItemElement) {
                        // préparer la spécification
                        ICatalogItem item = getCatalogSpecItem(specElement);
                        // remplir l'article avec des valeurs d'attributs
                        prepareItem(item, tradeItemElement);
                        return item; 
                }
        }
}

Ajout de méthodes à Product Center Mediator

Les portlets doivent uniquement interagir avec la couche de Mediator pour n'importe quel type d'échange de données avec Product Center. Pour sa part, Mediator doit disposer de toutes les méthodes requises par les classes du portlet pour réaliser les opérations liées à l'appel de services Web de Product Center. Le portlet représente les conditions fonctionnelles requises et les opérations relatives à l'interaction utilisateur. Dans l'exemple WorkwithItem, le portlet doit :

(a) Afficher un article
(b) Créer un article
(c) Modifier un article
(d) Cloner un article
(e) Supprimer un article

De la même façon, des méthodes doivent être ajoutées à la couche de Mediator et effectuer ce qui suit :

(1) Charger l'URL SOAP appropriée pour l'appel du service Web
(2) Créer un code XML de demande pour l'appel de méthode
(3) Appeler l'URL SOAP pour lancer des appels SYNC/ASYNC
(4) Recevoir le code XML de réponse et l'interpréter
(5) En cas de réussite, convertir le code XML de réponse en objets données
(6) En cas d'échec, transmettre les informations au portlet sous la forme d'un bean de notification. Une exception WPCMediator doit être lancée.

Par exemple, la méthode pour extraire CatalogItem dans Mediator ressemblera à ce qui suit :

public ICatalogItem getCatalogItem(
        String parentCgyID,
        String catalogID, 
        String itemID,
        WPSContext context)
throws WPCMediatorException {
        try {
            // obtenir les spécifications d'articles.
            item = getCatalogItem(parentCgyID, catalogID, context);

            //élaborer le code XML de demande d'article pour extraire des données
            String itemReqXML =
            CatalogItemGenerator.prepareItemDetailsRequestXML(
                parentCgyID,
                catalogID,
                itemID);

            // appeler soapHelper
            Element itemElement = wsHelper.getCatalogItemXML(itemReqXML, user);

            // préparer l'article en analysant les résultats
            CatalogItemParser.prepareItem(item, itemElement);
            return item;
    } catch (WPCMediatorException wpce) {
        if (DEBUG) wpce.printStackTrace();
        throw wpce;
    }
}

Ensuite, Mediator délègue l'appel à la classe WSHelper qui crée le code XML de demande et appelle l'URL SOAP.

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();
}


Comme illustré précédemment, la méthode getCatalogItem() reçoit le code XML de réponse et le transmet à CatalogItemParser pour le convertir en objet CatalogItem.
XMLHelper génère le code XML complet pour tous les appels de ce genre.

En résumé, la procédure générique suivie pour toute opération Mediator est :

Portlet > WPCMediator > WSHelper > SoapInvoker >API Axis

Création d'un portlet

Reportez-vous à l'emplacement suivant pour en savoir plus sur le déploiement d'un portlet dans WebSphere Portal Server : 

    <racine_PortalServer>\doc\en\InfoCenter\index.html.

Le portlet Product Center appelle Product Center Mediator et décide le message à afficher à l'utilisateur final comme résultat de l'appel. Ces messages doivent être ajoutés à la collection de messages à l'aide des API fournies à cette fin.  

Les JSP, illustrant les différents écrans pour le portlet en cours, doivent inclure la balise personnalisée afin d'afficher le contenu des messages utilisateur.  

    <wpctags:uimessages/>

Désignation du service Web de WebSphere Product Center

Modifiez les fichiers de configuration comme soapactionurls.xml pour désigner l'URL SOAP appropriée. Le fichier de configuration exemple est présenté ci-dessous :

<soap-url action="<nom action>">http://<nom serveur>:<port serveur>/services/<nom service></soap-url>

<soap-url action="ADD">http://9.184.114.58:9999/services/wpc_portal_integrated_dev
</soap-url>

Chapitre 5 - Déploiement et personnalisation de l'interface utilisateur de Supplier Portal

Ce chapitre explique en détails la procédure à suivre pour installer et configurer Supplier Portal dans Product Center. 

Les logiciels qui suivent doivent être installés dans votre environnement :

Déploiement de Supplier Portal

Cette étape consiste à déployer Supplier Portal. 

1. Ouvrez l'invite de commande, allez au répertoire <racine_AppServer>\bin et arrêtez le serveur avec la commande suivante :

    stopServer WebSphere_Portal -username wpsbind -password wpsbind

2. Ouvrez l'outil d'administration Web de Directory Server en entrant l'URL http://localhost:9080/IDSWebApp/IDSjsp/Login.jsp et connectez-vous avec les justificatifs suivants :

Nom d'hôte LDAP : localhost
Nom d'utilisateur : cn=root
Mot de passe : password

3. Arrêtez l'outil d'administration Web.

4. A l'invite de commande, allez au répertoire "racine_DirectoryServer\appsrv\bin" et arrêtez le serveur LDAP avec la commande suivante :

    stopServer server1 -username wpsbind -password wpsbind

5. Téléchargez le fichier zip de l'application et extrayez-en le contenu. Il doit contenir le fichier "customlogin.jar[I2]". Ces fichiers sont également disponibles sur le CD d'installation de Product Center.

6. Ajoutez les fichiers customlogin.jar & ibmjndi.jar au dossier <racine_PortalServer>\shared\app.

7. A l'invite de commande, allez au répertoire "racine_DirectoryServer\appsrv\bin" et démarrez le serveur LDAP avec la commande suivante :

    startServer server1 -username wpsbind -password wpsbind

8. Ouvrez l'outil d'administration Web de Directory Server en entrant l'URL http://localhost:9080/IDSWebApp/IDSjsp/Login.jsp et connectez-vous avec les justificatifs suivants :

Nom d'hôte LDAP : localhost
Nom d'utilisateur : cn=root
Mot de passe : password

9. Démarrez l'outil d'administration Web.

10. A l'invite de commande, allez au répertoire "racine_AppServer\bin" et démarrez Portal Server avec la commande suivante :
startServer WebSphere_Portal -username wpsbind -password wpsbind

11. Connectez-vous avec admin/admin/ibm.

12. Sélectionnez Administration -> Portlets > Manage Applications.

13. Effectuez une désinstallation s'il existe une instance antérieure de l'application.

14. Installez la nouvelle instance et ajoutez les portlets dans les pages requises.

15. Attribuez les autorisations utilisateur aux portlets.

Personnalisation de l'interface utilisateur de Supplier Portal

Dans cette étape, l'interface utilisateur est personnalisée pour Supplier Portal. Elle fournit une présentation par défaut et un agencement pour le portail.

Création d'un menu de navigation 

Au moment de la personnalisation du portail, créez les libellés suivants, comme illustré par la figure 1 :

Figure 1

Installation de thèmes et d'habillages 

Installez les thèmes et les habillages pour l'application.

1. Extrayez le fichier "themes.zip" dans le dossier <racine_AppServer>\installedApps\<NOM_HOTE_AppServer>\wps.ear\wps.war\themes\html

2. Extrayez le fichier "skins.zip" dans le dossier <racine_AppServer>\installedApps\<NOM_HOTE_AppServer>\wps.ear\wps.war\skins\html

3. Connectez-vous à Portal Server en tant qu'administrateur.

4. Cliquez sur le lien Administrator dans l'angle supérieur droit.

5. Sélectionnez Portal User Interface -> Themes and Skins.

6. Cliquez sur le lien Add new theme.

7. Entrez "WPC_Default_theme" comme nom et répertoire du nouveau thème. Cliquez sur OK.

8. Cliquez sur le lien Add New skin.

9. Entrez "WPC_Default_skin" comme nom et répertoire du nouvel habillage. Cliquez sur OK.

Agencement des portlets dans les onglets

Organisez les portlets dans divers onglets, comme suit :

Onglet Accueil
  • Portlet Alertes
  • Portlet Recherche
Onglet Recherche
  • Portlet Recherche
Onglet Création/modification d'article
  • Portlet Catalogue d'articles
  • Portlet Utilisation d'articles
Onglet Modification de masse
  • Portlet Utilisation d'articles
Onglet Téléchargement
  • Portlet Téléchargement
  • Portlet Alertes
Onglet Enregistrement
  • Portlet Enregistrement
  • Portlet Approbation utilisateur

Procédez comme suit pour ajouter des portlets dans un onglet :

1. Connectez-vous à Portal Server en tant qu'administrateur.

2. Cliquez sur le lien Administrator dans l'angle supérieur droit.

3. Sélectionnez Portal User Interface > Manage Pages.

4. Cliquez sur le bouton Edit Page Layout pour la page requise dans l'écran de droite.

5. Ajoutez les portlets requis à la page.

6. Répétez les étapes (4) et (5) pour tous les onglets mentionnés auparavant.  

Octroi du droit d'accès aux onglets

1. Connectez-vous à Portal Server en tant qu'administrateur.

2. Cliquez sur le lien Administrator dans l'angle supérieur droit.

3. Sélectionnez Access -> Resource Permissions.

4. Cliquez sur le bouton Assign Access pour le lien My Portal. Choisissez un accès All Authenticated Users dans l'écran Edit Role et cliquez sur OK.

5. Choisissez également des accès Anonymous User à la page d'enregistrement, comme expliqué à l'étape (4).

Mise à jour des fichiers de configuration

1. Effectuez les changements suivants relatifs à la déconnexion dans le fichier de configuration ci-dessous.  

<racine_PortalServer>/shared/app/config/services/ConfigService.properties
    # Paramètres de redirection de déconnexion
    redirect.logout = true
    redirect.logout.url = /wps/myportal

Ces changements redirigent le portail vers la page de connexion lorsque vous cliquez sur le lien "Logout".

2. Effectuez les changements suivants relatifs à la déconnexion dans les fichiers de configuration ci-dessous.

<racine_PortalServer>/shared/app/nls/engine_en.properties
<racine_PortalServer>/shared/app/nls/engine.properties

Modifiez les entrées qui suivent pour changer les noms des liens en "Registrer", "Sign in" et "Sign out".

link.enrollment = Register
link.login = Sign in
link.logout = Sign out

Ajoutez ces entrées affichant le message de bienvenue personnalisé.  

default_welcome = Bienvenue
login_welcome = Bienvenue, {0}

3. Effectuez les changements suivants pour le bouton de connexion dans le fichier de configuration ci-dessous.  

<racine_PortalServer>/shared/app/nls/button_en.properties
<racine_PortalServer>/shared/app/nls/button.properties 

Modifiez l'entrée ci-dessous pour changer le nom du lien "Login".

        login = Sign in

Fichiers de configuration

Lors de l'installation et de la configuration de Supplier Portal, quelques fichiers de configuration spécifiques à Portal Server et ceux spécifiques à Supplier Portal subissent des modifications. Voici une brève description de ces fichiers. 

<racine_PortalServer>/config/wpconfig.properties

<racine_PortalServer>/wmm/wmmLDAPServerAttributes.xml

<racine_PortalServer>/shared/app/config/services/ConfigService.properties

<racine_PortalServer>/shared/app/config/services/LoaderService.properties

<racine_PortalServer>/shared/app/nls/field.properties

<racine_PortalServer>/shared/app/nls/problem.properties

<racine_PortalServer>/shared/app/nls/engine.properties

<racine_PortalServer>/shared/app/nls/button.properties

Fichiers de configuration spécifiques à Supplier Portal :

<racine_Application>/WebContent/WEB-INF/config/soapactionurls.xml

<racine_Application>/WebContent/WEB-INF/config/timezonevalues.xml

<racine_Application>/WebContent/WEB-INF/config/catalog_configuration.xml

<racine_Application>/WebContent/WEB-INF/config/portletActions2pages.xml

Conclusion

En fin de chapitre, les tâches suivantes doivent avoir été réalisées :

Chapitre 6 - Structure de l'interface utilisateur

Ce chapitre explique en détails :

Structure de portlets

La structure d'ensemble de portlets est illustrée par la figure suivante. L'utilisateur est averti du statut d'une transaction dans la zone de message. Il interagit avec la zone active et les bouton d'actions qu'elle contient.

Stock de portlets

Voici la liste des portlets pour les scénarios utilisateur disponibles :

Enregistrement utilisateur

a. Dans la page de connexion, cliquez sur le lien Register.

b. Le portlet d'enregistrement utilisateur s'affiche.

c. Il présente le GLN et l'adresse électronique du fournisseur. L'utilisateur entre ces informations. 

d. Cliquez sur Next pour valider le GLN et l'adresse électronique.

e. Après reconnaissance par le système, les zones de mot de passe s'affichent.  

f. Le système vérifie que les mots de passe sont identiques.

g. Un écran apparaît pour vous avertir que les informations d'approbation d'enregistrement seront envoyées à l'utilisateur, lequel pourra ensuite se connecter au portail.

Approbation de l'enregistrement utilisateur - En manuel

a. Il s'agit d'un processus hors ligne. L'administrateur de WebSphere Product Center doit approuver les utilisateurs enregistrés. Ceux-ci pourront alors se connecter au portail et employer des portlets relatifs à WebSphere Product Center.  

b. L'administrateur de WebSphere Product Center doit attribuer un rôle à l'utilisateur enregistré. Cette action doit être réalisée manuellement dans le magasin LDAP partagé par Portal Server et WebSphere Product Center. De cette façon, l'utilisateur est autorisé à réaliser des transactions liées à WebSphere Product Center.

Affichage du catalogue d'articles

a. Ce portlet présente le catalogue d'articles dans une arborescence structurée. Chaque article est une feuille de cette arborescence.

b. L'utilisateur sélectionne un catalogue et peut y ajouter un article. Cette option est disponible via un bouton dans la zone de boutons d'actions.

c. L'utilisateur sélectionne un article qu'il peut afficher, modifier, cloner ou supprimer. Ces options sont disponibles via des boutons dans la zone de boutons d'actions.

d. Ces boutons fonctionnent uniquement pour des opérations sur un article.

e. Le premier niveau des catalogues est extrait de WebSphere Product Center. Les noeuds enfant (sous-catalogues et articles) sont extraits en fonction de l'interaction utilisateur. L'utilisateur développe un noeud pour en afficher le contenu. La quantité de données à charger à tout moment est réduite, mais le nombre d'appels à WebSphere Product Center pour recevoir ces informations augmente pour sa part.

Affichage d'un article existant

a. Sélectionnez un article dans le portlet Catalogue d'articles et cliquez sur le bouton View Item. Les détails sur l'article s'affichent alors dans le portlet Utilisation d'articles. Le contenu apparaît en mode lecture seule.

Ajout d'un article

a. Sélectionnez un catalogue dans le portlet Catalogue d'articles et cliquez sur le bouton Add Item. Le contenu de l'article s'affiche dans le portlet Utilisation d'articles afin que l'utilisateur puisse entrer ces informations. L'opération ajoute l'article entré sous le catalogue sélectionné.

b. Ce processus de création d'article peut également être effectué en cliquant sur le bouton Add Item dans le portlet Utilisation d'articles. Un article est alors créé sous un catalogue non attribué.

c. Les validations relatives à l'entrée d'article sont réalisées au moment de la soumission. Le premier niveau de validation est effectué en fonction des méta-informations d'attributs reçues de WebSphere Product Center. Ces validations correspondent généralement à des vérifications de types et de plages. Elles ne se déroulent pas lors de la vérification de niveau de JavaScript.

d. L'utilisateur peut également annuler l'opération. Le portlet retrouve dans ce cas son état initial.

Mise à jour d'un article

a. Sélectionnez un article dans le portlet Catalogue d'articles et cliquez sur le bouton Update Item. Le contenu de l'article s'affiche dans le portlet Utilisation d'articles afin que l'utilisateur puisse entrer ces informations.  

b. Ce processus de mise à jour d'article peut également être effectué en recherchant un article et en cliquant sur le bouton Work with Item dans les résultats de la recherche. Le portlet Utilisation d'articles présente alors les informations sur l'article. L'utilisateur peut ensuite cliquer sur le bouton Update Item afin d'employer cet article.

c. Ce processus peut aussi être exécuté en sélectionnant un article dans le portlet Catalogue d'articles, puis en cliquant sur View Item. Le portlet Utilisation d'articles présente alors des informations. L'utilisateur peut ensuite cliquer sur le bouton Update. Le contenu apparaît en mode édition.

d. Les validations relatives à l'entrée d'article sont réalisées au moment de la soumission. Le premier niveau de validation est effectué en fonction des méta-informations d'attributs reçues de WebSphere Product Center. Ces validations correspondent généralement à des vérifications de types et de plages. Elles ne se déroulent pas lors de la vérification de niveau de JavaScript.

e. L'utilisateur peut également annuler l'opération. Le portlet retrouve dans ce cas son état initial.

Clonage d'un article

a. Sélectionnez un article dans le portlet Catalogue d'articles et cliquez sur le bouton Clone Item. Une copie du contenu de l'article apparaît dans le portlet Utilisation d'articles, de façon à ce que l'utilisateur puisse réaliser une copie de l'article.  

b. Ce processus de clonage d'article peut également être effectué en recherchant un article et en cliquant sur le bouton Work with Item dans les résultats de la recherche. Le portlet Utilisation d'articles présente alors les informations sur l'article. L'utilisateur peut cliquer sur le bouton Clone et employer l'article.

c. Ce processus peut aussi être exécuté en sélectionnant un article dans le portlet Catalogue d'articles, puis en cliquant sur View Item. Le portlet Utilisation d'articles présente alors des informations. L'utilisateur peut ensuite cliquer sur le bouton Clone. Le contenu apparaît en mode édition.

d. Les validations relatives à l'entrée d'article sont réalisées au moment de la soumission. Le premier niveau de validation est effectué en fonction des méta-informations d'attributs reçues de WebSphere Product Center. Ces validations correspondent généralement à des vérifications de types et de plages. Elles ne se déroulent pas lors de la vérification de niveau de JavaScript.

e. L'utilisateur peut également annuler l'opération. Le portlet retrouve dans ce cas son état initial.

Suppression d'un article

a. Sélectionnez un article dans le portlet Catalogue d'articles et cliquez sur le bouton Delete Item. Le contenu de l'article s'affiche dans le portlet Utilisation d'articles afin que l'utilisateur puisse supprimer l'article. Le contenu de l'article apparaît en mode lecture.

b. Ce processus de suppression d'article peut également être effectué en recherchant un article et en cliquant sur le bouton Work with Item dans les résultats de la recherche. Le portlet Utilisation d'articles présente alors les informations sur l'article. L'utilisateur peut ensuite poursuivre en cliquant sur le bouton Delete et supprimer ainsi l'article.

c. Ce processus peut aussi être exécuté en sélectionnant un article dans le portlet Catalogue d'articles, puis en cliquant sur View Item. Le portlet Utilisation d'articles présente alors des informations. L'utilisateur peut ensuite cliquer sur le bouton Delete.  

d. L'utilisateur peut également annuler l'opération. Le portlet retrouve dans ce cas son état initial.

Recherche d'un article

a. A l'origine, le portlet de recherche affiche les critères de recherche : GTIN, GLN, marché cible, statut du produit (approuvé, rejeté, draft, etc.), numéros de références, prix, renvoi d'un article ou hiérarchie. L'utilisateur peut effectuer une recherche avec des caractères génériques.  

b. Les critères de recherche offrent une option d'intervalle en termes de dates ou de nombres. Par exemple, le critère de prix peut désigner un prix compris entre 100 et 500 €.

c. Les critères de recherche mémorisent et affichent les 10 derniers utilisés par l'utilisateur. Cliquez sur ce lient pour lancer la recherche avec ces critères.

d. Les résultats de la recherche sont présentés dans le même portlet, sous les critères appliqués. Les résultats renvoyés sont affichés en fonction d'une taille de défilement spécifique à l'utilisateur. Cette valeur peut être définie à l'aide de l'option de modification du portlet. La taille des résultats de la recherche est déterminée par WebSphere Product Center et concerne surtout les performances de l'opération. L'affichage des résultats est contrôlé par le portlet, en particulier du point de vue de l'utilisateur.

e. L'utilisateur peut sélectionner un article dans les résultats et cliquer sur le bouton Work with items. Les informations sur cet article sont alors intégrées au portlet Utilisation d'articles.

f. L'utilisateur peut aussi sélectionner plusieurs articles dans les résultats et cliquez sur le bouton Work with items. Ces articles sont alors ajoutés au portlet Mise à jour de masse d'articles.

Téléchargement de masse

a. Le portlet Téléchargement de masse fournit une interface de navigation de fichiers pour télécharger un fichier CSV (les valeurs sont séparées par des virgules), de la machine de l'utilisateur vers WebSphere Product Center. 

b. Sachant qu'il s'agit d'une transaction longue du point de vue de WebSphere Product Center, cette interaction sera de type asynchrone. Le fichier CSV est téléchargé dans WebSphere Product Center et les résultats de la transaction sont signalés à l'utilisateur sous la forme d'un message dans le portail ou d'un courrier électronique.

Mise à jour globale/de masse

a. L'utilisateur effectue une recherche des articles à l'aide du portlet Recherche. Sélectionnez les articles affichés dans les résultats de la recherche et cliquez sur le bouton Work with Items. 

b. Le contenu des articles sélectionnés est transféré au portlet Téléchargement de masse d'articles. L'utilisateur peut désormais effectuer une mise à jour de masse des articles pour un ensemble déterminé d'attributs.

 

Chapitre 7 - Généralités sur les formats de messages

Le format de message choisi s'apparente à celui UCCNet. L'enveloppe comporte un en-tête et un corps. L'en-tête contient des informations servant à identifier l'émetteur/le destinataire, ainsi qu'un identificateur unique de message. Le corps inclut la commande à exécuter et des informations relatives en cas de message de demande et si le message de réponse comprend des détails sur la réponse.   

Les transactions de messages entre le portail et Product Center peuvent être gérées de deux façons : synchrone et asynchrone.

Structure du document

<envelope>
    <wpcHeader>
        <!— companyName. Par défaut, l'ID utilisateur et la société dans WPC seront pris dans le contexte de script correspondant. Actuellement, zone uniquement informative -->
        < companyName></ companyName> 
        <!—UserID. Par défaut, l'ID utilisateur et la société dans WPC seront pris dans le contexte de script correspondant. Actuellement, zone uniquement informative -->
        < userID></ userID>
        <!--messageIdentifier identifie de façon unique chaque message-->
        < messageIdentifier></ messageIdentifier>
        <!—horodatage auquel le message a été envoyé -- >
        <timestamp></timestamp>
        <!—ID fournisseur de l'utilisateur WPS  -- >
        <supplierId></supplierId>
    </wpcHeader>
    <wpcBody>
        < wpcCommand type=ADD mode=SYNC >
        ………...
        </wpcCommand>
    </wpcBody>
</envelope>

L'attribut "type" de l'élément wpcCommand peut posséder une valeur telle que ADD/MODIFY/DELETE/SEARCH/QUERY_TRANSACTION/etc. Cette zone détermine l'opération devant être exécutée. L'attribut "mode" de l'élément wpcCommand détermine le mode dans lequel cette opération doit être exécutée. Il peut s'agir de SYNC ou d'ASYNC.

En mode SYNC, le document XML de demande est traité et celui de réponse correspondant est généré et renvoyé immédiatement.

En mode ASYNC, un ID de transaction est retourné à l'appelant à la réception du document XML de demande et de la confirmation de sa validité et conformité. A partir de là, l'appelant peut poursuivre l'interrogation du statut de la transaction demandée en indiquant son ID.

Pour ajouter un article de catalogue dans Product Center, le portail doit envoyer le squelette de message qui suit avec les données correctes. L'indicateur de mode doit être "SYNC" pour obtenir immédiatement une réponse ; sinon, il sera "ASYNC".

<envelope>
    <wpcHeader>
        <!— companyName. Par défaut, l'ID utilisateur et la société dans WPC seront pris dans le contexte de script correspondant. Actuellement, zone uniquement informative -->
        < companyName></ companyName> 
        <!—UserID. Par défaut, l'ID utilisateur et la société dans WPC seront pris dans le contexte de script correspondant. Actuellement, zone uniquement informative -->
        < userID></ userID>
        <!--messageIdentifier identifie de façon unique chaque message-->
        < messageIdentifier></ messageIdentifier>
    </wpcHeader>
    <wpcBody>
        < wpcCommand type=ADD mode=SYNC >
        <wpcCatalogItem>
        ………...
    </wpcCatalogItem>
        </wpcCommand>
    </wpcBody>
</envelope>

La réponse correspondante de Product Center doit être :

<envelope>
<wpcHeader>
	<!— companyName. Par défaut,
l'ID utilisateur et la société dans WPC seront pris dans le contexte
de script correspondant. Actuellement, zone uniquement informative -->
	< companyName></ companyName> 
	<!—UserID. Par défaut,
l'ID utilisateur et la société dans WPC seront pris dans le contexte
de script correspondant. Actuellement, zone uniquement informative -->
	< userID></ userID>
	<!--messageIdentifier identifie de façon unique chaque message-->
	< messageIdentifier></ messageIdentifier>
</wpcHeader>
<wpcBody>
	< wpcResponse>
		< wpcEntityIdentifier>
			<!—messageidentifier valeur du message de demande --!>
< wpcMessageIdentifier > </ wpcMessageIdentifier >
<!—ID de transaction WPC créé pour le message de demande --!>
< wpcTransactionID ></ wpcTransactionID >
				</ wpcEntityIdentifier>
				< wpcNotification >
					< notificationInfo type=”SUCCESS” >
						< notificationCode >000</ notificationCode >
						<notificationMessage>SUCCESS</notificationMessage>
	</ wpcResponse>
</wpcBody>
</envelope>

Si une erreur est détectée, l'attribut "type" de notificationInfo aura la valeur "ERREUR" ou "AVERTISSEMENT". Le code de notification sera le code d'erreur et un message d'erreur sera associé au message de notification. Ce principe s'applique à tous les messages envoyés depuis le portail. En cas de demande de recherche/sélection en mode SYNC, wpcResponse inclut le bloc wpcCatalogueItem dans la réponse correspondant au résultat de recherche/sélection.

En cas de message de demande en mode ASYNC, la demande envoyée doit être comme suit :

<envelope>
    <wpcHeader>
        <!— companyName. Par défaut, l'ID utilisateur et la société dans WPC seront pris dans le contexte de script correspondant. Actuellement, zone uniquement informative -->
        < companyName></ companyName> 
        <!—UserID. Par défaut, l'ID utilisateur et la société dans WPC seront pris dans le contexte de script correspondant. Actuellement, zone uniquement informative -->
        < userID></ userID>
       !--messageIdentifier identifie de façon unique chaque message-->
        < messageIdentifier></ messageIdentifier>
    </wpcHeader>
    <wpcBody>
        < wpcCommand type=ADD mode=”ASYNC”>
    <!— en cas d'opérations globales, le bloc qui suit est utilisé --!>
    <!—actuellement, le seul type de fichier pris en charge est CSV --!>
            <wpcDataContainer fileType=”CSV”>
                <serverName></serverName>
                <userName></userName>
                <password></password>
                <dataDir></dataDir>
                <fileName></filename>
        </wpcCommand>
    </wpcBody>
</envelope>

La réponse correspondante est comme suit :

<envelope>
    <wpcHeader>
        <!— companyName. Par défaut, l'ID utilisateur et la société dans WPC seront pris dans le contexte de script correspondant. Actuellement, zone uniquement informative -->
        < companyName></ companyName> 
        <!—UserID. Par défaut, l'ID utilisateur et la société dans WPC seront pris dans le contexte de script correspondant. Actuellement, zone uniquement informative -->
        < userID></ userID>
        <!--messageIdentifier identifie de façon unique chaque message-->
        < messageIdentifier></ messageIdentifier>
    </wpcHeader>
    <wpcBody>
        < wpcResponse>
            < wpcEntityIdentifier>
                <!—messageidentifier valeur du message de demande --!>
                < wpcMessageIdentifier > </ wpcMessageIdentifier >
            <!—ID de transaction WPC créé pour le message de demande --!>
            < wpcTransactionID ></ wpcTransactionID >
        </ wpcEntityIdentifier>
        < wpcNotification >
            < notificationInfo type=”PROCESSING” >
                < notificationCode >999</ notificationCode >
        <notificationMessage>PROCESSING</notificationMessage>
            </ wpcResponse>
    </wpcBody>
</envelope>

Le portail doit poursuivre l'interrogation de Product Center pour vérifier l'accomplissement de la transaction donnée. Telle est la fonction du message qui suit.

<envelope>
    <wpcHeader>
        <!— companyName. Par défaut, l'ID utilisateur et la société dans WPC seront pris dans le contexte de script correspondant. Actuellement, zone uniquement informative -->
        < companyName></ companyName> 
        <!—UserID. Par défaut, l'ID utilisateur et la société dans WPC seront pris dans le contexte de script correspondant. Actuellement, zone uniquement informative -->
        < userID></ userID>
        <!--messageIdentifier identifie de façon unique chaque message-->
        < messageIdentifier></ messageIdentifier>
    </wpcHeader>
    <wpcBody>
        < wpcCommand type=”QUERY_TRANSACTION” mode=”ASYNC”>
            < wpcEntityIdentifier>
            <!—messageidentifier valeur du message de demande --!>
            < wpcMessageIdentifier > </ wpcMessageIdentifier >
                <!—ID de transaction WPC créé pour le message de demande --!>
                < wpcTransactionID ></ wpcTransactionID >
        </ wpcEntityIdentifier>
        </wpcCommand>
    </wpcBody>
</envelope>

A présent, la réponse correspondante de Product Center lorsque l'opération aboutit est comme suit :

<envelope>
    <wpcHeader>
        <!— companyName. Par défaut, l'ID utilisateur et la société dans WPC seront pris dans le contexte de script correspondant. Actuellement, zone uniquement informative -->
        < companyName></ companyName> 
        <!—UserID. Par défaut, l'ID utilisateur et la société dans WPC seront pris dans le contexte de script correspondant. Actuellement, zone uniquement informative -->
        < userID></ userID>
        <!--messageIdentifier identifie de façon unique chaque message-->
        < messageIdentifier></ messageIdentifier>
    </wpcHeader>
    <wpcBody>
        < wpcResponse>
            < wpcEntityIdentifier>
                <!—messageidentifier valeur du message de demande --!>
                < wpcMessageIdentifier > </ wpcMessageIdentifier >
                <!—ID de transaction WPC créé pour le message de demande --!>
                < wpcTransactionID ></ wpcTransactionID >
        </ wpcEntityIdentifier>
        < wpcNotification >
            < notificationInfo type=”SUCCESS” >
            < notificationCode >000</ notificationCode >
        <notificationMessage>SUCCESS</notificationMessage>
        </ wpcResponse>
    </wpcBody>
</envelope>

Si la demande est traitée, la réponse est identique à celle envoyée immédiatement après réception de la demande ASYNC par Product Center

Généralités sur les scripts et les services Web concernés

Cette section identifie les scripts et les services Web impliqués dans une intégration de portail.

wpc_portal_integrated_dev

Script d'implémentation de service Web (/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

Différents formats de messages

Les sections contiennent des exemples de messages XML et les scripts correspondants pour appeler des commandes données.

Ajout

La demande ajoutera l'article et retournera la réponse d'aboutissement ou d'échec.

// pour appeler le message ADD
<?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>

Modification

La demande qui suit modifiera l'article avec la clé primaire donnée.

// pour appeler le message MODIFY
<?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>

Suppression

Pour supprimer l'article indiqué avec la clé primaire donnée.

// pour appeler le message DELETE
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 correspondant du service Web>",strXML);
   var respLog = createOtherOut("Response.xml"); // Contiendra l'ID de transaction. Recherchez la réponse dans /scripts/soap/messages/response/<TXN_ID>.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Recherche

Vous pouvez utiliser dans ce message de recherche tous les types de paramètres de recherche acceptés dans une sélection avancée. Consultez WSDL pour connaître les formats de messages pour chaque critère de recherche.

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 correspondant du service Web>",strXML);
   var respLog = createOtherOut("Response.xml"); // Contiendra l'ID de transaction. Recherchez la réponse dans /scripts/soap/messages/response/<TXN_ID>.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Squelette d'article

Ce message renvoie la spécification primaire de catalogue et, s'il existe des informations sur la catégorie et qu'une spécification de catégorie est associée à celle-ci, ces informations sont renvoyées comme réponse.

// pour appeler le message 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 correspondant du service Web>",strXML);
   var respLog = createOtherOut("Response.xml"); // Contiendra l'ID de transaction. Recherchez la réponse dans /scripts/soap/messages/response/<TXN_ID>.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Détails sur la transaction de requête

Cette commande sera traitée par la structure de services Web de WPC et non par le script d'implémentation correspondant. La structure de services Web attribuera un ID unique de transaction à chaque demande ASYNC. Lorsque WPS enverra le message contenant les détails sur la transaction de requête et l'ID donné, la structure se chargera de renvoyer la réponse générée par le script d'implémentation.

// pour appeler le message 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>

Statut de la transaction de requête

Il s'agit d'un message d'interrogation envoyé par l'utilisateur dans un intervalle régulier afin de savoir si l'ID de transaction (message ASYNC) est ou non terminé. Ce message est également géré par la structure de services Web et non par les scripts d'implémentation.

// pour appeler le message 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>

Téléchargement de fichier

Pour télécharger le fichier envoyé comme pièce jointe du service Web, le script d'implémentation copiera comme réponse ce fichier dans le dossier supplier/ctg_files correspondant dans le magasin de documents et renverra le chemin actuel de ce dernier.

// pour appeler le message UPLOAD_FILE sans pièces jointes

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 correspondant du service Web>",strXML);
   var respLog = createOtherOut("Response.xml"); // Contiendra l'ID de transaction. Recherchez la réponse dans /scripts/soap/messages/response/<TXN_ID>.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Importation

Avant d'appeler cette commande de téléchargement de fichier, une commande servira à télécharger le fichier CSV requérant des données ; ensuite, le message d'importation sera diffusé avec le chemin du magasin de documents du fichier téléchargé et celui-ci sera traité par le script d'implémentation en vue d'ajouter ou de mettre à jour les enregistrements correspondants.  

// pour appeler le message IMPORT sans pièces jointes

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 correspondant du service Web>",strXML);
   var respLog = createOtherOut("Response.xml"); // Contiendra l'ID de transaction. Recherchez la réponse dans /scripts/soap/messages/response/<TXN_ID>.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Détails sur des articles

Pour obtenir tous les attributs d'articles, y compris ceux spécifiques à la catégorie, le cas échéant.

// pour obtenir les détails sur l'article
<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 correspondant du service Web>",strXML);
   var respLog = createOtherOut("Response.xml"); // Contiendra l'ID de transaction. Recherchez la réponse dans /scripts/soap/messages/response/<TXN_ID>.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Clonage d'article

Ce message renverra une réponse contenant des détails sur l'article, sans aucune valeur pour la clé primaire.

// pour appeler le message CLONE
// pour obtenir les détails sur l'article
<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 correspondant du service Web>",strXML);
   var respLog = createOtherOut("Response.xml"); // Contiendra l'ID de transaction. Recherchez la réponse dans /scripts/soap/messages/response/<TXN_ID>.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Requête d'enfants de catalogue

Comme réponse, cette commande renverra toutes les catégories et tous les articles enfant dans la catégorie en cours pour le catalogue donné, ainsi que la catégorie principale si aucune information n'est fournie dans le message de demande sur l'arborescence de catégories.

// pour appeler le message 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 correspondant du service Web>",strXML);
   var respLog = createOtherOut("Response.xml"); // Contiendra l'ID de transaction. Recherchez la réponse dans /scripts/soap/messages/response/<TXN_ID>.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Obtention de catalogues

Ce message permet d'obtenir tous les catalogues actuellement disponibles dans WPC et les enverra comme réponse.

// pour appeler le message 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 correspondant du service Web>",strXML);
   var respLog = createOtherOut("Response.xml"); // Contiendra l'ID de transaction. Recherchez la réponse dans /scripts/soap/messages/response/<TXN_ID>.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Obtention d'une vue de catalogue

Renvoie la vue indiquée dans la réponse XML. Ce message n'est actuellement pas utilisé par Product Center.

Obtention d'une ressource 

Renvoie la réponse demandée comme pièce jointe.

// pour appeler le message 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>

 

Remarques

IBM peut ne pas fournir les produits, services ou fonctions abordés dans ce document dans tous les pays. Pour plus de détails, référez-vous aux documents d'annonce disponibles dans votre pays, ou adressez-vous à votre partenaire commercial IBM. Toute référence à un produit, logiciel ou service IBM n'implique pas que seul ce produit, logiciel ou service puisse être utilisé. Tout autre élément fonctionnellement équivalent peut être utilisé, s'il n'enfreint aucun droit d'IBM. Il est de la responsabilité de l'utilisateur d'évaluer et de vérifier lui-même les installations et applications réalisées avec des produits, logiciels ou services non IBM.

IBM peut détenir des brevets ou des demandes de brevet couvrant les produits mentionnés dans le présent document. La remise de ce document ne vous donne aucun droit de licence sur ces brevets ou demandes de brevet. Vous pouvez adresser des demandes de licence par écrit à l'adresse suivante :

Direction des licences IBM
IBM Corporation
Tour Descartes
92066 Paris-La Défense Cedex 50
France. Pour le Canada, veuillez adresser votre courrier à : IBM Director of Commercial Relations IBM Canada Ltd 3600 Steeles Avenue East Markham, Ontario L3R 9Z7, Canada

Le paragraphe suivant ne s'applique pas au Royaume-Uni ni dans aucun autre pays où de telles dispositions sont contraires à la législation locale :

LE PRESENT DOCUMENT EST LIVRE EN L'ETAT. IBM DECLINE TOUTE RESPONSABILITE, EXPLICITE OU IMPLICITE, RELATIVE AUX INFORMATIONS QUI Y SONT CONTENUES, Y COMPRIS EN CE QUI CONCERNE LES GARANTIES DE NON-CONTREFACON ET D'APTITUDE A L'EXECUTION D'UN TRAVAIL DONNE. Certaines juridictions n'autorisent pas l'exclusion des garanties implicites, auquel cas l'exclusion ci-dessus ne vous sera pas applicable.

Le présent document peut contenir des inexactitudes ou des coquilles. Les informations contenues dans ce document sont régulièrement mises à jour ; ces modifications seront incorporées dans les nouvelles éditions. IBM se réserve le droit d'apporter à tout moment et sans préavis des améliorations et/ou des modifications au(x) produit(s) et/ou programme(s) décrit(s) dans cette publication.

Les références à des sites Web non IBM sont fournies à titre d'information uniquement et n'impliquent en aucun cas une adhésion aux données qu'ils contiennent. Les éléments figurant sur ces sites Web ne font pas partie des éléments du présent produit IBM et l'utilisation de ces sites relève de votre seule responsabilité.

IBM pourra utiliser ou diffuser, de toute manière qu'elle jugera appropriée et sans aucune obligation de sa part, tout ou partie des informations qui lui seront fournies.

Les titulaires de licence de ce logiciel qui souhaiteraient obtenir des informations relatives à l'utilisation du logiciel pour permettre : (i) l'échange d'informations entre logiciels créés de façon indépendante et d'autres logiciels (y compris celui-ci) et (ii) l'utilisation mutuelle des informations qui ont été échangées, doivent contacter :

IBM Burlingame Laboratory
Director IBM Burlingame Laboratory
577 Airport Blvd., Suite 800
Burlingame, CA 94010
U.S.A

Ces informations peuvent être soumises à des conditions particulières, prévoyant notamment le paiement d'une redevance.

Le logiciel sous licence décrit dans ce document et tous les éléments sous licence disponibles s'y rapportant sont fournis par IBM conformément aux dispositions de l'ICA, des Conditions internationales d'utilisation des logiciels IBM ou de tout autre accord équivalent.

Les données de performance indiquées dans ce document ont été déterminées dans un environnement contrôlé. Par conséquent, les résultats peuvent varier de manière significative selon l'environnement d'exploitation utilisé. Certaines mesures évaluées sur des systèmes en cours de développement ne sont pas garanties sur tous les systèmes disponibles. En outre, elles peuvent résulter d'extrapolations. Les résultats peuvent donc varier. Il incombe aux utilisateurs de ce document de vérifier si ces données sont applicables à leur environnement d'exploitation.

Les informations concernant des produits non IBM ont été obtenues auprès des fournisseurs de ces produits, par l'intermédiaire d'annonces publiques ou via d'autres sources disponibles. IBM n'a pas nécessairement testé ces produits et ne peut pas confirmer l'exactitude des performances, de la compatibilité ou de toute autre déclaration liée aux produits non IBM. Toute question concernant les performances de produits non IBM doit être adressée aux fournisseurs de ces produits.

Ces informations peuvent contenir des exemples de données et des rapports utilisés dans des opérations commerciales courantes. Pour les illustrer le mieux possible, les exemples peuvent comporter des noms de personnes, de sociétés, de marques et de produits. Toute ressemblance avec des noms de personnes, de sociétés ou des données réelles serait purement fortuite.

Toute instruction relative aux intentions d'IBM pour ses opérations à venir est susceptible d'être modifiée ou annulée sans préavis, et doit être considérée uniquement comme un objectif.

Informations sur l'interface de programmation

Les informations relatives à l'interface de programmation, le cas échéant, ont pour objectif de vous aider à créer une application à l'aide de ce programme.

Les interfaces de programmation génériques vous permettent d'écrire une application bénéficiant des services des outils de ce programme.

Cependant, ces informations peuvent également contenir des informations relatives au diagnostic, à la modification et au réglage. Les informations de diagnostic, de modification et de réglage sont fournies afin de vous aider à déboguer l'application.

Avertissement : n'utilisez pas ces informations en tant qu'interface de programmation, car elles sont susceptibles d'être modifiées.

Marques

Les termes suivants sont des marques d'International Business Machines Corporation aux Etats-Unis et/ou dans d'autres pays :

IBM
le logo IBM
AIX
CrossWorlds
DB2
DB2 Universal Database
Domino
Lotus
Lotus Notes
MQIntegrator
MQSeries
Tivoli
WebSphere

Microsoft, Windows, Windows NT et le logo Windows sont des marques de Microsoft Corporation aux Etats-Unis et/ou dans certains autres pays.

MMX, Pentium et ProShare sont des marques d'Intel Corporation aux Etats-Unis et/ou dans certains autres pays.

Java et les marques Java sont des marques de Sun Microsystems, Inc. aux Etats-Unis et/ou dans certains autres pays.

D'autres sociétés sont propriétaires des autres marques, noms de produits ou logos qui pourraient apparaître dans ce document.


IBM WebSphere Product Center contient certains composants dits exclus (tels qu'ils sont définis dans le document d'informations sur la licence approprié), pour lesquels les dispositions supplémentaires suivantes sont applicables. Ce logiciel fait l'objet de l'octroi d'une licence en vertu des Conditions Internationales d'Utilisation de Logiciels IBM, qui est soumise aux dispositions relatives aux composants exclus. IBM est dans l'obligation de fournir les consignes suivantes en relation avec ce logiciel :

i.) IBM WebSphere Product Center inclut les logiciels suivants dont IBM a obtenu la licence d'Apache Software Foundation en application des termes et conditions de la licence Apache 2.0 :

- Apache Regular Expression version 1.2
- Apache Axis version 1.1
- Apache XML4J version 3.0.1
- Apache Log4j version 1.1.1
- Apache Jakarta Commons DBCP Package version 1.1
- Apache Jakarta Commons Pool Package version 1.1
- Apache Jakarta Commons Collections Package version 3.0

Apache License
Version 2.0, January 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 ther 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

(c) 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 [aaaa] [nom du détenteur de copyright]

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 inclut le logiciel suivant dont IBM a obtenu la licence de Scott Hudson, Frank Flannery et C. Scott Ananian en application des termes et conditions suivants :

- Cup Parser Generator version 0.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 inclut le logiciel suivant dont IBM a obtenu la licence d'Elliot Joel Berk et de C. Scott Ananian en application des termes et conditions suivants :

- JLex version 1.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 inclut le logiciel suivant dont IBM a obtenu la licence d'International Business Machines Corporation et d'autres sociétés en application des termes et conditions suivants :

- ICU4J version 2.8

ICU License - ICU 1.8.1 and later
COPYRIGHT AND PERMISSION NOTICE

Copyright (c) 1995-2003 International Business Machines Corporation and others
All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation.

LE LOGICIEL EST FOURNI "EN L'ETAT", SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE, Y COMPRIS EN CE QUI CONCERNE LES GARANTIES D'APTITUDE A L'EXECUTION D'UN TRAVAIL DONNE ET DE NON-CONTREFACON. EN AUCUN CAS LES TITULAIRES DE DROITS D'AUTEURS INCLUS DANS CETTE NOTICE NE POURRONT ETRE TENUS RESPONSABLES DE TOUTE RECLAMATION OU DE TOUT DOMMAGE SPECIAL, INDIRECT OU CONSECUTIF, OU PROVENANT D'UNE PERTE DE DONNEES OU DE BENEFICES, RESULTANT DE TOUTE ACTION LIEE A L'UTILISATION OU AUX PERFORMANCES DE CE LOGICIEL.

Sauf indication contraire dans cette notice, le nom des titulaires de droits d'auteur ne doit pas être utilisé à des fins de publicité ou de promotion de ce Logiciel sans autorisation écrite préalable de ces titulaires.

-----------------------------------------------------------------------------
Toutes les marques mentionnées dans le présent document appartiennent à leurs propriétaires respectifs.