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.
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
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 :
Ajout d'un article dans WebSphere Product Center
Modification d'un article dans WebSphere Product Center
Suppression d'un article dans WebSphere Product Center
Recherche d'articles selon le GTIN (Global Trade Identification Number), la référence SKU (Stock Keeping Unit), le GLN (Global Location Number)
Prise en charge de sélections
Transfert et téléchargement de valeurs séparées par des virgules (CSV)
Mises à jour de masse
Ce document suppose que les composants suivants sont utilisés dans l'environnement WebSphere Product Center :
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.
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.
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.
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 :
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>
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.
La structure comprend un ensemble de composants permettant de réaliser des interactions avec Product Center, ainsi que la transformation de données.
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.
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>
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.
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.
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.
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
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.
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é.
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.
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.
Cet article décrit l'architecture de la structure d'intégration de portail pour Product Center.
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.
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.
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.
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.
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.
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_PortalSi 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_PortalRemarque : 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.
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.
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> </td>
<td align="<%= bidiAlignLeft %>" class="wpsEditText">
<label for="company">
<wps:text key="company" bundle="nls.field"/>
</label>
</td>
</tr>
<tr>
<td> </td>
<td> <input dir="ltr" class="wpsFieldText" size="16" value="" id="company" name="company" type="text"></td>
</tr>
7. 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.
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=">="/>
<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>
En fin de chapitre, les tâches suivantes doivent avoir été réalisées :
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.
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
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>
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.
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;
}
}
}
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
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/>
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>
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 :
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.
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.
Au moment de la personnalisation du portail, créez les libellés suivants, comme illustré par la figure 1 :
Figure 1
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.
Organisez les portlets dans divers onglets, comme suit :
Onglet Accueil |
|
Onglet Recherche |
|
Onglet Création/modification d'article |
|
Onglet Modification de masse |
|
Onglet Téléchargement |
|
Onglet Enregistrement |
|
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.
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).
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
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
En fin de chapitre, les tâches suivantes doivent avoir été réalisées :
Ce chapitre explique en détails :
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.
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.
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
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
Les sections contiennent des exemples de messages XML et les scripts correspondants pour appeler des commandes données.
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>
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>
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");
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");
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");
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>
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");
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");
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");
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");
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");
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");
Renvoie la vue indiquée dans la réponse XML. Ce message n'est actuellement pas utilisé par Product Center.
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>
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.
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.
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.