WebSphere Product Center: Habilitación para portales
Versión 5.2
Nota: antes de utilizar esta información y el producto al que da soporte, lea la información del apartado "Avisos" al final de este documento.
21 de marzo de 2005
Este manual es la traducción del manual en inglés WebSphere Product Center: Portal Enablement. Esta edición de este documento se aplica a WebSphere Product Center, versión 5.2 (5724-I68), y a todos los releases y modificaciones posteriores hasta que se indique lo contrario en nuevas ediciones.
Copyright International Business
Machines Corporation 2005. Reservados todos los derechos.
US Government Users Restricted Rights-Use, duplication or
disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
Capítulo 1. Introducción
Requisitos
Limitaciones
Capítulo 2.
Arquitectura de infraestructura de integración del portal
Infraestructura de
integración de Product Center
Funciones de servicios web para WebSphere
Portal Server
Datos
Datos de solicitudes y respuestas de Product
Center
Especificación de artículos
Componentes
Mediador de Product Center
Interfaz de servicios Web
Conversores de datos
Tipos de datos
Bean de datos
Componentes de la interfaz de usuario
Servicios de intercambio de datos
Servicios
Soporte de
internacionalización y localización
Soporte de seguridad
Recursos
Capítulo 3. Instalación y configuración de un portal de proveedor
Configuración de la seguridad de
Portal Server con LDAP
Configuración de la base de datos para LDAP
Configurar la base de
datos para LDAP
Añadir un sufijo
Crear usuarios del
portal
Configurar el portal
Crear usuarios admin
del portal
Personalización del
servicio de inicio de sesión para el portal de proveedor
Configuración de Product
Center
Conclusión
Recursos
Capítulo 4. Creación de un portlet para Product Center
Portlet de
ejemplo: portlet de trabajo con artículos (WorkWithItem)
Mensajes XML
Objeto de datos que
representa el artículo
XMLGenerator y XMLParser
Adición de
métodos al mediador de Product Center
Creación del portlet
Cómo apuntar al
servicio web del servidor de Product Center
Capítulo 5. Despliegue y personalización del ID de usuario del portal de proveedor
Despliegue del portal de
proveedor
Personalización del ID de
usuario del portal de proveedor
Crear menú de navegación
Instalar temas y skins
Diseñar portlets en las pestañas
Proporcionar permiso de acceso a las pestañas
Actualizar archivos de configuración
Archivos de configuración
Conclusión
Capítulo 6. Infraestructura de la
interfaz de usuario
Estructura de portlets
Inventario de portlets
Capítulo 7. Visión general del formato
de los mensajes
Visión general de scripts y
servicios web implicados
Formatos de mensaje
La habilitación para portales de WebSphere Product Center ofrece una base sólida para la creación de portales de socios comerciales. Las iniciativas del portal pueden proporcionar acceso a valiosos datos sobre artículos a miles de usuarios, lo que aumenta significativamente el valor de la implementación de WebSphere Product Center.
Algunos ejemplos de procesos empresariales soportados por la función de portal son: creación y modificación de artículos, modificación de información sincronizada de artículos, cargas masivas de artículos, selecciones específicas de usuario y la capacidad de especificar datos de propuestas, términos y condiciones.
Se puede facilitar WebSphere Portal Server para su integración con WebSphere Product Center. La integración de Portal Server incluye la capacidad para poder realizar determinadas operaciones desde Portal Server:
Añadir artículos en WebSphere Product Center
Modificar artículos en WebSphere Product Center
Suprimir artículos en WebSphere Product Center
Buscar artículos por GTIN (número mundial de artículo comercial), SKU (código de artículo), GLN (número mundial de localización)
Opciones de soporte
Carga y descarga de CSV (valor separado por comas)
Actualizaciones masivas
Se presupone que se utilizan los componentes siguientes en el entorno de WebSphere Product Center:
Actualmente, WebSphere Product Center no proporciona portlets de gestión de información de productos. No obstante, WebSphere Product Center proporciona las API y metadatos necesarios para dar soporte al desarrollo de interfaces de usuario de portal de proveedor y portlets.
En este capítulo se describe cómo crear portlets para IBM WebSphere Product Center (a partir de aquí, llamado Product Center). Se describe la arquitectura para proporcionar una interfaz de usuario a Product Center.
La infraestructura de integración ofrece el soporte para que los portlets funcionen con Product Center y permitir así que los usuarios vean y trabajen con la información de Product Center. La integración entre la infraestructura de la interfaz de usuario y Product Center se basa en el soporte de servicios web en Product Center.
La arquitectura se compone de portlets que se comunican con Product Center a través de las interfaces de los servicios web que Product Center proporciona (ver figura 1). Product Center proporciona una capa de creación de scripts, que se puede utilizar como capa de API. Estos scripts se pueden hacer disponibles después como servicios web. Se crea un servicio web para cada función empresarial que tenga que estar disponible en Product Center. Se crea el portlet correspondiente para interactuar con este servicio web. El servicio web ejecutará uno o más scripts en Product Center, y también colaborará con otros servicios web para proporcionar la función empresarial deseada. Como el servicio web lleva a cabo la coreografía necesaria entre los scripts y otros servicios web, se consigue lo siguiente:
Figura 1
Para integración del portal. Los documentos XML son la modalidad de transferencia de datos y en función de la modalidad del mensaje de solicitud recibido, la respuesta se enviará inmediatamente o más tarde. La figura 2 explica la arquitectura en términos generales.
Figura 2
La comunicación entre Product Center y WebSphere Portal Server consiste siempre en una transformación de documento XML literal-documento. El mantenimiento de transacciones ASYNC / SYNC depende de la infraestructura de los servicios web de Product Center; no debe depender del nivel del script de implementación. Gracias a este recurso, cualquier operación puede hacerse ASYNC / SYNC en cualquier momento sin cambios de script.
El formato de intercambio de datos es XML, y el modelo de datos se basa en un solo envoltorio o contenedor que define la información necesaria para procesar una transacción. El envoltorio contiene lo siguiente:
En la tabla 1 se muestra un ejemplo de estructura XML de solicitud:
Tabla 1: XML de solicitud
<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>
En la tabla 2 se muestra el ejemplo de XML de respuesta correspondiente.
Tabla 2: XML de respuesta
<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 especificación de artículos es una definición específica de Product Center de un artículo y su colección de atributos. Esta definición puede realizarse en forma de documento XML. Esta especificación de artículos se utiliza para hacer referencia a los distintos tipos de datos que se usan para definir un artículo y sus atributos. La especificación de artículos en combinación con la definición de vista le ayudará a presentar las pantallas de los portlets, ya sea en modalidad de presentación automática o si un desarrollador necesita codificar manualmente las JSP.
La infraestructura se compone de un conjunto de componentes que facilitan las interacciones con Product Center y la transformación de datos.
El mediador facilita la interacción con los portlets y los servicios web de Product Center. Actúa como el único punto de contacto de estas capas y lleva a cabo la transformación de datos necesarios para el consumo de estas dos capas. El mediador aparece como una interfaz con la que interactúan los portlets.
La interfaz de los servicios web se crea mediante la infraestructura de invocación de servicios Web de AXIS. La capa de servicios web interactúa con el cliente AXIS para iniciar una llamada al servicio web correspondiente en Product Center. La llamada al servicio web es del tipo literal-documento y SOAP es el protocolo utilizado para la comunicación, que se realiza mediante el transporte HTTP. La capa de servicios web actual se utiliza para intercambiar datos XML y también para cargar y descargar archivos adjuntos. La implementación SwA (SOAP-with-Attachments o SOAP con archivos adjuntos) en AXIS se utiliza para este propósito. Consulte el apartado "Recursos" de este capítulo para obtener más información sobre la infraestructura AXIS.
Un archivo de configuración contiene la lista de servicios web que deben invocarse para realizar una acción desde la interfaz de usuario. Esta correlación de acciones con servicios web se muestra a continuación.
Tabla 3: Correlaciones de acciones con servicios web
<soap-url action="<nombre
acción>">http://<nombre servidor>:<puerto
servidor>/services/<nombre servicio></soap-url>
<soap-url action="ADD">http://ibm.com:9557/webservices/addAction</soap-url>
La capa de mediador utiliza un conjunto de analizadores y generadores para analizar el contenido XML de Product Center y para convertir el contenido XML generado para consumo de Product Center. Estos conversores convierten datos en formato XML a un objeto Java predefinido y viceversa. La conversión a un objeto Java requiere el soporte de un conjunto definido de tipos de datos y objetos de datos. Éstos se describen en los apartados siguientes.
Product Center define un conjunto de atributos para su definición de artículos. Estos atributos son de diferente tipo: cadena, número o grupo. Estos tipos de atributo y su comportamiento en la infraestructura de interfaz de usuario están contenidos en un conjunto de clases Atributo y Tipo de atributo.
La figura 3 contiene la lista completa de atributos admitidos. Los atributos proporcionan una base donde se pueden adjuntar funciones de validación, formato y presentación.
Los beans de datos proporcionan soporte para el contenido que se muestra en el portlet y controlan el flujo de la interfaz de usuario en términos de almacenamiento del estado o modalidad actual del portlet.
Los componentes de la interfaz de usuario se ocupan principalmente de la presentación de la interfaz de usuario y la gestión de las interacciones de usuario, además de invocar llamadas específicas en la capa de mediador, recuperar datos de Product Center o almacenarlos en éste. Los principales componentes de la interfaz de usuario son los portlets y las bibliotecas de códigos (identificadores) que facilitan la presentación de la interfaz de usuario para los portlets.
Figura 3
Los portlets desplegados en Portal Server no disponen de medios elegantes para intercambiar información, especialmente cuando los portlets ocupan varias páginas. La comunicación entre los portlets es eficaz sólo para portlets que ocupan una página. El servicio de intercambio de datos proporciona un punto de contacto para todos los portlets y puede contener información. Los portlets utilizan este servicio para intercambiar datos. Este servicio es por ahora uno solo y se invoca como una invocación de método Java sencillo. Con el tiempo se ampliará para dar servicio a un conjunto mayor o a más tipos de intercambios de objeto, y se desplegará como una aplicación independiente para mejorar los aspectos de ajuste de rendimiento.
La infraestructura de interfaz de usuario utiliza la infraestructura básica que proporciona Portal Server para ofrecer seguridad y soporte de internacionalización.
Portal Server proporciona un conjunto de códigos personalizados y paquetes de recursos para traducir y localizar el contenido que se visualiza en la infraestructura del portal (los temas y las apariencias o "skins"). La traducción y localización del contenido de los portlets se realiza mediante un conjunto de paquetes de recursos que proporcionan contenido a las etiquetas, botones y mensajes en pantalla. El contenido procedente de Product Center se localiza en función del soporte de entorno local de la aplicación.
La infraestructura de interfaz de usuario basada en el portal y Product Center utilizan LDAP como forma de proporcionar el registro de usuarios. Product Center y la infraestructura de interfaz de usuario tienen un conjunto independiente de esquemas de usuario que contiene la información de los usuarios. Esto se debe principalmente a que los usuarios registrados en el portal lo utilizan para llevar a cabo interacciones con el portal de proveedor. Los usuarios registrados en Product Center son principalmente usuarios admin o avanzados del sistema. A continuación, en el área del registro de usuarios, debe integrar los esquemas utilizados por la infraestructura y por Product Center. De esta manera, se creará un registro de usuarios común así como definiciones de usuarios y sus funciones.
Autentificación de usuarios
En un escenario de portal de proveedor, el proveedor y los usuarios generales se registran en el portal e inician sesión. La gestión de usuarios y la posterior autentificación de los usuarios se realiza en el nivel de LDAP del portal. La información clave que el portal comparte con la capa subyacente de Product Center es la información de identificación del proveedor. Esta información se utiliza para filtrar los datos creados por el usuario o con los que éste ha trabajado.
Autorización de usuarios
La autorización de los datos del usuario que ha iniciado sesión es principalmente una función de Product Center. En el estado actual del sistema, las autorizaciones son el filtrado de datos basado en la identificación del proveedor. El portal proporciona un grado de autorización de acceso al portal, en el que el usuario puede ver y realizar acciones según sea un usuario admin o un usuario general.
En este apartado se describe la arquitectura de la infraestructura de integración del portal para Product Center.
En los apartados siguientes se describe el entorno de configuración necesario para habilitar el despliegue de un portal de proveedor en una organización.
En este capítulo se presupone que se ha instalado como parte del entorno de WebSphere Product Center el software siguiente:
La elección del sistema operativo exigirá la instalación de una determinada combinación de software. La plataforma base sobre la que trabajará el portal de proveedor es Portal Server versión 5.0.2.2.
La instalación de la integración del portal para Websphere Product Center incluye dos archivos comprimidos. Uno se despliega en Portal Server y el otro en el servidor de Product Center para la integración del portal.
Como parte del primer paso en la instalación del portal de proveedor, configure la seguridad de Portal Server para LDAP. Se presupone que se ha instalado lo siguiente: IBM DB2, Directory Server y la herramienta de administración de Directory Server.
En este paso se configura la instancia de DB2 para LDAP.
1. Abra la herramienta de configuración de Directory Server; para ello, vaya a Inicio -> Programas -> IBM Tivoli Directory Server -> Directory Configuration.
2. Seleccione Administrator DN/password en el panel izquierdo de la herramienta de configuración.
3. Especifique los valores siguientes en los campos:
4. Pulse OK.
5. Seleccione Configure database en el panel izquierdo de la herramienta de configuración.
6. Seleccione la opción Create a new database y, a continuación, pulse Next.
7. Especifique el ID de usuario y la contraseña del usuario de administración de DB2. Normalmente se trata de db2admin y password. Pulse Siguiente.
8. Especifique el nombre de la instancia de DB2 como el nombre de la base de datos en la pantalla siguiente. Pulse Finish.
En este paso se añade un sufijo en la jerarquía LDAP.
1. Abra la herramienta de configuración de Directory Server; para ello, vaya a Inicio -> Programas -> IBM Tivoli Directory Server -> Directory Configuration.
2. Seleccione Manage Suffixes en el panel izquierdo de la herramienta de configuración.
3. Especifique la cadena "dc=wps,dc=com" en el campo DN de sufijo.
4. Pulse Add. A continuación, pulse OK.
En este paso se define la lista de usuarios con autorización para acceder al portal.
1. Abra la herramienta de configuración de Directory Server; para ello, vaya a Inicio -> Programas -> IBM Tivoli Directory Server -> Directory Configuration.
2. Seleccione Import LDIF data en el panel izquierdo de la herramienta de configuración. Se abrirá una pantalla con opciones para buscar el archivo LDIF e importar los datos de usuario.
3. Seleccione el archivo LDIF necesario para el portal de proveedor y realice la importación. El estado de la importación se refleja en el área de mensajes de tareas.
En este paso se configura la seguridad del portal.
1. Compruebe que Directory Server esté instalado y que se haya llevado a cabo la configuración necesaria en WebSphere Portal.
2. Busque el archivo <raíz_PortalServer>/config/wpconfig.properties y cree una copia de seguridad antes de cambiar ningún valor.
3. Utilice un editor de texto para abrir el archivo <raíz_wp>/config/wpconfig.properties.
4. Sustituya todas las entradas que terminan con el DN de sufijo "dc=yourco,dc=com" por "dc=wps,dc=com".
5. Edite las propiedades siguientes en el apartado "Configuración de propiedades de LDAP" correspondiente a su entorno:
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(dirección IP del sistema principal 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. Guarde el archivo.
7. Abra un indicador de mandatos y cambie al directorio <raíz_AppServer>/bin.
8. Especifique los mandatos siguientes:
startServer server1
stopServer WebSphere_Portal
9. Cambie al directorio <raíz_PortalServer>/config.
10. Especifique el mandato siguiente para ejecutar la tarea de configuración apropiada:
WPSconfig.bat validate-ldap
Nota: si se produce un error en la tarea de configuración, valide los valores en el archivo wpconfig.properties.
11. Especifique el mandato siguiente para ejecutar la tarea de configuración apropiada para habilitar la seguridad LDAP:
WPSconfig.bat enable-security-ldap
12. Cambie al directorio <raíz_AppServer>/bin, y especifique los mandatos siguientes:
(a) stopServer server1
(b) startServer server1
(c) startServer WebSphere_PortalSi ejecuta el mandato con la seguridad habilitada en WebSphere Application Server, debe especificar un ID de usuario y una contraseña para autenticación de seguridad al especificar los mandatos:
(d) stopServer server1 -user was_admin_userid -password was_admin_password
(e) startServer server1
(f) startServer WebSphere_PortalNota: hay pocos pasos en Infocenter; dependerá del tipo de instalación y de los entornos operativos. En función del requisito, estos pasos podrían excluirse.
En este paso se crean usuarios del portal con privilegios de administración.
1. Inicie sesión en la herramienta de administración web de Directory Server.
2. Seleccione Gestión de esquemas > Agregar un atributo y añada los atributos siguientes:
WPCRole{Syntax - Directory String Syntax, Attribute Length - 50}
userStatus{Syntax - Boolean}
userGLN{Syntax - Directory String Syntax, Attribute Length - 50}
company{Syntax - Directory String Syntax, Attribute Length - 50}
3. Seleccione Gestión de esquemas > Agregar una clase de objeto y añada lo siguiente:
Clase de objeto: wpcUserClass
Atributos necesarios - abstract, company, UserStatus, WPCRole
Atributos opcionales - userGLN
4. Guarde todos estos cambios.
5. Importe el archivo portalAdmin.ldif de la herramienta de configuración. Se adjunta un archivo Admin LDIF de ejemplo como referencia.
6. Inicie sesión con admin/admin/ibm en el Portal
El portal proporciona una interfaz para Product Center y solicita del usuario un ID de usuario, una contraseña e información de la empresa al iniciar sesión en el portal. Esto exige una modificación de la página de inicio de sesión estándar que proporciona Portal Server.
1. Antes de personalizar la página de inicio de sesión, es necesario configurar un usuario con privilegios administrativos en el portal de proveedor.
(a) Inicie sesión con un ID de usuario y una contraseña de administrador del portal.
(b) Pulse en el enlace de administración de la barra superior, seleccione Acceso > Usuarios y grupos en el panel izquierdo.
(c) Seleccione wpsadmins en Grupos.
(d) Añada el usuario "admin" creado a través del archivo portalAdmin.ldif y guarde los cambios.El usuario "admin" tendrá privilegios de administrador en el portal de proveedor.
2. Cuando un usuario del portal inicia o finaliza la sesión en el portal, WP ejecuta un determinado mandato de inicio o fin de sesión. Los nombres de clase de estos mandatos se especifican en el archivo de propiedades raíz_PortalServer>/shared/app/config/services/ConfigService.properties con los valores predeterminados: command.login = LoginUserAuth y command.logout = LogoutUserAuth
La vía de búsqueda de paquetes para estos mandatos se especifica como una lista separada por comas en el archivo de propiedades <raíz_PortalServer>/shared/app/config/services/LoaderService.properties con los valores predeterminados:
command.path = com.ibm.wps.engine.commands
3. Coloque el archivo customlogin.jar, necesario para los programas de utilidad relacionados con LDAP, en la carpeta <raíz_PortalServer>/shared/app.
4. Coloque el archivo ibmjndi.jar, necesario para los programas de utilidad relacionados con LDAP, en la carpeta <raíz_PortalServer>/shared/app.
5. A continuación, compruebe que la nueva clase se encuentra en la vía de acceso de clase del portal y añada el paquete de mandatos como primera entrada en command.path de LoaderService.properties
Por ejemplo: command.path=com.ibm.ccd.ui.services.user, com.ibm.wps.engine.commands
6. Edite el archivo "Login.jsp" de la carpeta <raíz_AppServer>/installedApps/<nombre_sistPpal>/wps.ear/wps.war/screens/html añadiendo los campos necesarios. Por ejemplo, el fragmento de código siguiente añade un campo "Company" a la pantalla de inicio de sesión; elimine o transforme en comentario el fragmento del código del botón Cancelar, ya que no es necesario.
<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. Añada las entradas relacionadas con nls de Login.jsp al archivo de propiedades ubicado en <raíz_PortalServer>/shared/app/nls/field.properties.
Por ejemplo: company = Company
8. Añada los mensajes de error relacionados con Login.jsp del archivo de propiedades ubicado en <raíz_PortalServer>/shared/app/nls/problem.properties
9. Añada las entradas siguientes para el portal de proveedor:
(a) login.invalid.userStatus = Este usuario no está activo. Póngase en contacto con el administrador del sistema.
(b) login.invalid.company = Este usuario no pertenece a esta empresa. Por favor, compruébelo.
(c) ldap.not.configured = Error en el servicio de autenticación LDAP. Póngase en contacto con el administrador del sistema.
Siga estos pasos para configurar correctamente la integración de Product Center con Portal Server.
1. Establezca los valores de soap_company, soap_user y trigo_web_url en common.properties.
a) soap_company es el nombre de la empresa de Product Center en uso.
b) soap_user siempre es Admin
c) trigo_web_url será http://<direcciónIP>:<puerto>
2. Monte el directorio public_html.
3. Aumente la frecuencia del daemon mountmgr de common.properties a 1000.
4. Cambie los detalles de FTP de la tabla de búsqueda de Portal_Config. Se proporcionan valores de ejemplo.
5. ftpDir (en Portal_Config) debe estar bajo el directorio raíz del servidor FTP.
6. Haga grabable el archivo de la ubicación /public_html/WEB-INF/server-config.wsdd.
7. Importe primero el archivo PORTAL_LKP.ZIP.
8. A continuación importe PORTAL_NON_LKP.ZIP.
9. Después de estos pasos, reinicie el servidor.
10. En el caso de Web Logic, asegúrese de guardar el servicio web después de cambiar el bloque siguiente:
<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>
por
<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>
Al finalizar este capítulo, debe haber completado las tareas siguientes:
En este capítulo se describen los pasos para crear un portlet para Product Center; un portlet de Product Center llamado WorkWithItem (trabajo con artículos) servirá como ejemplo.
Se presuponen conocimientos básicos sobre el desarrollo y prueba de portlets en IBM WebSphere Portal Server, y experiencia práctica con funciones de IBM WebSphere Studio Application Developer para el propósito de este capítulo. En este capítulo no se describe cómo crear un script de Product Center, necesario para dar servicio a la solicitud de portlet en el lado de Product Center. Información sobre cómo escribir estos scripts y alojarlos como servicios web no forma parte del contenido de este capítulo.
En los apartados siguientes se describen la infraestructura y el portlet que la utiliza. La infraestructura hace referencia al formato del XML para intercambio de datos y a un objeto de datos que representa este XML. Se necesitan, por lo tanto, clases que convierten de XML a Java y viceversa. Es necesario adjuntar un conjunto de métodos al mediador de Product Center para consumo del portlet.
Los artículos en Product Center se presentan en forma de catálogo de Product Center. Estos artículos se describen mediante una especificación de artículos. Esta especificación es una colección de atributos. Estos artículos se agrupan en categorías y éstas a su vez en subcategorías. Este árbol, que representa las categorías, también se llama jerarquía.
El portlet WorkWithItem ayuda a un usuario a trabajar con un artículo, y es necesario para llevar a cabo las tareas siguientes:
(a) Ver un artículo
(b) Crear un artículo
(c) Modificar un artículo
(d) Clonar un artículo
(e) Suprimir un artículo
La función básica del portlet de trabajo con artículos es ver, crear, modificar, clonar y suprimir un elemento en el catálogo. Para realizar estas acciones, el portlet debe intercambiar datos con Product Center en formato XML a través de un servicio web. Es decir, para cada acción realizada en un portlet, se envía una solicitud en formato XML a Product Center y se devuelve una respuesta en formato XML después de su proceso en Product Center.
Por ejemplo, para recuperar un detalle de artículo, el XML de solicitud se muestra a continuación:
Tabla 1: XML de solicitud de 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>
El mandato de acción es obtener los detalles del artículo y la modalidad de llamada es SYNC/ASYNC. Estas modalidades determinan si la API de servicio web invocada en Product Center funcionará en modalidad síncrona o asíncrona. En esta solicitud determinada, los campos ItemID, CatalogName y ParentCategory son campos obligatorios para obtener los detalles de un artículo.
El XML de respuesta correspondiente a los detalles de un artículo es una colección de atributos de ese artículo, y se muestra a continuación:
Tabla 2 : XML de respuesta de 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>
Basado en la estructura del XML de solicitud y de respuesta, un objeto de datos se define para representar los datos en el mediador de Product Center. Esta conversión de un objeto de datos a una cadena XML y viceversa se realiza en la capa del mediador de Product Center.
Por ejemplo, en el portlet de trabajo con artículos, el artículo de Product Center está contenido en la clase "CatalogItem", que tiene una colección de atributos.
El generador y analizador XML ayuda a convertir la representación de Java del artículo de Product Center a XML y viceversa. CatalogItemGenerator construye un XML de solicitud de Product Center. La generación de XML es específica de mandato; el mandato, en este caso, es la recuperación de los detalles del artículo. Este XML se llena con los valores de entrada que proporciona el usuario, y estos valores se capturan desde el objeto de solicitud del portlet.
El código que se ofrece a continuación es un ejemplo de XML generado para la operación de recuperación de detalles de artículos.
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 analiza el contenido de XML de respuesta de Product Center en el objeto de datos de los artículos del catálogo.
public class CatalogItemParser {
public static ICatalogItem prepareItem(
Element specElement,
Element tradeItemElement) {
// preparar las espec..
ICatalogItem item = getCatalogSpecItem(specElement);
// llenar el artículo de valores de atributos
prepareItem(item, tradeItemElement);
return item;
}
}
}
Los portlets sólo deben interactuar con la capa de mediador en todo tipo de intercambio de datos con Product Center. A cambio, el mediador debe tener todos los métodos que las clases de portlets necesitan para llevar a cabo las operaciones necesarias relacionadas con la invocación de servicios web de Product Center. El portlet representa el requisito funcional y las operaciones relacionadas con la interacción de los usuarios. En nuestro ejemplo de portlet de trabajo con artículos, el portlet necesita:
(a) Ver un artículo
(b) Crear un artículo
(c) Modificar un artículo
(d) Clonar un artículo
(e) Suprimir un artículo
De esta manera, a la capa de mediador deben añadirse métodos, de los que se espera que realicen lo siguiente:
(1) Cargar la dirección URL SOAP correspondiente a la llamada al servicio web.
(2) Crear XML de solicitud para esa llamada de método.
(3) Invocar la dirección URL SOAP para iniciar llamadas SYNC/ASYNC.
(4) Recibir XML de respuesta e interpretarlo.
(5) Si la operación es correcta, convertir XML de respuesta en los objetos de datos apropiados.
(6) Si la operación no es correcta, pasar la información del error al portlet en forma de bean de notificación. Debe generarse una excepción WPCMediator.
Por ejemplo, el método para recuperar CatalogItem en el mediador será algo parecido a lo que se muestra a continuación:
public ICatalogItem getCatalogItem(
String parentCgyID,
String catalogID,
String itemID,
WPSContext context)
throws WPCMediatorException {
try {
// obtener las
espec. de artículo.
item = getCatalogItem(parentCgyID, catalogID, context);
//crear XML de
solicitud del artículo para recuperar datos
String itemReqXML =
CatalogItemGenerator.prepareItemDetailsRequestXML(
parentCgyID,
catalogID,
itemID);
// llamar a soapHelper
Element itemElement = wsHelper.getCatalogItemXML(itemReqXML, user);
// preparar el
artículo mediante el análisis de resultados
CatalogItemParser.prepareItem(item, itemElement);
return item;
} catch (WPCMediatorException wpce) {
if (DEBUG) wpce.printStackTrace();
throw wpce;
}
}
En el siguiente ejemplo, el mediador delega la llamada a la clase WSHelper que creará el XML de solicitud e invocará la dirección 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();
}
Como se muestra en este ejemplo, el método getCatalogItem() recibe el XML de respuesta y
lo pasa a CatalogItemParser que lo convierte en el objeto CatalogItem.
XMLHelper genera el XML completo de todas las llamadas.
En resumen, los pasos genéricos seguidos por cualquier operación de mediador son los siguientes:
Portlet > WPCMediator > WSHelper > SoapInvoker >API de Axis
Consulte la ubicación siguiente para obtener detalles sobre el desarrollo y despliegue de un portlet en WebSphere Portal Server:
<raíz_PortalServer>\doc\en\InfoCenter\index.html.
El portlet de Product Center invoca la llamada al mediador de Product Center adecuado y decide el mensaje que necesita mostrar al usuario final como resultado de la invocación. Añada estos mensajes a la colección de mensajes mediante las API que se proporcionan para este propósito.
Las JSP, que representan las diversas pantallas del portlet actual, deben incluir el código personalizado que ayuda a visualizar el contenido de estos mensajes de usuario.
<wpctags:uimessages/>
Modifique los archivos de configuración como soapactionurls.xml de modo que apunten a la URL SOAP apropiada. A continuación se muestra el archivo de configuración de ejemplo:
<soap-url action="<nombre acción>">http://<nombre servidor>:<puerto
servidor>/services/<nombre servicio></soap-url>
<soap-url action="ADD">http://9.184.114.58:9999/services/wpc_portal_integrated_dev
</soap-url>
En este capítulo se describen los pasos para instalar y configurar el portal de proveedor en Product Center.
Debe instalar como parte del entorno el software siguiente:
En este paso se describe cómo desplegar el portal de proveedor.
1. Abra el indicador de mandatos, vaya a <raíz_AppServer>\bin y detenga el servidor mediante el mandato:
stopServer WebSphere_Portal -username wpsbind -password wpsbind
2. Abra la herramienta de administración web de Directory Server con la dirección URL http://localhost:9080/IDSWebApp/IDSjsp/Login.jsp e inicie sesión con las credenciales siguientes:
Nombre de sistema principal LDAP : localhost
Nombre de usuario : cn=root
Contraseña : password
3. Detenga la herramienta de administración web.
4. En el indicador de mandatos, vaya a "raíz_DirectoryServer\appsrv\bin" y detenga el servidor LDAP mediante el mandato siguiente:
stopServer server1 -username wpsbind -password wpsbind
5. Descargue el archivo zip con la aplicación y extraiga el contenido. Debe contener el archivo JAR "customlogin.jar[I2]". Estos archivos también están disponibles en el CD de instalación de Product Center.
6. Añada customlogin.jar y ibmjndi.jar a la carpeta <raíz_PortalServer>\shared\app.
7. En el indicador de mandatos, vaya a "raíz_DirectoryServer\appsrv\bin" e inicie el servidor LDAP mediante el mandato siguiente:
startServer server1 -username wpsbind -password wpsbind
8. Abra la herramienta de administración web de Directory Server con la dirección URL http://localhost:9080/IDSWebApp/IDSjsp/Login.jsp e inicie sesión con las credenciales siguientes:
Nombre de sistema principal LDAP : localhost
Nombre de usuario : cn=root
Contraseña : password
9. Inicie la herramienta de administración web.
10. Abra el indicador de mandatos, vaya a "raíz_AppServer\bin" e inicie Portal Server
mediante el mandato:
startServer WebSphere_Portal -username wpsbind -password wpsbind
11. Inicie sesión con admin/admin/ibm.
12. Vaya a Administración -> Portlets > Gestionar aplicaciones.
13. Desinstale la versión anterior de la aplicación, si la hubiera.
14. Instale la versión actual de la aplicación y añada los portlets a las páginas necesarias.
15. Asigne permisos de usuario a los portlets, como sea preciso.
En este paso, se personaliza el ID de usuario para el portal de proveedor. Se ofrece un diseño, aspecto y estilo predeterminados para el portal.
Como parte de la personalización del portal, cree las etiquetas siguientes en el portal, como se muestra en la figura 1:
Figura 1
Instale los temas y skins para la aplicación.
1. Extraiga el archivo "themes.zip" en la carpeta <raíz_AppServer>\installedApps\<AppServer_HOST_NAME>\wps.ear\wps.war\themes\html
2. Extraiga el archivo "skins.zip" en la carpeta <raíz_AppServer>\installedApps\<AppServer_HOST_NAME>\wps.ear\wps.war\skins\html
3. Inicie sesión en Portal Server como administrador.
4. Pulse en el enlace de administrador de la parte superior derecha.
5. Vaya a Interfaz de usuario del portal -> Temas y skins.
6. Pulse en el enlace Añadir nuevo tema.
7. Especifique el nombre y el directorio del tema nuevo como "WPC_Default_theme". Pulse Guardar.
8. Pulse en el enlace Añadir nuevo skin.
9. Especifique el nombre y el directorio del skin nuevo como "WPC_Default_skin". Pulse Guardar.
Organice los portlets en diversas pestañas, como se muestra a continuación:
Pestaña Inicio |
|
Pestaña Buscar |
|
Pestaña Crear/editar artículo |
|
Pestaña Edición masiva |
|
Pestaña Subir |
|
Pestaña Registro |
|
Siga estos pasos para añadir portlets a una pestaña.
1. Inicie sesión en Portal Server como administrador.
2. Pulse en el enlace Administrador de la parte superior derecha.
3. Vaya a Interfaz de usuario del portal > Gestionar páginas.
4. Seleccione el botón Editar diseño de página de la página adecuada situado en el lateral derecho de la pantalla.
5. Añada los portlets pertinentes a la página.
6. Repita los pasos (4) y (5) para todas las pestañas mencionadas previamente.
1. Inicie sesión en Portal Server como administrador.
2. Pulse en el enlace Administrador de la parte superior derecha.
3. Vaya a Acceso -> Permisos de recursos.
4. Seleccione el botón Asignar acceso del enlace Mi portal; proporcione acceso Todos los usuarios autenticados en la pantalla Editar rol y pulse Aceptar.
5. De la misma manera, proporcione acceso de usuario anónimo a la página de registro como se explica en el paso (4).
1. Realice los siguientes cambios relacionados con el fin de sesión en el archivo de configuración siguiente.
<raíz_PortalServer>/shared/app/config/services/ConfigService.properties
# Logout redirect parameters
redirect.logout = true
redirect.logout.url = /wps/myportal
Los cambios anteriores redirigen el portal a la página Inicio de sesión al hacer clic en el enlace de fin de sesión.
2. Realice los siguientes cambios relacionados con el fin de sesión en los archivos de configuración siguientes.
<raíz_PortalServer>/shared/app/nls/engine_en.properties
<raíz_PortalServer>/shared/app/nls/engine.properties
Edite las entradas siguientes para cambiar los nombres de enlace de "Register", "Login" y "Logout".
link.enrollment = Register
link.login = Sign in
link.logout = Sign out
Añada estas dos entradas, que muestran el mensaje de bienvenida personalizado.
default_welcome = Welcome!
login_welcome = Welcome, {0}
3. Realice los siguientes cambios relacionados con el botón de fin de de sesión en el archivo de configuración siguiente.
<raíz_PortalServer>/shared/app/nls/button_en.properties
<raíz_PortalServer>/shared/app/nls/button.properties
Edite la entrada siguiente para cambiar el nombre de enlace 'Login'.
login = Sign in
Durante la instalación y configuración del portal de proveedor, se modifican unos pocos archivos de configuración específicos de Portal Server y específicos de la aplicación de portal de proveedor. A continuación se proporciona una breve descripción de estos archivos.
<raíz_PortalServer>/config/wpconfig.properties
<raíz_PortalServer>/wmm/wmmLDAPServerAttributes.xml
<raíz_PortalServer>/shared/app/config/services/ConfigService.properties
<raíz_PortalServer>/shared/app/config/services/LoaderService.properties
<raíz_PortalServer>/shared/app/nls/field.properties
<raíz_PortalServer>/shared/app/nls/problem.properties
<raíz_PortalServer>/shared/app/nls/engine.properties
<raíz_PortalServer>/shared/app/nls/button.properties
Archivos de configuración específicos de la aplicación de portal de proveedor:
<raíz_aplicación>/WebContent/WEB-INF/config/soapactionurls.xml
<raíz_aplicación>/WebContent/WEB-INF/config/timezonevalues.xml
<raíz_aplicación>/WebContent/WEB-INF/config/catalog_configuration.xml
<raíz_aplicación>/WebContent/WEB-INF/config/portletActions2pages.xml
Al finalizar este capítulo, debe haber completado las tareas siguientes:
En este capítulo se proporciona información sobre:
La estructura general de un portlet se muestra en la siguiente figura. Al usuario se le informa sobre el estado de una transacción en el área del mensaje. El usuario interactúa con el área activa y el área de botones de acción.
A continuación se ofrece una lista de los portlets para los escenarios de usuario disponibles:
Registro de usuario
a. En la página de inicio de sesión, pulse en el enlace de registro.
b. Se muestra el portlet de registro de usuarios.
c. El portlet de registro de usuarios muestra el GLN de proveedor y la dirección de correo electrónico. El usuario especifica esta información.
d. Pulse el botón Siguiente para validar el número GLN y la dirección de correo electrónico.
e. Una vez que el sistema los reconoce, se muestran los campos para la contraseña.
f. El sistema verifica que las contraseñas sean idénticas.
g. Aparece una pantalla con la información de aprobación de registro que se enviará al usuario; a continuación, el usuario puede iniciar sesión en el portal.
Aprobación de registro de usuarios - Proceso manual
a. Se trata de un proceso fuera de línea. El administrador de WebSphere Product Center debe aprobar a los usuarios registrados. De esta manera podrán iniciar sesión en el portal y trabajar con los portlets relacionados con WebSphere Product Center.
b. El administrador de WebSphere Product Center debe asignar una función al usuario registrado. Esta acción debe realizarse de forma manual en el almacén LDAP, compartido por Portal Server y WebSphere Product Center. De este modo, se autoriza al usuario realizar transacciones relacionadas con WebSphere Product Center.
Ver catálogo de artículos
a. Este portlet lista el catálogo de artículos en un formato estructurado de árbol. Este artículo es la hoja en este árbol de catálogo.
b. El usuario selecciona un catálogo al que puede añadir un artículo. Esta opción se muestra como un botón en el área de botones de acción.
c. El usuario selecciona un artículo para verlo, editarlo, clonarlo o suprimirlo. Estas opciones se muestran como botones en el área de botones de acción.
d. Estos botones son eficaces sólo en operaciones en un artículo.
e. El primer nivel de catálogos se recupera de WebSphere Product Center. Los nodos hijo (subcatálogos y artículos) se recuperan en función de la interacción del usuario; el usuario expande un nodo cuyo contenido se muestra por debajo. De esta manera, se reduce el volumen de datos que debe cargarse en un momento dado, pero se aumenta el número de llamadas a WebSphere Product Center para recuperar esta información.
Ver artículo existente
a. Seleccione un artículo en el portlet de catálogo de artículos y pulse el botón Ver artículo. Se muestran los detalles del artículo en el portlet de trabajo con artículos. El contenido se muestra en modalidad de sólo lectura.
Añadir artículo nuevo
a. Seleccione un catálogo en el portlet de catálogo de artículos y pulse el botón Añadir artículo. Se muestra el contenido del artículo en el portlet de trabajo con artículos de modo que el usuario pueda especificar la información del artículo. La operación de añadir agrega el artículo especificado al catálogo seleccionado.
b. Este proceso de creación de artículos también puede iniciarse pulsando el botón Añadir artículo en el portlet de trabajo con artículos. Esto crea un artículo en un catálogo no asignado.
c. Las validaciones relacionadas con la entrada del artículo se realizan al enviarla. El primer nivel de validaciones se lleva a cabo conforme a la metainformación de atributos recibida de WebSphere Product Center. Estas validaciones son por norma comprobaciones de tipo y de rango. Las validaciones no se realizan como parte de una comprobación de nivel de JavaScript.
d. El usuario también puede optar por cancelar la operación. El portlet recupera su estado inicial.
Actualizar artículo existente
a. Seleccione un artículo en el portlet de catálogo de artículos y pulse el botón Actualizar. Se muestra el contenido del artículo en el portlet de trabajo con artículos de modo que el usuario pueda especificar la información de actualización del artículo.
b. Este proceso de actualización de un artículo también se puede iniciar si busca y selecciona un artículo y pulsa el botón para trabajar con artículos en los resultados de la búsqueda. Esto llena el portlet de trabajo con artículos con información sobre el artículo. A continuación, el usuario puede pulsar el botón Actualizar para empezar a trabajar con este artículo.
c. Este proceso de actualización de artículos también puede iniciarse si selecciona el artículo en el portlet de catálogo de artículos y pulsa Ver artículo. Esto llena de información el portlet de trabajo con artículos. Acto seguido, el usuario puede pulsar el botón Actualizar. El contenido se muestra en modalidad de edición.
d. Las validaciones relacionadas con la entrada del artículo se realizan al enviarla. El primer nivel de validaciones se lleva a cabo conforme a la metainformación de atributos recibida de WebSphere Product Center. Estas validaciones son por norma comprobaciones de tipo y de rango. Las validaciones no se realizan como parte de una comprobación de nivel de JavaScript.
e. El usuario también puede optar por cancelar la operación. El portlet recupera su estado inicial.
Clonar artículo
a. Seleccione un artículo en el portlet de catálogo de artículos y pulse el botón para clonar artículos. Se crea una copia del contenido del artículo en el portlet de trabajo con artículos de modo que el usuario pueda llevar a cabo la operación de copia de artículos.
b. Este proceso de clonación de un artículo también se puede iniciar si busca y selecciona un artículo y pulsa el botón para trabajar con artículos en los resultados de la búsqueda. Esto llena el portlet de trabajo con artículos con información sobre el artículo. A continuación, el usuario puede pulsar el botón Clonar y trabajar con el artículo.
c. Este proceso de clonación de artículos también puede iniciarse si selecciona el artículo en el portlet de catálogo de artículos y pulsa Ver artículo. Esto llena de información el portlet de trabajo con artículos. Acto seguido, el usuario puede pulsar el botón Clonar. El contenido se muestra en modalidad de edición.
d. Las validaciones relacionadas con la entrada del artículo se realizan al enviarla. El primer nivel de validaciones se lleva a cabo conforme a la metainformación de atributos recibida de WebSphere Product Center. Estas validaciones son por norma comprobaciones de tipo y de rango. Las validaciones no se realizan como parte de una comprobación de nivel de JavaScript.
e. El usuario también puede optar por cancelar la operación. El portlet recupera su estado inicial.
Eliminar un artículo existente
a. Seleccione un artículo en el portlet de catálogo de artículos y pulse el botón Suprimir artículo. Se muestra el contenido del artículo en el portlet de trabajo con artículos de modo que el usuario puede llevar a cabo la operación de supresión. El contenido del artículo se muestra en modalidad de lectura.
b. Este proceso de supresión de un artículo también se puede iniciar si busca y selecciona un artículo y pulsa el botón para trabajar con artículos en los resultados de la búsqueda. Esto llena el portlet de trabajo con artículos con información sobre el artículo. A continuación, el usuario puede pulsar el botón para suprimir el artículo.
c. Este proceso de supresión de artículos también puede iniciarse si selecciona el artículo en el portlet de catálogo de artículos y pulsa Ver artículo. Esto llena de información el portlet de trabajo con artículos. Acto seguido, el usuario puede pulsar el botón Suprimir.
d. El usuario también puede optar por cancelar la operación. El portlet recupera su estado inicial.
Búsqueda de artículo
a. El portlet de búsqueda muestra inicialmente los valores del criterio de búsqueda: GTIN (número mundial de artículo comercial), GLN (número mundial de localización), mercado objetivo, estado del producto (aprobado, rechazado, borrador, etc.), SKU (Núm. de código de artículo), precio, artículo o jerarquía de retorno. El usuario puede llevar a cabo una búsqueda con comodines.
b. Los criterios de búsqueda proporcionan una opción de rango que son de tipo de número o fecha. Por ejemplo, el criterio de precio puedes ser mayor que 100 dólares, pero menor que 500 dólares.
c. Los criterios de búsqueda guardan los últimos 10 criterios de búsqueda utilizados por el usuario, en formato de lista. Al pulsar en este enlace se lleva a cabo la búsqueda conforme a los criterios especificados.
d. Los resultados de la búsqueda se muestran en el mismo portlet, por debajo de los criterios de búsqueda. Los resultados de búsqueda devueltos se muestran de acuerdo con el tamaño de desplazamiento específico del usuario. Este valor se puede establecer mediante la opción de edición del portlet. WebSphere Product Center controla el tamaño del resultado de la búsqueda, y lo hace principalmente desde la perspectiva de rendimiento de la búsqueda. El portlet controla la aparición de los resultados de búsqueda, principalmente desde una perspectiva de experiencia del usuario.
e. El usuario puede seleccionar un solo artículo en los resultados de búsqueda y pulsar en el botón para trabajar con artículos. Esto mueve la información del artículo al portlet de trabajo con artículos.
f. El usuario puede seleccionar varios artículos en los resultados de búsqueda y pulsar en el botón para trabajar con artículos. Esto mueve los artículos al portlet de actualización masiva de artículos .
Carga masiva
a. El portlet de carga masiva proporciona una interfaz de navegador de archivos para cargar un archivo CSV (valores separados por comas) desde la máquina de un usuario a WebSphere Product Center.
b. Como se trata de una larga transacción desde la perspectiva de WebSphere Product Center, esta interacción será asíncrona. El archivo CSV se sube a WebSphere Product Center, y se informa al usuario de los resultados de la transacción a través de un mensaje en el portal o a través de correo electrónico.
Actualización masiva
a. El usuario realiza una búsqueda de artículos mediante el portlet de búsqueda. Selecciona los artículos que se muestran en los resultados de la búsqueda y pulsa en el botón para trabajar con artículos.
b. Esto transfiere el contenido de los artículos seleccionados al portlet de actualización masiva de artículos. A continuación, el usuario puede llevar a cabo una actualización masiva de artículos, para un conjunto seleccionado de atributos.
Como formato de mensaje se ha elegido algo similar al formato de mensaje UCCNet. El envoltorio se compone de un encabezamiento y cuerpo. El encabezamiento contiene información que se utiliza para identificar detalles del remitente y del receptor, así como un identificador de mensaje exclusivo. El cuerpo contiene el mandato que se va a ejecutar e información relacionada en caso de mensaje de solicitud, y en caso de mensaje de respuesta contendrá los detalles de la respuesta.
Existen dos formas de gestionar las transacciones de mensajes entre Portal Server y Product Center: síncrona y asíncrona.
Estructura de los documentos
<envelope>
<wpcHeader>
<!— companyName. Por omisión, el ID de
usuario y la empresa en WPC se obtienen del contexto de script respectivo. Éste es un
tipo de campo sólo para su información por ahora -->
< companyName></ companyName>
<!—UserID. Por omisión, el ID de usuario y
la empresa en WPC se obtienen del contexto de script respectivo. Éste es un tipo de campo
sólo para su información por ahora -->
< userID></ userID>
<!--messageIdentifier identifica de
forma exclusiva cada mensaje-->
< messageIdentifier></
messageIdentifier>
<!—indicación de la hora a la que se
envió el mensaje -- >
<timestamp></timestamp>
<!—ID del proveedor del usuario de WPS -- >
<supplierId></supplierId>
</wpcHeader>
<wpcBody>
< wpcCommand type=ADD mode=SYNC
>
………...
</wpcCommand>
</wpcBody>
</envelope>
El atributo “type” del elemento wpcCommand puede tener el valor como ADD/MODIFY/DELETE/SEARCH/ QUERY_TRANSACTION/etc... Este campo decide la operación que debe realizarse. El atributo “mode” de wpcCommand decide la modalidad en que debe ejecutarse la operación. Puede ser SYNC o ASYNC.
En modalidad SYNC, el documento XML de solicitud se procesa y el documento XML de respuesta respectivo se genera y se envía inmediatamente.
En modalidad ASYNC, cuando se recibe el documento XML de solicitud y se confirma su validez y que la estructura es correcta, se envía un ID de transacción al llamante. A partir de entonces, el llamante puede sondear en cualquier momento el estado de la transacción solicitada mediante el ID de transacción.
Para añadir un artículo del catálogo al portal de Product Center, debe enviarse el siguiente esquema de mensaje con los datos adecuados. El distintivo de modalidad debe ser “SYNC” si desea obtener respuesta inmediatamente, si no, opte por “ASYNC”.
<envelope>
<wpcHeader>
<!— companyName. Por omisión, el ID de
usuario y la empresa en WPC se obtienen del contexto de script respectivo. Éste es un
tipo de campo sólo para su información por ahora -->
< companyName></ companyName>
<!—UserID. Por omisión, el ID de usuario y
la empresa en WPC se obtienen del contexto de script respectivo. Éste es un tipo de campo
sólo para su información por ahora -->
< userID></ userID>
<!--messageIdentifier identifica de forma
exclusiva cada mensaje-->
< messageIdentifier></
messageIdentifier>
</wpcHeader>
<wpcBody>
< wpcCommand type=ADD mode=SYNC
>
<wpcCatalogItem>
………...
</wpcCatalogItem>
</wpcCommand>
</wpcBody>
</envelope>
La respuesta respectiva de Product Center debería ser:
<envelope> <wpcHeader> <!— companyName. Por omisión, el ID de usuario y la empresa en WPC se obtienen del contexto de script respectivo. Éste es un tipo de campo sólo para su información por ahora --> < companyName></ companyName> <!—UserID. Por omisión, el ID de usuario y la empresa en WPC se obtienen del contexto de script respectivo. Éste es un tipo de campo sólo para su información por ahora --> < userID></ userID> <!--identifica de forma exclusiva cada mensaje--> < messageIdentifier></ messageIdentifier> </wpcHeader> <wpcBody> < wpcResponse> < wpcEntityIdentifier> <!—messageidentifier valor del mensaje de solicitud --!> < wpcMessageIdentifier > </ wpcMessageIdentifier > <!—ID de transacción WPC creado para el mensaje de solicitud --!> < wpcTransactionID ></ wpcTransactionID > </ wpcEntityIdentifier> < wpcNotification > < notificationInfo type=”SUCCESS” > < notificationCode >000</ notificationCode > <notificationMessage>SUCCESS</notificationMessage> </ wpcResponse> </wpcBody> </envelope>
En caso de que se encuentre un atributo “type” de notificationInfo que contenga errores con el valor “ERROR” o “WARNING”, el código de notificación tendrá el código de error y notificaitonMessage tendrá el mensaje de error respectivo asociado. Esto se aplica a todos los mensajes que se envíen desde el portal. En caso de una solicitud de selección o de búsqueda, wpcResponse tendrá el bloque wpcCatalogueItem como parte de la respuesta, que es el resultado de la selección o búsqueda en caso de una solicitud en modalidad SYNC.
En caso de un mensaje de solicitud en modalidad ASYNC, la solicitud enviada debería ser así:
<envelope>
<wpcHeader>
<!— companyName. Por omisión, el ID de
usuario y la empresa en WPC se obtienen del contexto de script respectivo. Éste es un
tipo de campo sólo para su información por ahora -->
< companyName></ companyName>
<!—UserID. Por omisión, el ID de usuario y
la empresa en WPC se obtienen del contexto de script respectivo. Éste es un tipo de campo
sólo para su información por ahora -->
< userID></ userID>
!--messageIdentifier identifica de forma
exclusiva cada mensaje-->
< messageIdentifier></ messageIdentifier>
</wpcHeader>
<wpcBody>
< wpcCommand type=ADD mode=”ASYNC”>
<!— en caso de operaciones masivas de artículos, se utilizará el
bloque siguiente --!>
<!—el tipo de archivo soportado es CSV --!>
<wpcDataContainer fileType=”CSV”>
<serverName></serverName>
<userName></userName>
<password></password>
<dataDir></dataDir>
<fileName></filename>
</wpcCommand>
</wpcBody>
</envelope>
La respuesta debería ser así:
<envelope>
<wpcHeader>
<!— companyName. Por omisión, el ID de
usuario y la empresa en WPC se obtienen del contexto de script respectivo. Éste es un
tipo de campo sólo para su información por ahora -->
< companyName></ companyName>
<!—UserID. Por omisión, el ID de usuario y
la empresa en WPC se obtienen del contexto de script respectivo. Éste es un tipo de campo
sólo para su información por ahora -->
< userID></ userID>
<!--messageIdentifier identifica de forma
exclusiva cada mensaje-->
< messageIdentifier></ messageIdentifier>
</wpcHeader>
<wpcBody>
< wpcResponse>
< wpcEntityIdentifier>
<!—messageidentifier valor del mensaje de solicitud --!>
< wpcMessageIdentifier > </ wpcMessageIdentifier >
<!—ID de transacción WPC creado para el mensaje de solicitud --!>
< wpcTransactionID ></ wpcTransactionID >
</ wpcEntityIdentifier>
< wpcNotification >
< notificationInfo type=”PROCESSING” >
< notificationCode >999</ notificationCode >
<notificationMessage>PROCESSING</notificationMessage>
</ wpcResponse>
</wpcBody>
</envelope>
El portal debería continuar sondeando Product Center para verificar la finalización de la transacción. Esta operación la realiza este mensaje:
<envelope>
<wpcHeader>
<!— companyName. Por omisión, el ID de
usuario y la empresa en WPC se obtienen del contexto de script respectivo. Éste es un
tipo de campo sólo para su información por ahora -->
< companyName></ companyName>
<!—UserID. Por omisión, el ID de usuario y
la empresa en WPC se obtienen del contexto de script respectivo. Éste es un tipo de campo
sólo para su información por ahora -->
< userID></ userID>
<!--messageIdentifier identifica de forma
exclusiva cada mensaje-->
< messageIdentifier></ messageIdentifier>
</wpcHeader>
<wpcBody>
< wpcCommand type=”QUERY_TRANSACTION” mode=”ASYNC”>
< wpcEntityIdentifier>
<!—messageidentifier valor del mensaje de solicitud --!>
< wpcMessageIdentifier > </ wpcMessageIdentifier >
<!—ID de transacción WPC creado para el mensaje de solicitud --!>
< wpcTransactionID ></ wpcTransactionID >
</ wpcEntityIdentifier>
</wpcCommand>
</wpcBody>
</envelope>
La respuesta respectiva de finalización correcta de la operación en Product Center es como se muestra a continuación:
<envelope>
<wpcHeader>
<!— companyName. Por omisión, el ID de
usuario y la empresa en WPC se obtienen del contexto de script respectivo. Éste es un
tipo de campo sólo para su información por ahora -->
< companyName></ companyName>
<!—UserID. Por omisión, el ID de usuario y
la empresa en WPC se obtienen del contexto de script respectivo. Éste es un tipo de campo
sólo para su información por ahora -->
< userID></ userID>
<!--messageIdentifier identifica de forma
exclusiva cada mensaje-->
< messageIdentifier></ messageIdentifier>
</wpcHeader>
<wpcBody>
< wpcResponse>
< wpcEntityIdentifier>
<!—messageidentifier valor del mensaje de solicitud --!>
< wpcMessageIdentifier > </ wpcMessageIdentifier >
<!—ID de transacción WPC creado para el mensaje de solicitud --!>
< wpcTransactionID ></ wpcTransactionID >
</ wpcEntityIdentifier>
< wpcNotification >
< notificationInfo
type=”SUCCESS” >
< notificationCode >000</ notificationCode >
<notificationMessage>SUCCESS</notificationMessage>
</ wpcResponse>
</wpcBody>
</envelope>
En caso de que la solicitud se procesase, la respuesta será igual que la enviada inmediatamente después de que Product Center recibiera la solicitud ASYNC.
En este apartado se identifican el script y los servicios web implicados en la integración del portal.
wpc_portal_integrated_dev
Script de implementación de servicio 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
En los apartados siguientes encontrará mensajes XML de ejemplo y scripts respectivos para invocar los mandatos dados.
La solicitud dada añadirá el artículo y devolverá una respuesta de operación satisfactoria o un error.
//
para invocar el mensaje de añadir artículo
<?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 solicitud dada que se muestra a continuación modificará el artículo con la clave primaria dada.
// para
invocar el mensaje de modificar artículo
<?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>
Para suprimir el artículo dado con la clave primaria dada.
//
para invocar el mensaje de suprimir el artículo
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("<respective
webservice URL>",strXML);
var respLog = createOtherOut("Response.xml"); // Esto tendrá el
ID de transacción. Compruebe /scripts/soap/messages/response/<TXN_ID> para la
respuesta real.
respLog.writeln(resp);
respLog.save("Response.xml");
Es posible utilizar todo tipo de parámetros de búsqueda posibles en una selección avanzada en este mensaje de búsqueda. Consulte WSDL para obtener más formatos de mensajes para cada criterio de búsqueda.
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("<respective
webservice URL>",strXML);
var respLog = createOtherOut("Response.xml"); // Esto tendrá el ID
de transacción. Compruebe /scripts/soap/messages/response/<TXN_ID> para la
respuesta real.
respLog.writeln(resp);
respLog.save("Response.xml");
Este mensaje devolverá las especificaciones primarias del catálogo dado. Si la información de categorías está presente y si hay especificaciones de categoría de artículos adjuntadas a esa categoría, dicha información se enviará como respuesta.
//
para invocar el mensaje 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("<respective
webservice URL>",strXML);
var respLog = createOtherOut("Response.xml"); // Esto tendrá el ID
de transacción. Compruebe /scripts/soap/messages/response/<TXN_ID> para la
respuesta real.
respLog.writeln(resp);
respLog.save("Response.xml");
Este mandato será procesado por la propia infraestructura del servicio web WPC y no por la implementación del script respectivo. La infraestructura del servicio web asignará un ID de transacción exclusivo a cada solicitud ASYNC. Cuando WPS envía el mensaje de detalles de la transacción de la consulta con el ID de transacción dado, la infraestructura enviará la respuesta generada por el script de implementación.
//
para invocar el mensaje 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>
Es un mensaje de sondeo que enviará un usuario en un intervalo regular para averiguar si el ID de transacción dado (mensaje ASYNC) está completo. Este mensaje también lo gestionará la infraestructura de servicios web y no los scripts de implementación.
//
para invocar el mensaje 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>
Subir archivo
Para subir el archivo enviado como archivo adjunto de servicio web, un script de implementación copiará el archivo subido en la carpeta supplier/ctg_files respectiva del almacén de documentos y enviará la vía del almacén de documentos actual.
//
para invocar el mensaje UPLOAD_FILE sin archivos adjuntos
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("<respective
webservice URL>",strXML);
var respLog = createOtherOut("Response.xml"); // Esto tendrá el ID
de transacción. Compruebe /scripts/soap/messages/response/<TXN_ID> para la
respuesta real.
respLog.writeln(resp);
respLog.save("Response.xml");
Antes de invocar este mandato, se utilizará el mandato de subir archivo para subir el archivo CSV con los datos necesarios; a continuación, el mensaje de importación se enviará junto con la vía del almacén de documentos del archivo subido y el script de implementación procesará la misma información para añadir o actualizar los registros respectivos.
//
para invocar el mensaje IMPORT sin archivos adjuntos
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("<respective
webservice URL>",strXML);
var respLog = createOtherOut("Response.xml"); // Esto tendrá el ID
de transacción. Compruebe /scripts/soap/messages/response/<TXN_ID> para la
respuesta real.
respLog.writeln(resp);
respLog.save("Response.xml");
Para obtener todos los atributos de artículos que incluyen la categoría específica, de ser aplicable.
//
para obtener el detalle de artículo
<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("<respective
webservice URL>",strXML);
var respLog = createOtherOut("Response.xml"); // Esto tendrá el ID
de transacción. Compruebe /scripts/soap/messages/response/<TXN_ID> para la
respuesta real.
respLog.writeln(resp);
respLog.save("Response.xml");
Este mensaje devolverá una respuesta de detalle de artículo sin valores para la clave primaria.
//
para invocar el mensaje de clonar artículo
// para obtener detalle de artículo
<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("<respective
webservice URL>",strXML);
var respLog = createOtherOut("Response.xml"); // Esto tendrá el ID
de transacción. Compruebe /scripts/soap/messages/response/<TXN_ID> para la
respuesta real.
respLog.writeln(resp);
respLog.save("Response.xml");
Este mandato devolverá como respuesta todas las categorías y artículos hijo de la categoría actual de un catálogo dado; también devolverá todas los artículos y las categorías hijo del árbol de categoría primaria de la categoría actual si no se proporciona información sobre el árbol de categorías en el mensaje de solicitud.
//
para invocar el mensaje 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("<respective
webservice URL>",strXML);
var respLog = createOtherOut("Response.xml"); // Esto tendrá el ID
de transacción. Compruebe /scripts/soap/messages/response/<TXN_ID> para la
respuesta real.
respLog.writeln(resp);
respLog.save("Response.xml");
Este mensaje obtendrá todos los catálogos disponibles actualmente en WPC y los enviará a través de éste como respuesta.
//
para invocar el tipo de mensaje 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("<respective
webservice URL>",strXML);
var respLog = createOtherOut("Response.xml"); // Esto tendrá el ID
de transacción. Compruebe /scripts/soap/messages/response/<TXN_ID> para la
respuesta real.
respLog.writeln(resp);
respLog.save("Response.xml");
Devuelve la vista especificada en la respuesta XML. En la actualidad, Product Center no utiliza este mensaje.
Devolverá la respuesta solicitada respectiva en forma de archivo adjunto.
//
para invocar el mensaje 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>
Puede que IBM no ofrezca los productos, servicios o características que se tratan en este documento en otros países. Póngase en contacto con el representante de IBM para obtener información sobre los productos y servicios actualmente disponibles en su área. Las referencias hechas a productos, programas o servicios IBM no pretenden afirmar ni dar a entender que únicamente puedan utilizarse dichos productos, programas o servicios IBM. Se puede utilizar en su lugar cualquier producto, programa o servicio funcionalmente equivalente que no infrinja ningún derecho de propiedad intelectual de IBM. No obstante, es responsabilidad del usuario evaluar y verificar el funcionamiento de cualquier producto, programa o servicio que no es de IBM.
IBM puede tener patentes o aplicaciones de patente pendientes que afecten a los temas tratados en este documento. La entrega de este documento no le otorga ninguna licencia sobre dichas patentes. Puede enviar las consultas sobre licencias, por escrito, a la siguiente dirección:
IBM Director of Licensing
IBM Corporation
North Castle Drive
Armonk, NY 10504-1785
EE.UU.
El párrafo siguiente no se aplica al Reino Unido ni a ningún otro país donde estas disposiciones sean incompatibles con la legislación vigente:
INTERNATIONAL BUSINESS MACHINES CORPORATION FACILITA ESTA PUBLICACIÓN TAL CUAL, SIN GARANTÍAS DE NINGÚN TIPO, NI EXPLÍCITAS NI IMPLÍCITAS, INCLUYENDO, PERO SIN LIMITARSE A, LAS GARANTÍAS IMPLÍCITAS DE NO INFRACCIÓN, COMERCIALIZACIÓN O ADECUACIÓN A UN FIN CONCRETO. Algunos estados o países no permiten la renuncia a las garantías explícitas o implícitas en ciertas transacciones, por tanto, es posible que esta declaración no resulte aplicable a su caso.
Esta información puede contener imprecisiones técnicas o errores tipográficos. Periódicamente se efectúan cambios en la información aquí contenida; dichos cambios se incorporarán en nuevas ediciones de la publicación. IBM se reserva el derecho a realizar, si lo considera oportuno, cualquier modificación en los productos o programas que se describen en esta publicación y sin notificarlo previamente.
Las referencias en este documento a sitios web que no sean de IBM se proporcionan únicamente como ayuda y no se consideran en modo alguno como aprobados por IBM. Los materiales de dichos sitios web no forman parte de este producto de IBM y la utilización de los mismos será por cuenta y riesgo del usuario.
IBM puede utilizar o distribuir la información que se le suministre de cualquier modo que considere adecuado sin incurrir por ello en ninguna obligación con el remitente.
Los titulares de licencias de este programa que deseen información sobre el mismo con el fin de permitir: (i) el intercambio de información entre programas creados independientemente y otros programas (incluido éste) y (ii) la utilización mutua de la información intercambiada, deben ponerse en contacto con:
IBM Burlingame Laboratory
Director IBM Burlingame Laboratory
577 Airport Blvd., Suite 800
Burlingame, CA 94010
EE.UU.
Dicha información puede estar disponible, sujeta a los términos y condiciones adecuados, incluido, en algunos casos, el pago de una tasa.
El programa bajo licencia que se describe en esta información, y todos los materiales bajo licencia disponibles para el mismo, los proporciona IBM bajo los términos del Acuerdo de licencia de cliente IBM, del Acuerdo internacional de programas bajo licencia de IBM o de cualquier acuerdo equivalente entre el cliente e IBM.
Cualquier información de rendimiento que aparezca en este documento ha sido determinada en un entorno controlado. Por lo tanto, los resultados obtenidos en otros entornos operativos podrían ser distintos. Algunas mediciones se han realizado en sistemas en fase de desarrollo y, por lo tanto, no hay ninguna garantía que estas mediciones sean las mismas en los sistemas normalmente disponibles. Además, algunas mediciones podrían haberse estimado mediante extrapolación. Los resultados reales podrían ser diferentes. Los usuarios de este documento deberían verificar los datos aplicables para su entorno específico.
La información relacionada con productos que no son de IBM se ha obtenido de los proveedores de dichos productos, de sus anuncios publicados o de otras fuentes de disponibilidad pública. IBM no ha comprobado estos productos y no puede confirmar la precisión de su rendimiento, compatibilidad ni contemplar ninguna otra reclamación relacionada con los productos que no son de IBM. Las preguntas relacionadas con las prestaciones de los productos que no son de IBM deberán dirigirse a los proveedores de estos productos.
En esta información aparecen ejemplos de datos e informes utilizados en operaciones empresariales diarias. Para ilustrarlos como realmente posibles, los ejemplos incluyen los nombres de individuos, empresas, marcas y productos. Todos estos nombres son ficticios y cualquier parecido con los nombres y direcciones utilizados por una empresa comercial real es pura coincidencia.
Todas las declaraciones acerca de planes e intenciones futuros de IBM están sujetos a cambios o pueden retirarse sin previo aviso, y únicamente reflejan objetivos y finalidades.
La información de la interfaz de programación, si se proporciona, está especialmente indicada para ayudarle a crear software de aplicación utilizando este programa.
Las interfaces de programación de uso general permiten crear software de aplicación que obtenga los servicios de las herramientas de este programa.
No obstante, la información también puede contener información de diagnóstico, modificaciones y ajustes. La información de diagnóstico, modificaciones y ajustes se proporciona para ayudarle a depurar el software de aplicación.
Aviso: no use esta información de diagnóstico, modificaciones y ajustes como una interfaz de programación, ya que está sujeta a posibles cambios.
Los términos siguientes son marcas comerciales o marcas registradas de International Business Machines Corporation en Estados Unidos y/o en otros países:
IBM
el logotipo de IBM
AIX
CrossWorlds
DB2
DB2 Universal Database
Domino
Lotus
Lotus Notes
MQIntegrator
MQSeries
Tivoli
WebSphere
Microsoft, Windows, Windows NT y el logotipo de Windows son marcas registradas de Microsoft Corporation en Estados Unidos y/o en otros países.
MMX, Pentium y ProShare son marcas comerciales o marcas de servicio de Intel Corporation en Estados Unidos y/o en otros países.
Java y todas las marcas registradas basadas en Java son marcas registradas de Sun Microsystems, Inc. en Estados Unidos y/o en otros países.
Los demás nombres de compañías, productos o servicios pueden ser marcas registradas o marcas de servicio de otras empresas.
IBM WebSphere Product Center contiene determinados Componentes Excluidos
(como se define en el documento de Información sobre Licencia
correspondiente), a los que se aplican los términos adicionales siguientes.
La licencia de este software se le proporciona bajo los términos del Acuerdo
Internacional de Programas bajo Licencia, sujeta a las cláusulas relativas a
los Componentes Excluidos. IBM debe proporcionarle los avisos siguientes en
relación con este software:
i.) IBM WebSphere Product Center incluye el software siguiente, bajo
licencia de IBM recibida de Apache Software Foundation bajo los términos y
condiciones de la licencia de Apache 2.0:
- Apache Regular Expression v1.2
- Apache Axis v1.1
- Apache XML4J v3.0.1
- Apache Log4j v1.1.1
- Apache Jakarta Commons DBCP Package v1.1
- Apache Jakarta Commons Pool Package v1.1
- Apache Jakarta Commons Collections Package v3.0
Apache 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
APÉNDICE: Cómo aplicar la licencia de Apache a su trabajo
Para aplicar la licencia de Apache a su trabajo, adjunte el siguiente modelo de
aviso y sustituya los campos entre corchetes "[]" por su
propia información de identificación. (No incluya los corchetes.)
El texto debe aparecer con la sintaxis de comentario correcta
para el formato de los archivos. También es recomendable incluir el nombre de
archivo o de clase y la descripción de la finalidad en la misma "página
impresa" que el aviso de copyright para que la identificación en los
paquetes archivados de terceros sea más fácil.
Copyright [yyyy] [nombre del propietario del 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 incluye el software siguiente, bajo licencia
de IBM recibida de Scott Hudson, Frank Flannery and C. Scott Ananian, bajo los
términos y condiciones siguientes:
- Cup Parser Generator v0.10k
CUP Parser Generator Copyright Notice,
License, and Disclaimer
Copyright 1996-1999 by Scott Hudson, Frank Flannery, C. Scott Ananian
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided that
the above copyright notice appear in all copies and that both the copyright
notice and this permission notice and warranty disclaimer appear in supporting
documentation, and that the names of the authors or their employers not be used
in advertising or publicity pertaining to distribution of the software without
specific, written prior permission. The authors and their employers disclaim
all warranties with regard to this software, including all implied warranties
of merchantability and fitness. In no event shall the authors or their
employers be liable for any special, indirect or consequential damages or any
damages whatsoever resulting from loss of use, data or profits, whether in an
action of contract, negligence or other tortious action, arising out of or in
connection with the use or performance of this software.
iii.) IBM WebSphere Product Center incluye el software siguiente, bajo
licencia de IBM recibida de Elliot Joel Berk y C. Scott Ananian, bajo los
términos y condiciones siguientes:
- JLex v1.2.6
JLEX COPYRIGHT NOTICE, LICENSE AND DISCLAIMER.
Copyright 1996-2003 by Elliot Joel Berk and C. Scott Ananian
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided that
the above copyright notice appear in all copies and that both the copyright
notice and this permission notice and warranty disclaimer appear in supporting
documentation, and that the name of the authors or their employers not be used
in advertising or publicity pertaining to distribution of the software without
specific, written prior permission. The authors and their employers disclaim
all warranties with regard to this software, including all implied warranties
of merchantability and fitness. In no event shall the authors or their employers be
liable for any special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether in an action of
contract, negligence or other tortious action, arising out of or in connection
with the use or performance of this software. Java is a trademark of
Sun Microsystems, Inc. References to the Java programming language in relation
to JLex are not meant to imply that Sun endorses this product.
iv.) IBM WebSphere Product Center incluye el software siguiente, bajo licencia
de IBM recibida de International Business Machines y otros, bajo los términos y
condiciones siguientes:
- ICU4J v2.8
Licencia de ICU - ICU 1.8.1 y versiones posteriores
AVISO DE COPYRIGHT Y AUTORIZACIÓN
Copyright (c) 1995-2003 International Business Machines Corporation y otros
Reservados todos los derechos.
Por el presente documento se otorga el permiso, sin cargo alguno, a cualquier
persona que obtenga una copia de este software y de los archivos de
documentación relacionados con el mismo (el "Software"), para
comerciar con el Software sin restricción alguna, incluidos, pero sin limitarse
a, los derechos para utilizar, copiar, modificar, fusionar, publicar,
distribuir o vender copias del Software, y para permitir ello mismo a aquéllos
a los que se les entregue el Software, siempre y cuando el aviso anterior de
copyright y este aviso de autorización aparezca en todas las copias del Software
y que tanto los avisos de copyright anteriores y este aviso de autorización
aparezcan en la documentación de soporte.
EL SOFTWARE SE PROPORCIONA TAL CUAL, SIN GARANTÍAS DE NINGÚN TIPO, NI
EXPLÍCITAS NI IMPLÍCITAS, INCLUYENDO, PERO SIN LIMITARSE A, LAS GARANTÍAS DE NO
INFRACCIÓN, COMERCIALIZACIÓN O ADECUACIÓN A UN FIN CONCRETO DE TERCEROS. EN
NINGÚN SUPUESTO, LOS TENEDORES DEL COPYRIGHT INCLUIDOS EN ESTE AVISO SERÁN
RESPONSABLES DE CUALQUIER RECLAMACIÓN, DAÑO ESPECIAL, INDIRECTO NI DERIVADO NI
CUALQUIER OTRO TIPO DE DAÑO QUE SE DERIVE DE LA PÉRDIDA DE USO, DATOS O
BENEFICIOS, INDEPENDIENTEMENTE DE SI SON PRODUCTO DE UNA ACCIÓN DEL CONTRATO,
NEGLIGENCIA O AGRAVIO, QUE SE DERIVE O GUARDE RELACIÓN CON EL USO O RENDIMIENTO
DE ESTE SOFTWARE.
Salvo los contenidos en este aviso, los nombres de los tenedores del copyright
no deben utilizarse en publicidad ni utilizarse de ninguna otra forma para
promocionar la venta, el uso u otras actividades comerciales con este Software
sin el consentimiento previo por escrito del tenedor del copyright.
-----------------------------------------------------------------------------
Todas las marcas registradas mencionadas en este documento son propiedad de sus
propietarios respectivos.