WebSphere Product Center: Portal Enablement

Versão 5.2

 

 

 

 

 

 

 

 

 

 

 


Nota! Antes de utilizar estas informações e o produto ao qual elas oferecem suporte, leia as informações em "Avisos" no final deste documento.

 

21 de março de 2005

Esta edição deste documento aplica-se ao WebSphere Product Center, versão 5.2 (5724-I68), e a todos os releases e modificações subseqüentes, até que seja indicado de outra forma em novas edições.

Copyright International Business Machines Corporations 2005. Todos os direitos reservados.
Direitos Restritos para Usuários do Governo dos Estados Unidos - Uso, duplicação e divulgação restritos pelo documento GSA ADP Schedule Contract com a IBM Corp.

Índice

Cap. 1 - Introdução
    Requisitos
    Limitações

Cap. 2 - Arquitetura da Estrutura de Integração do Portal
    Estrutura de Integração para o Product Center
        Funcionalidade de serviços da Web para o WebSphere Portal Server
    Dados
        Dados de pedido e resposta do Product Center
        Especificação de itens
    Componentes
        Mediador do Product Center
        Interface de Serviços da Web
        Conversores de dados
        Tipos de dados
        Bean de dados
        Componentes da interface com o usuário
        Serviços de troca de dados
    Serviços
        Suporte de Internacionalização/Localização
        Suporte de Segurança
    Recursos

Cap. 3 - Instalação e Configuração do Portal do Fornecedor

    Configurar a Segurança do Servidor de Portal com LDAP
        Configurar o banco de dados para LDAP
            Configurar o banco de dados para LDAP
            Incluir sufixo
            Criar usuários do portal
            Configurar portal
            Criar usuários admin do portal
    Customizar o Serviço de Login para o Portal do Fornecedor
    Configuração do Product Center
    Conclusão
    Recursos

Cap. 4 - Criando um Portlet do Product Center

    Portlet de Amostra - WorkWithItem
    Mensagens XML
    Objeto de Dados para Representar o Item
    XMLGenerator e XMLParser
    Incluir Métodos no Mediador do Product Center
    Criar o Portlet
    Apontar para o Serviço da Web do Servidor Product Center

Cap. 5 - Implementação e Customização da UI do Portal do Fornecedor

    Implementar o Portal do Fornecedor
    Customizar a UI para o Portal do Fornecedor
        Criar menu de navegação
        Instalar temas e skins
        Criar o layout dos Portlets nas Guias
        Fornecer permissão de acesso às guias
        Atualizar arquivos de configuração
    Arquivos de Configuração
    Conclusão

Cap. 6 - Estrutura da Interface com o Usuário
    Estrutura de Portlet
    Inventário de Portlet

Cap. 7 - Visão Geral do Formato da Mensagem
    Visão Geral de Scripts e Serviços da Web Envolvidos
    Diferentes Formatos de Mensagem

Cap. 1 - Introdução

A ativação do portal do WebSphere Product Center fornece uma base para que os clientes construam portais de parceiros comerciais. As iniciativas do portal podem fornecer acesso a dados de itens valiosos para milhares de usuários, o que pode aumentar muito o valor de uma implementação do WebSphere Product Center.  

Os exemplos de processos de negócios suportados pela funcionalidade do portal incluem: criação ou modificação de um item, modificação de informações de item sincronizado, uploads em massa de itens, seleções específicas do usuário e a capacidade para introduzir dados sobre proposta, termos e condições. 

A integração do WebSphere Portal Server com o WebSphere Product Center pode ser facilitada. A integração do servidor de portal inclui a capacidade para executar as seguintes operações especificadas a partir do servidor de portal:

Requisitos

Este documento supõe que os seguintes componentes são utilizados no ambiente do WebSphere Product Center:

Limitações

Atualmente, o WebSphere Product Center não fornece nenhum Portlet de Gerenciamento de Informações do Produto. Entretanto,  o WebSphere Product Center fornece as APIs e os metadados necessários para suportar o desenvolvimento da Interface com o Usuário do Portlet e do Portal do Fornecedor.

Cap. 2 - Arquitetura ou Estrutura de Integração do Portal

Este capítulo abrange a criação de portlets para o IBM WebSphere Product Center (daqui em diante chamado de Product Center). Ele descreve a arquitetura para o fornecimento de uma interface com o usuário para o Product Center. 

Estrutura de Integração para o Product Center

A estrutura de integração fornece o suporte para que os portlets trabalhem com o Product Center, a fim de permitir a um usuário visualizar e trabalhar com as informações do Product Center. A integração entre a estrutura da interface com o usuário e o Product Center está baseada no suporte de serviços da Web no Product Center. 

A arquitetura consiste em portlets que se comunicam com o Product Center através das interfaces de serviços da Web que o Product Center fornece (Veja Figura 1). O Product Center fornece uma camada de scripts, que pode ser utilizada como uma camada de API. Esses scripts posteriormente podem ser expostos como serviços da Web. Um serviço da Web é criado para cada função de negócios que precisa ser exposta no Product Center. Um portlet correspondente é criado para interagir com esse serviço da Web. O serviço da Web executará um ou mais scripts no Product Center, e também trabalha com outros serviços da Web para fornecer a função de negócios desejada. Visto que o serviço da Web desempenha a coreografia necessária entre os scripts e outros serviços da Web, ele realiza o seguinte:

 

Figura 1

Para integração do portal. Os documentos XML são o modo de transferência e, dependendo do modo da mensagem de pedido recebida, a resposta será enviada imediatamente ou mais tarde. A Figure 2 a seguir explica a arquitetura geral. 

Figura 2

A comunicação entre o Product Center e o WebSphere Portal Server é sempre uma transformação de documento XML baseado em doc-literal. A manutenção das transações ASYNC / SYNC é dependente da estrutura de serviços da Web do Product Center e não deve ser dependente do nível do script de implementação. Por causa desse recurso, toda operação pode ser tornada ASYNC / SYNC em qualquer ponto do tempo, sem qualquer alteração de script.

Dados

O formato de troca de dados é o XML, e o modelo de dados é baseado em um único envelope ou contêiner que define as informações requeridas para processar uma transação. O envelope define o seguinte:

Dados de Pedido e de Resposta do Product Center

Uma amostra da estrutura XML de pedido é mostrada na Tabela 1:

Tabela 1: XML de Pedido

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

A correspondente amostra do XML de resposta é mostrada na Tabela 2.

Tabela 2: XML de Resposta

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

Especificação de Item

A especificação de Item é uma definição específica do Product Center de um Item e suas coletas de atributos. Essa definição pode ser capturada na forma de um documento XML. Essa Especificação de Item é utilizada para referência a vários tipos de dados que são utilizados para definir um item e seus atributos. A Especificação de Item em combinação com a definição de Visualização ajudará a renderizar as telas do portlet - em um modo de renderização automática ou se um desenvolvedor precisar codificar manualmente as JSPs.

Componentes

A estrutura consiste em um conjunto de componentes que ajuda no desempenho das interações com o Product Center e na transformação de dados.

Mediador do Product Center

O mediador ajuda na interação com os portlets e os Serviços da Web do Product Center. Ele age como o ponto único de contato para essas camadas e também desempenha a transformação de dados necessária para o consumo dessas duas camadas. O Mediador é exposto como uma interface para os Portlets com quem trabalha. 

Interface de Serviços da Web

A interface de Serviços da Web é feita utilizando a estrutura de chamada de Serviços da Web AXIS. A camada de Serviços da Web interage com o cliente AXIS para iniciar uma chamada de serviços da Web correspondente no Product Center. A chamada de Serviços da Web é do tipo doc-literal, SOAP é utilizado como o protocolo para comunicação, e isso é desempenhado atualmente através de transporte HTTP. A camada de serviços da Web atual é utilizada para a troca de dados XML e também para fazer upload e download de anexos. A implementação SwA (SOAP-with-Attachments) no AXIS é utilizada com essa finalidade. Consulte a seção "Recursos" neste capítulo para obter mais informações sobre a estrutura AXIS.

Um arquivo de configuração contém a lista de serviços da Web que precisam ser chamados a uma ação na interface do usuário. Esse mapeamento de ações para os serviços da Web está contido conforme a seguir: 

Tabela 3: Mapeamento de Ações para Serviços da Web

<soap-url action="<nome da ação>">http://<nome do servidor>:<porta do servidor>/services/<nome do serviço></soap-url>

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

Conversores de Dados 

A camada do Mediador utiliza um conjunto de analisadores e geradores para analisar o conteúdo XML do Product Center e converter o conteúdo XML gerado para o consumo do Product Center. Esses conversores convertem dados em um formato XML para um objeto Java predefinido, e vice-versa. A conversão para um objeto Java requer o suporte de um conjunto definido de tipos de dados e objetos de dados. Estes são discutidos nas seções a seguir.

Tipos de Dados

O Product Center define um conjunto de atributos para sua definição de Item. Esses atributos são de vários tipos, desde Cadeia e Número até Atributos de Grupo. Esses tipos de atributos e seus comportamento no lado da estrutura da interface com o usuário são capturados em um conjunto de classes de Atributo e Tipo de Atributo. 

A lista completa dos atributos suportados é mostrada na Figura 3. Os atributos fornecem uma base na qual a funcionalidade de renderização, formatação e validação pode ser anexada.

Bean de dados

O bean de dados fornece suporte para conteúdo exibido no portlet, bem como controle do fluxo da interface com o usuário em termos de armazenamento do estado e do modo atual do portlet.

Componentes da Interface com o Usuário

Os componentes da interface com o usuário tratam principalmente da renderização da interface com o usuário, da manipulação das interações do usuário e das chamadas específicas na busca ou armazenamento da camada do mediador, no Product Center e a partir dele. Os principais componentes da interface com o usuário são os portlets e as bibliotecas de tags que ajudam na renderização da interface com o usuário para os portlets.

Figura 3

Serviço de Troca de Dados

Os portlets implementados no servidor de portal não têm um meio elegante de troca de informações, especialmente quando os portlets estão presentes em diferentes páginas. A comunicação entre portlets só é efetiva para os portlets presentes na mesma página. O serviço de troca de dados fornece um único ponto de contato para todos os portlets, tem a capacidade para reter informações e os portlets utilizam esse serviço para a troca de dados. Esse serviço é atualmente um singleton, sendo chamado como uma chamada simples de método Java. Esse serviço será estendido para atender a um conjunto ou tipo maior de trocas de objetos, sendo também implementado como um aplicativo separado para aprimorar seus aspectos de ajuste de desempenho.

Serviços

A estrutura da interface com o usuário utiliza a infra-estrutura básica fornecida pelo servidor de portal para fornecer suporte de internacionalização e segurança. 

Suporte de Internacionalização / Localização

O servidor de portal fornece um conjunto de tags de personalização e pacotes de recursos para localizar o conteúdo exibido pela estrutura do portal - os temas e skins. O conteúdo dos portlets é localizado utilizando um conjunto de pacotes de recursos que fornecem conteúdo para etiquetas, botões e mensagens exibidas. O conteúdo selecionado no Product Center é localizado com base no suporte do código do idioma disponível nesse nível do aplicativo. 

Suporte de Segurança

A estrutura da interface com o usuário baseada no portal e o Product Center utilizam o LDAP como o meio para manter o registro do usuário. O Product Center e a estrutura da interface com o usuário têm um conjunto separado de esquemas do usuário para manter as informações do usuário. Isso se deve ao fato principalmente de que os usuários registrados no nível do portal o utilizam para desempenhar as interações do portal do fornecedor. Considerando que os usuários registrados no Product Center são principalmente usuários avançados ou admin do sistema. A próxima etapa na área de registro do usuário é integrar os esquemas utilizados pela estrutura, bem como o Product Center. Isso também levaria a um registro de usuários comuns e à definição de usuários e suas funções. 

Autenticação de Usuários

No caso do cenário do portal do fornecedor, os usuários geral e fornecedor utilizam o portal para registrar-se e efetuar login por meio do portal. O gerenciamento de usuário e sua subseqüente autenticação é desempenhado no nível LDAP do portal. A parte crítica das informações que o portal compartilha com a camada subjacente do Product Center são as informações de identificação do fornecedor. Essas informações são utilizadas para filtrar os dados que o usuário criou ou com os quais trabalhou. 

Autorização de Usuários

Autorizações para dados, com base no usuário com login efetuado, é principalmente uma função do Product Center. No estado atual do sistema, as autorizações são basicamente a filtragem de dados baseada na identificação do fornecedor. O portal fornece um grau de autorização de Acesso do Portal, em que o usuário recebe permissão para visualizar e desempenhar ações conforme sua função, admin ou geral.

Recursos

Esse artigo descreve a arquitetura para a estrutura de integração do portal para o Product Center.

Cap. 3 - Instalação e Configuração do Portal do Fornecedor

As seções a seguir detalham a configuração do ambiente, que é necessária para ativar a implementação do Portal do Fornecedor em uma organização. 

Este capítulo supõe que os seguintes softwares estão instalados como parte do ambiente do WebSphere Product Center:

A opção do sistema operacional utilizado determinará uma combinação de software a ser instalado. A plataforma de base na qual o Portal do Fornecedor funcionará é da versão 5.0.2.2 do Servidor de Portal. 

A instalação da integração do portal para Websphere Product Center inclui dois arquivos compactados. Um é implementado no Servidor de Portal e o outro no servidor do Product Center para integração do Portal. 

Configurar a Segurança do Servidor de Portal com LDAP

Como parte da primeira etapa na configuração do portal do fornecedor, configure a segurança do Servidor de Portal para LDAP. Esta etapa supõe que foram instalados o IBM DB2, o Servidor de Diretórios e a Ferramenta de Administração do Servidor de Diretórios.

Configurar o Banco de Dados para LDAP

Esta etapa configura a instância do DB2 para LDP.

1. Abra a Ferramenta de Configuração para Servidor de Diretórios navegando para Iniciar -> Programas -> IBM Tivoli Directory Server -> Configuração de Diretório.

2. Selecione DN/Senha do Administrador na área de janela esquerda da ferramenta de configuração.

3. Digite os seguintes valores para os campos:

4. Clique em OK.

5. Selecione Configurar Banco de Dados na área de janela esquerda da ferramenta de configuração.

6. Selecione a opção Criar um Novo Banco de Dados e, em seguida, clique em Avançar.

7. Digite o ID e a senha do usuário admin do DB2. (Normalmente, seria db2admin e password.). Clique em Avançar.

8. Digite o nome da instância do DB2 como o nome do banco de dados na tela seguinte. Clique em Finish.

Incluir Sufixo

Esta etapa incluirá um sufixo para a hierarquia do LDAP.

1. Abra a Ferramenta de Configuração para Servidor de Diretórios navegando para Iniciar -> Programas -> IBM Tivoli Directory Server -> Configuração de Diretório.

2. Selecione Gerenciar Sufixos na área de janela esquerda da ferramenta de configuração.

3. Digite a cadeia "dc=wps,dc=com" no campo DN do Sufixo.

4. Clique em Incluir. Em seguida, clique em OK.

Criar os Usuários do Portal

Esta etapa define a lista de usuários que estão autorizados a acessar o portal. 

1. Abra a Ferramenta de Configuração para Servidor de Diretórios navegando para Iniciar -> Programas -> IBM Tivoli Directory Server -> Configuração de Diretório.

2. Selecione Importar Dados LDIF na área de janela esquerda da ferramenta de configuração. Isso abrirá a tela com opções para procurar o arquivo LDIF e importar os dados do Usuário.

3. Selecione o arquivo LDIF exigido pelo portal do fornecedor e faça a importação. O status da importação será refletido na área de mensagens da tarefa.

Configurar o Portal

Esta etapa configura o portal com relação à segurança. 

1. Assegure-se de que o Servidor de Diretórios esteja instalado e cada configuração exigida pelo WebSphere Portal tenha sido executada.

2. Localize o arquivo <PortalServer_root>/config/wpconfig.properties e crie uma cópia de backup antes de alterar qualquer valor.

3. Utilize um editor de texto para abrir o arquivo <wp_root>/config/wpconfig.properties.

4. Substitua todas as entradas que terminam com o DN de Sufixo "dc=yourco,dc=com" por "dc=wps,dc=com".

5. Edite as seguintes propriedades na seção "Configuração das Propriedades LDAP" de acordo com o seu ambiente:

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(Endereço IP da máquina Host 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. Salve o arquivo.

7. Abra um prompt de comandos e mude para o diretório <AppServer_root>/bin.

8. Digite os seguintes comandos:

startServer server1
stopServer WebSphere_Portal

9. Mude para o diretório <PortalServer_root>/config.

10. Digite o seguinte comando para executar a tarefa de configuração apropriada:

    WPSconfig.bat validate-ldap

Nota: Se a tarefa de configuração falhar, valide os valores no arquivo wpconfig.properties.

11. Digite o seguinte comando para executar a tarefa de configuração apropriada para ativar a Segurança LDAP:

    WPSconfig.bat enable-security-ldap

12. Mude para o diretório <AppServer_root>/bin e digite os seguintes comandos:

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

Se estiver executando com a segurança ativada no WebSphere Application Server, você deverá especificar um ID de usuário e senha para a autenticação de segurança ao digitar os comandos: 

(d) stopServer server1 -user was_admin_userid -password was_admin_password 
(e) startServer server1
(f) startServer WebSphere_Portal

Nota: Há poucas etapas no Infocenter, o que depende do Tipo de Instalação e dos ambientes operacionais. Essas etapas poderão ser excluídas dependendo do requisito.

Criar os Usuários Admin do Portal

Esta etapa cria os usuários do portal com privilégios de administração.

1. Efetue login na Ferramenta de Administração da Web do Servidor de Diretórios.

2. Selecione Gerenciamento de Esquema > Incluir um atributo e inclua os seguintes atributos:

WPCRole{Sintaxe - Sintaxe da Cadeia de Diretórios, Comprimento do Atributo - 50}
userStatus{Sintaxe - Booleano}
userGLN{Sintaxe - Sintaxe da Cadeia de Diretórios, Comprimento do Atributo - 50}
company{Sintaxe - Sintaxe da Cadeia de Diretórios, Comprimento do Atributo - 50}

3. Selecione Gerenciamento de Esquema > Incluir uma Classe de Objeto e inclua o seguinte:

    object class: wpcUserClass

    Atributos obrigatórios - abstract, company, UserStatus, WPCRole
    Atributos opcionais - userGLN

4. Salve todas essas alterações.

5. Importe o arquivo portalAdmin.ldif da ferramenta de configuração. Um arquivo LDIF Admin de amostra está anexado para referência. 

6. Efetue login com admin/admin/ibm para o Portal

Customizar o Serviço de Login para o Portal do Fornecedor

O portal fornece uma interface para o Product Center que exige que um usuário digite um ID de usuário, senha e informações da empresa durante o login no portal. Isso requer uma modificação na página de login padrão fornecida pelo Servidor de Portal.

1. Antes de customizar a página de login, um usuário com privilégios administrativos precisa ser configurado para o Portal do Fornecedor. 

(a) Efetue login com o ID do usuário e senha do administrador do portal.
(b) Clique no link Administração na barra superior, selecione Acessar > Usuários e Grupos na área de janela esquerda.
(c) Escolha wpsadmins nos Grupos exibidos.
(d) Inclua o usuário "admin" criado através do portalAdmin.ldif e salve as alterações.

Desse modo, o usuário "admin" terá os privilégios administrativos para o portal do fornecedor.

2. Quando um usuário do portal efetua login ou logout do portal, o WP executa um determinado comando de login/logout. Os nomes de classe desses comandos são especificados no arquivo de propriedades PortalServer_root>/shared/app/config/services/ConfigService.properties com as configurações padrão: command.login = LoginUserAuth e command.logout = LogoutUserAuth 

O caminho da procura de pacotes para esses comandos é especificado como uma lista separada por vírgula no arquivo de propriedades <PortalServer_root>/shared/app/config/services/LoaderService.properties com as configurações padrão: 

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

3. Coloque o customlogin.jar que é exigido pelos utilitários relacionados ao LDAP na pasta <PortalServer_Root>/shared/app.

4. Coloque o ibmjndi.jar que é exigido pelos utilitários relacionados ao LDAP na pasta <PortalServer_root>/shared/app.

5. Certifique-se então de que a nova classe possa ser localizada no caminho de classe do portal e inclua o pacote de comandos como a primeira entrada no command.path em LoaderService.properties 

    Por exemplo: command.path=com.ibm.ccd.ui.services.user, com.ibm.wps.engine.commands

6. Edite o "Login.jsp" na pasta <AppServer_root>/installedApps/<hostname>/wps.ear/wps.war/screens/html incluindo os campos necessários. Por exemplo, o seguinte fragmento de código inclui um campo "Company" na tela de Login e transforma em comentário o fragmento de código do botão Cancelar visto que ele não é obrigatório.

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

7. Inclua as entradas do Login.jsp relacionadas ao nls no arquivo de propriedades localizado no <PortalServer_root>/shared/app/nls/field.properties.

    Por exemplo: company = Empresa

8. Inclua as mensagens de erro relacionadas ao Login.jsp no arquivo de propriedades localizado no <PortalServer_root>/shared/app/nls/problem.properties 

9. Inclua as seguintes entradas para o Portal do Fornecedor:

(a) login.invalid.userStatus = Este Usuário está InActive; favor entrar em contato com o Administrador do Sistema.
(b) login.invalid.company = Este usuário não pertence a esta empresa; favor verificar.
(c) ldap.not.configured = O serviço de autenticação LDAP está falhando. Favor entrar em contato com o Administrador do Sistema

Configuração do Product Center

Utilize as seguintes etapas para configurar corretamente o Product Center para integração com o Servidor de Portal.

1. Defina os valores para soap_company, soap_user e trigo_web_url em common.properties.

a) soap_company é o nome da empresa do Product Center em uso.

b) soap_user é sempre Admin

c) trigo_web_url será http://<endereço IP>:<porta>

2. Monte o diretório public_html.

3. Aumente para 1000 a freqüência do daemon mountmgr em common.properties.

4. Altere os detalhes do FTP na tabela de pesquisa Portal_Config. São fornecidos valores de amostra.

5. ftpDir (em Portal_Config) deve estar no diretório raiz do servidor de FTP.

6. Torne gravável o arquivo no local /public_html/WEB-INF/server-config.wsdd.

7. Importe o PORTAL_LKP.ZIP primeiramente

8. Importe o PORTAL_NON_LKP.ZIP em seguida

9. Certifique-se de reiniciar o servidor após estas etapas

10. No caso do Web Logic, certifique-se de salvar o serviço da Web após a alteração do bloco a seguir:

<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="&gt;="/>
            <xs:enumeration value="&lt;="/>
            <xs:enumeration value="&gt;"/>
            <xs:enumeration value="&lt;"/>
            <xs:enumeration value="!="/>
            <xs:enumeration value="BEGINSWITH"/>
            <xs:enumeration value="CONTAINS"/>
            <xs:enumeration value="ENDSWITH"/>
            <xs:enumeration value="ISEMPTY"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>

Conclusão

Ao final deste capítulo, a seguinte tarefa deverá ter sido concluída:

Recursos

 

Cap. 4 - Criando um Portlet do WebSphere Product Center

Este capítulo descreve as etapas para criar um portlet do Product Center; um portlet existente do Product Center chamado WorkWithItem servirá de exemplo.

Um conhecimento útil no desenvolvimento e teste de portlets no IBM WebSphere Portal Server, e uma experiência prática com os recursos IBM WebSphere Studio Application Developer, é assumido para as finalidades deste capítulo. Este capítulo não descreve os detalhes de como criar o Script do Product Center, que precisa atender ao pedido do portlet no lado do Product Center. Os detalhes de como gravar esses scripts e hospedá-los como Serviços da Web estão fora do escopo deste capítulo.

A infra-estrutura de framework e o portlet que a utiliza são descritos nas seções seguintes. A infra-estrutura se refere ao formato do XML para troca de dados e a um objeto de dados que representa esse XML. Isso também exige classes que são convertidas entre o XML para Java e vice-versa. Um conjunto de métodos precisa ser anexado ao Mediador do Product Center, para consumo do portlet.

Portlet de Amostra - WorkWithItem

Os itens, no Product Center, estão presentes em um Catálogo do Product Center. Esses itens são descritos utilizando uma Especificação de Item. Essa especificação é uma coleta de atributos. Os itens são posteriormente agrupados em categorias e subcategorias. Essa árvore, que representa as categorias, também é chamada de hierarquia. 

O portlet WorkWithItem ajuda um usuário a trabalhar com um item, e é obrigatório para executar as seguintes tarefas:

(a) Visualizar um item
(b) Criar um item
(c) Modificar um item
(d) Clonar um item
(e) Excluir um item

Mensagens XML

A função básica do portlet WorkwithItem é visualizar, criar, modificar, clonar e excluir um item no catálogo. Para essas ações, o portlet precisa trocar dados com o Product Center em formato XML por meio de um serviço da Web. Ou seja, para cada ação executada em um portlet, um pedido no formato XML vai para o Product Center e uma resposta em formato XML volta após o processamento no Product Center.

Por exemplo, para recuperar detalhes sobre um item, o XML do pedido é conforme descrito a seguir: 

Tabela 1: XML de Pedido do 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>

O comando de ação destina-se a obter os detalhes do item e o modo de chamada é SYNC/ASYNC. Esses modos determinam se a API de serviço da Web chamada no Product Center funcionará em um modo síncrono ou assíncrono. Para esse pedido específico, os campos ItemID, CatalogName e ParentCategory são obrigatórios para a obtenção dos detalhes de um item. 

O XML de resposta para os detalhes de um item é uma coleta de atributos desse item e é mostrado a seguir:

Tabela 2: XML de Resposta do Product Center 

<wpc:attribute-list>
    <wpc:attribute name="Especificação do Item Principal/GTIN" type="STRING">
        <wpc:values>
            <wpc:value occurrence="0">1087383</wpc:value>
        </wpc:values>
    </wpc:attribute>
    <wpc:attribute name="Especificação do Item Principal/Data de Início Efetivo" type="DATE">
        <wpc:values>
            <wpc:value occurrence="0">2005-01-06 00:00:00</wpc:value> 
        </wpc:values>
    </wpc:attribute>
    <wpc:attribute name="Especificação do Item Principal/Conteúdo do Produto/Imagem da Web" type="IMAGE">
        <wpc:values>
            <wpc:value occurrence="0">1109678022009_id-w3-sitemark-simple.gif</wpc:value>
        </wpc:values>
    </wpc:attribute>
        ... 
</wpc:attribute-list>

Objeto de Dados para Representar o Item

Com base na estrutura dos XMLs de pedido e resposta, um Objeto de Dados é definido para representar os dados do Mediador do Product Center. Essa conversão de um objeto de dados para uma cadeia XML e vice-versa é executada na camada do Mediador do Product Center.

Por exemplo, no portlet "WorkWithItem", o Item do Product Center está contido em uma classe "CatalogItem", que tem uma coleta de atributos. 

XMLGenerator e XMLParser

O gerador e analisador de XML ajudam a converter a representação Java do Item do Product Center em uma representação XML, e vice-versa. O CatalogItemGenerator constrói um XML de Pedido do Product Center. A geração do XML é específica de um comando; nesse caso, o comando que está buscando os detalhes do item. Esse XML é preenchido com os valores de entrada fornecidos pelo usuário, e esses valores são capturados do objeto de pedido do portlet. 

O trecho de código fornecido a seguir é apenas um exemplo de um XML que é gerado para a operação de recuperação de detalhes do item.

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

O CatalogItemParser analisa o conteúdo do XML de Resposta do Product Center no objeto de dados do Item do Catálogo.

public class CatalogItemParser {
        public static ICatalogItem prepareItem(
                Element specElement, 
                Element tradeItemElement) {
                        // prepare the spec..
                        ICatalogItem item = getCatalogSpecItem(specElement);
                        // fill the item with attrib values
                        prepareItem(item, tradeItemElement);
                        return item; 
                }
        }
}

Incluir Métodos no Mediador do Product Center

Os portlets deverão interagir somente com a camada do mediador para qualquer tipo de troca de dados com o Product Center. O mediador por sua vez precisa ter todos os métodos requeridos pelas classes do portlet a fim de que execute as operações necessárias relacionadas à chamada de serviços da Web do Product Center. O portlet representa o requisito funcional e as operações relacionadas à interação com o usuário. Em nosso exemplo do WorkwithItemPortlet, o portlet precisa:

(a) Visualizar um item
(b) Criar um item
(c) Modificar um item
(d) Clonar um item
(e) Excluir um item

De forma apropriada, os métodos deverão ser incluídos na camada do mediador, e espera-se que esses métodos façam o seguinte:

(1) Carregar o SOAP URL apropriado para chamada de serviço da Web.
(2) Criar o XML de pedido para essa chamada de método.
(3) Chamar o SOAP URL para iniciar chamadas SYNC/ASYNC.
(4) Receber o XML de resposta e interpretá-lo.
(5) Se bem-sucedido, converter o XML de Resposta em Objetos de Dados apropriados.
(6) Se mal sucedido, transmitir as informações de deficiência ao portlet na forma de um Bean de Notificação. Ele deverá emitir a Exceção WPCMediator.

Por exemplo, o método de busca do CatalogItem no Mediador irá procurar algo como o que é mostrado a seguir:

public ICatalogItem getCatalogItem(
        String parentCgyID,
        String catalogID, 
        String itemID,
        WPSContext context)
throws WPCMediatorException {
        try {
            // getting the Item specs.
            item = getCatalogItem(parentCgyID, catalogID, context);

            //construct the item request XML to fetch data
            String itemReqXML =
            CatalogItemGenerator.prepareItemDetailsRequestXML(
                parentCgyID,
                catalogID,
                itemID);

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

            // prepare the item by parsing the results
            CatalogItemParser.prepareItem(item, itemElement);
            return item;
    } catch (WPCMediatorException wpce) {
        if (DEBUG) wpce.printStackTrace();
        throw wpce;
    }
}

Posteriormente, o Mediador delega a chamada à classe WSHelper que posteriormente cria o XML de pedido e chama o SOAP URL.

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


Conforme mostrado anteriormente, o método getCatalogItem() recebe o XML de resposta e o transmite ao CatalogItemParser que converte o XML de resposta no objeto CatalogItem.
O XMLHelper gera o XML completo para todas essas chamadas.

Em resumo, as etapas genéricas seguidas por qualquer operação do Mediador são as seguintes:

Portlet > WPCMediator > WSHelper > SoapInvoker >Axis API

Criar o Portlet

Consulte o seguinte local para obter detalhes sobre como desenvolver e implementar um portlet no WebSphere Portal Server: 

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

O portlet do Product Center faria a chamada apropriada do Mediador do Product Center, além de decidir a mensagem que precisa ser exibida ao usuário final como resultado dessa chamada. Essas mensagens precisam ser incluídas na coleta de mensagens utilizando as APIs fornecidas para essa finalidade. 

As JSPs, que representam as várias telas do portlet atual, precisam incluir a tag de personalização que ajuda a exibir o conteúdo dessas mensagens do usuário. 

    <wpctags:uimessages/>

Apontar para o Serviço da Web do WebSphere Product Center

Modifique os arquivos de configuração como soapactionurls.xml a fim de que apontem para o SOAP URL apropriado. O arquivo de configuração de amostra é exibido a seguir:

<soap-url action="<nome da ação>">http://<nome do servidor>:<porta do servidor>/services/<nome do serviço></soap-url>

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

Cap. 5 - Implementação e Customização da UI do Portal do Fornecedor

Este capítulo fornece as etapas detalhadas sobre como instalar e configurar o portal do fornecedor no Product Center. 

O seguinte software será instalado como parte do ambiente:

Implementar o Portal do Fornecedor

Esta etapa descreve como implementar o portal do fornecedor. 

1. Abra o prompt de comandos, vá para <AppServer-Root>\bin e pare o servidor utilizando o comando:

    stopServer WebSphere_Portal -username wpsbind -password wpsbind

2. Abra a ferramenta de administração da Web do Servidor de Diretórios com o login na URL http://localhost:9080/IDSWebApp/IDSjsp/Login.jsp com as seguintes credenciais:

Nome do Host LDAP : localhost
Nome do Usuário : cn=root
Senha : password

3. Pare a ferramenta de administração da Web.

4. No prompt de comandos, vá para "DirectoryServer_Root\appsrv\bin" e pare o servidor LDAP utilizando o seguinte comando:

    stopServer server1 -username wpsbind -password wpsbind

5. Faça download do arquivo zip do aplicativo e extraia o conteúdo. Ele deve conter o arquivo JAR "customlogin.jar[I2]". Esses arquivos também estão disponíveis no CD de instalação do Product Center.

6. Inclua o customlogin.jar & ibmjndi.jar na pasta <PortalServer_Root>\shared\app.

7. No prompt de comandos, vá para "DirectoryServer_Root\appsrv\bin" e inicie o servidor LDAP utilizando o seguinte comando:

    startServer server1 -username wpsbind -password wpsbind

8. Abra a ferramenta de administração da Web do Servidor de Diretórios com a URL http://localhost:9080/IDSWebApp/IDSjsp/Login.jsp e efetue login com as credenciais:

Nome do Host LDAP : localhost
Nome do usuário : cn=root
Senha : password

9. Inicie a ferramenta de administração da Web.

10. Abra o prompt de comandos, vá para "AppServer_Root\bin" e inicie o servidor de portal utilizando o comando:
startServer WebSphere_Portal -username wpsbind -password wpsbind

11. Efetue login com admin/admin/ibm.

12. Vá para Administração -> Portlets > Gerenciar Aplicativos.

13. Desinstale se houver uma instância anterior do aplicativo.

14. Instale a instância atual do aplicativo e inclua os portlets nas páginas requeridas.

15. Designe as permissões do usuário aos portlets conforme necessário.

Customizar a UI para o Portal do Fornecedor

Nesta etapa, a UI é customizada para o portal do fornecedor. Esta etapa fornece um layout padrão e a aparência e comportamento do portal.

Criar o Menu de Navegação 

Como parte da customização do portal, crie as seguintes etiquetas no portal conforme mostrado na Figura 1:

Figura 1

Instalar Temas e Skins 

Instale os temas e skins para o aplicativo.

1. Extraia o arquivo "themes.zip" na pasta <AppServer_Root>\installedApps\<AppServer_HOST_NAME>\wps.ear\wps.war\themes\html

2. Extraia o arquivo "skins.zip" na pasta <AppServer_Root>\installedApps\<AppServer_HOST_NAME>\wps.ear\wps.war\skins\html

3. Efetue login no Servidor de Portal como um Administrador.

4. Clique no link Administrador na parte superior direita.

5. Vá para Interface com o Usuário do Portal -> Temas e Skins.

6. Clique no link Incluir Novo Tema.

7. Digite o nome e o diretório do novo tema como "WPC_Default_theme". Clique OK.

8. Clique no link Incluir Novo Skin.

9. Digite o nome e o diretório do novo skin como "WPC_Default_skin". Clique OK.

Criar o Layout dos Portlets nas Guias

Organize os portlets em várias guias, como a seguir:

Guia Home
  • Portlet de Alertas
  • Portlet de Procura
Guia Procurar
  • Portlet de Procura
Guia Criar/Editar Item
  • Portlet do Catálogo de Itens
  • Trabalhar com Portlet de Itens
Guia Edição em Massa
  • Trabalhar com Portlet de Itens
Guia Fazer Upload
  • Portlet de Upload
  • Portlet de Alertas
Guia Registro
  • Portlet de Registro
  • Portlet de Aprovação do Usuário

Siga as etapas abaixo para incluir os portlets em uma guia.

1. Efetue login no Servidor de Portal como um Administrador.

2. Clique no link Administrador na parte superior direita.

3. Vá para Interface com o Usuário do Portal > Gerenciar Páginas.

4. Selecione o botão Editar Layout de Página para a página requerida, na tela à direita.

5. Inclua os Portlets necessários na página procurando-a.

6. Repita as etapas (4) e (5) para todas as guias mencionadas acima. 

Fornecer Permissão de Acesso às Guias

1. Efetue login no Servidor de Portal como um Administrador.

2. Clique no link Administrador na parte superior direita.

3. Vá para Acesso -> Resource Permissions.

4. Selecione o botão Designar Acesso para o link Meu Portal; forneça o acesso Todos os Usuários Autenticados na tela Editar Função e clique em OK.

5. Da mesma forma, forneça acessos Usuário Anônimo para a Página de Registro conforme explicado na etapa (4).

Atualizar Arquivos de Configuração

1. Faça as seguintes alterações no arquivo de configuração a seguir para alterações relacionadas a Logout. 

<PortalServer_Root>/shared/app/config/services/ConfigService.properties
    # Logout redirect parameters
    redirect.logout = true
    redirect.logout.url = /wps/myportal

As alterações anteriores redirecionam o portal para a página Login ao clicar no link "Logout".

2. Faça as seguintes alterações nos arquivos de configuração a seguir para alterações relacionadas a Logout.

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

Edite as entradas a seguir para alterar os nomes dos links para "Registro", "Login" e "Logout".

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

Inclua estas duas entradas, que exibem a mensagem de boas-vindas customizada. 

default_welcome = Welcome!
login_welcome = Welcome, {0}

3. Faça as seguintes alterações no arquivo de configuração a seguir para alteração relacionada ao botão Login. 

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

Edite a entrada a seguir para alterar o nome do link 'Login'.

        login = Sign in

Arquivos de Configuração

Durante a instalação e a configuração do Portal do Fornecedor, são modificados poucos arquivos de configuração específicos do Servidor de Portal e aqueles específicos de aplicativos do Portal do Fornecedor. Uma descrição breve desses arquivos foi fornecida a seguir. 

<PortalServer_root>/config/wpconfig.properties

<PortalServer_root>/wmm/wmmLDAPServerAttributes.xml

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

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

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

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

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

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

Arquivos de configuração específicos de aplicativos do Portal do Fornecedor:

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

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

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

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

Conclusão

Ao final deste capítulo, as seguintes tarefas terão sido executadas:

Cap. 6 - Estrutura da Interface com o Usuário

Este capítulo fornece detalhes sobre:

Estrutura de Portlet

A estrutura geral de portlet é conforme mostrado na figura  a seguir. O usuário é informado sobre o status de uma transação na área de mensagem. O usuário interage com a área Ativa e com a área de botões Ação.

Inventário de Portlet

Segue uma lista dos portlets para os cenários de usuário disponíveis:

Registro do Usuário

a. Na página de login, clique no link Registro.

b. O Portlet de Registro do Usuário é exibido

c. O portlet Registro do Usuário exibe o GLN do Fornecedor e o endereço de e-mail. O usuário digita essa informação. 

d. Clique no Botão Avançar para validar o GLN e o endereço de e-mail

e. Uma vez reconhecido pelo sistema, os campos de senha são exibidos. 

f. O sistema verifica para garantir que as senhas são idênticas.

g. É exibida uma tela que informa os dados da aprovação do registro que serão enviados ao usuário; em seguida, o usuário poderá efetuar login no portal.

Aprovação do Registro do Usuário - Manual

a. Esse é um processo off-line. O Administrador do WebSphere Product Center tem de aprovar os usuários registrados. Isso permitirá que eles efetuem login no portal e trabalhem com os portlets relacionados ao WebSphere Product Center. 

b. O administrador do WebSphere Product Center tem que designar uma função ao usuário registrado. Essa ação tem de ser executada manualmente no armazenamento do LDAP; compartilhado pelo servidor de portal e pelo WebSphere Product Center. Isso garantiria que o usuário está autorizado a efetuar as transações relacionadas ao WebSphere Product Center.

Visualizar Catálogo de Itens

a. Esse portlet lista o Catálogo de Itens em um formato estruturado em árvore. O item é a folha dessa árvore de catálogo.

b. O usuário seleciona um catálogo e pode escolher incluir um item. Essa opção é apresentada como um botão na área de botões de ação.

c. O usuário seleciona um item e pode escolher visualizar, editar, clonar ou excluir o item. Essas opções são apresentadas como botões, na área de botões de ação.

d. Esses botões são efetivos apenas para operações em um item.

e. O primeiro nível de catálogos é recuperado do WebSphere Product Center. Os nós-filho (subcatálogos e itens) são recuperados com base na interação com o usuário; o usuário expande um nó e o conteúdo dele é exibido. Isso reduzirá a quantidade de dados que precisa ser carregada em qualquer ponto no tempo, mas aumentaria o número de chamadas que seriam feitas para o WebSphere Product Center recuperar essas informações.

Visualizar Item Existente

a. Selecione um item no Portlet de Catálogo de Itens e clique no botão Visualizar Item. Isso renderiza os detalhes do item no portlet "Trabalhar com Item". O conteúdo é exibido em modo de leitura.

Incluir Novo Item

a. Selecione um catálogo no portlet "Catálogo de Itens" e clique no botão Incluir Item. Isso renderiza o conteúdo do item no portlet "Trabalhar com Item", para que as informações do item possam ser digitadas pelo usuário. A operação "incluir" inclui o item digitado no catálogo selecionado.

b. Esse processo de criação de item também pode ser iniciado clicando no botão Incluir Item no portlet "Trabalhar com Item". Isso cria um item em um catálogo não designado.

c. As validações relacionadas à entrada de item são executadas na submissão. O primeiro nível de validações é executado com base nas meta informações de atributo recebidas do WebSphere Product Center. Essas validações são verificações de tipo e de intervalo. As validações não são executadas como parte de uma verificação de nível de JavaScript.

d. O usuário também pode optar por cancelar a operação. Isso retorna o portlet ao seu estado inicial.

Atualizar Item Existente

a. Selecione um item no portlet "Catálogo de Itens" e clique no botão Atualizar Item. Isso renderiza o conteúdo do item no portlet "Trabalhar com Item", para que as informações de atualização do item possam ser digitadas pelo usuário.  

b. Esse processo de atualização do item também pode ser iniciado procurando por um Item, selecionando-o e, em seguida, clicando no botão Trabalhar com Item nos resultados da procura. Isso preenche o portlet "Trabalhar com Item" com as informações sobre o Item. O usuário depois pode clicar no botão Atualizar Item para começar a trabalhar com ele.

c. Esse processo de atualização de item também pode ser iniciado selecionando um item no portlet "Catálogo de Itens" e clicando em Visualizar Item. Isso preenche o portlet "Trabalhar com Item". O usuário pode então clicar no botão Atualizar. Isso renderiza o conteúdo em modo editável.

d. As validações relacionadas à entrada de item são executadas na submissão. O primeiro nível de validações é executado com base nas meta informações de atributo recebidas do WebSphere Product Center. Essas validações são verificações de tipo e de intervalo. As validações não são executadas como parte de uma verificação de nível de JavaScript.

e. O usuário também pode optar por cancelar a operação. Isso retorna o portlet ao seu estado inicial.

Clonar Item

a. Selecione um item no portlet "Catálogo de Itens" e clique no botão Clonar Item. Isso renderiza uma cópia do conteúdo do item no portlet "Trabalhar com Item", para que a operação de cópia do item possa ser executada pelo usuário.  

b. Esse processo de clonagem do item também pode ser iniciado procurando por um Item, selecionando-o e, em seguida, clicando no botão Trabalhar com Item nos resultados da procura. Isso preenche o portlet "Trabalhar com Item" com as informações sobre o Item. O usuário pode clicar no botão Clonar e trabalhar com o item.

c. Esse processo de clonagem de item também pode ser iniciado selecionando um item no portlet "Catálogo de Itens" e clicando em Visualizar Item. Isso preenche o portlet "Trabalhar com Item". O usuário pode então clicar no botão Clonar. Isso renderiza o conteúdo em modo editável.

d. As validações relacionadas à entrada de item são executadas na submissão. O primeiro nível de validações é executado com base nas meta informações de atributo recebidas do WebSphere Product Center. Essas validações são verificações de tipo e de intervalo. As validações não são executadas como parte de uma verificação de nível de JavaScript.

e. O usuário também pode optar por cancelar a operação. Isso retorna o portlet ao seu estado inicial.

Remover Item Existente

a. Selecione um item no portlet "Catálogo de Itens" e clique no botão Excluir Item. Isso renderiza o conteúdo do item no portlet "Trabalhar com Item", para que a operação de exclusão possa ser executada pelo usuário. O conteúdo do Item é exibido em um modo legível.

b. Esse processo de exclusão de item também pode ser iniciado procurando por um Item, selecionando-o e, em seguida, clicando no botão Trabalhar com Item nos resultados da procura. Isso preenche o portlet "Trabalhar com Item" com as informações sobre o Item. O usuário então pode prosseguir clicando no botão de exclusão e excluindo o item.

c. Esse processo de exclusão de item também pode ser iniciado selecionando um item no portlet "Catálogo de Itens" e clicando em Visualizar Item. Isso preenche o portlet "Trabalhar com Item". O usuário pode então clicar no botão Excluir. 

d. O usuário também pode optar por cancelar a operação. Isso retorna o portlet ao seu estado inicial.

Procura de Item

a. O portlet de procura inicialmente exibe os valores dos critérios de procura: GTIN, GLN, Mercado de Destino, Status do Produto (Aprovado, rejeitado, rascunho, etc), SKU#, Preço, Retornar item individual ou hierarquia. O usuário pode executar uma procura curinga. 

b. O Critério de Procura fornece uma opção de intervalo para critérios de Tipo de Número ou Data. Por exemplo, o critério Preço seria preço acima de $100, mas abaixo de $500.

c. O Critério de Procura salva os últimos 10 critérios de procura utilizados pelo usuário e lista esses critérios. Um clique nesse link executará a procura com esses critérios.

d. Os resultados da procura são exibidos no mesmo portlet, abaixo dos critérios da procura. Os resultados da procura retornados são exibidos de acordo com o tamanho da rolagem específico de um usuário. Esse valor pode ser definido utilizando a opção de edição do portlet. O tamanho do resultado da procura é controlado pelo WebSphere Product Center, e isso é ainda da perspectiva de desempenho da procura. A exibição dos resultados da procura é controlada pelo portlet, ainda de uma perspectiva de experiência do usuário.

e. O usuário pode selecionar um único item nos resultados da procura e clicar no botão Trabalhar com Item. Isso move as informações do item para o portlet "Trabalhar com Item".

f. O usuário pode selecionar vários itens nos resultados da procura e clicar no botão Trabalhar com Itens. Isso move os itens para o portlet "Atualização em Massa de Itens".

Upload em Massa

a. O portlet "Upload em Massa" fornece uma interface com o navegador de arquivos para fazer upload de um arquivo CSV (comma-separated-values) da máquina do usuário para o WebSphere Product Center. 

b. Como essa é uma transação longa da perspectiva do WebSphere Product Center, essa interação será assíncrona. O arquivo CSV é transferido por upload para o WebSphere Product Center e os resultados da transação são reportados ao usuário como uma mensagem no portal ou por um e-mail.

Atualização em Massa

a. O Usuário executa uma procura por itens utilizando o portlet "Procura". Seleciona os Itens exibidos nos resultados da procura e clica no botão Trabalhar com Itens. 

b. Isso transfere o conteúdo dos itens selecionados para o portlet "Atualização em Massa de Itens". O usuário agora pode executar uma atualização em massa de itens, para um conjunto selecionado de atributos.

 

Cap. 7 - Visão Geral do Formato da Mensagem

Para o formato da mensagem, escolhemos algo semelhante ao formato da mensagem do UCCNet. O envelope tem um cabeçalho e corpo. O cabeçalho tem informações que serão utilizadas para identificar os detalhes do emissor/receptor, bem como o identificador exclusivo da mensagem. O corpo tem o comando a ser executado e informações relacionadas no caso de mensagem de pedido e, em caso de mensagem de resposta, terá os detalhes da resposta.  

Há duas maneiras de manipular as transações de mensagens entre o Portal e o Product Center, Síncrona e Assíncrona.

Estrutura do Documento

<envelope>
    <wpcHeader>
        <!— companyName. Por padrão, o ID do usuário e a empresa no WPC serão obtidos do respectivo contexto de script. Isso será a partir de agora apenas para o tipo de campo Para Sua Informação -->
        < companyName></ companyName> 
        <!—UserID. Por padrão, o ID do usuário e a empresa no WPC serão obtidos do respectivo contexto de script. Isso será a partir de agora apenas para o tipo de campo Para Sua Informação -->
        < userID></ userID>
        <!--messageIdentifier identifica com exclusividade cada mensagem-->
        < messageIdentifier></ messageIdentifier>
        <!—time stamp no qual a mensagem foi enviada -- >
        <timestamp></timestamp>
        <!—ID do fornecedor do usuário do WPS  -- >
        <supplierId></supplierId>
    </wpcHeader>
    <wpcBody>
        < wpcCommand type=ADD mode=SYNC >
        ………...
        </wpcCommand>
    </wpcBody>
</envelope>

O atributo "type" do elemento wpcCommand pode ter o valor como ADD/MODIFY/DELETE/SEARCH/ QUERY_TRANSACTION/etc... Esse campo decide a operação que precisa ser executada. O atributo "mode" de wpcCommand decide em qual modo a operação precisa ser executada. Isso pode ser SYNC ou ASYNC.

No modo SYNC, o documento XML do pedido será processado e, em seguida, o respectivo documento XML de resposta será gerado e enviado de volta imediatamente.

No modo ASYNC, no momento em que o documento de pedido XML é recebido na confirmação, o documento determinado é válido e um ID de transação bem formado será fornecido de volta ao responsável pela chamada. De agora em diante, o responsável pela chamada poderá continuar efetuando polling, fornecendo o ID da transação a qualquer momento que o status da transação for solicitado.

Para incluir item de catálogo no Product Center, o portal deverá enviar o esboço da mensagem a seguir com os dados apropriados preenchidos. O sinalizador de modo deverá ter "SYNC" para obter a resposta imediatamente em vez de "ASYNC".

<envelope>
    <wpcHeader>
        <!— companyName. Por padrão, o ID do usuário e a empresa no WPC serão obtidos do respectivo contexto de script. Isso será a partir de agora apenas para o tipo de campo Para Sua Informação -->
        < companyName></ companyName> 
        <!—UserID. Por padrão, o ID do usuário e a empresa no WPC serão obtidos do respectivo contexto de script. Isso será a partir de agora apenas para o tipo de campo Para Sua Informação -->
        < userID></ userID>
        <!--messageIdentifier identifica com exclusividade cada mensagem-->
        < messageIdentifier></ messageIdentifier>
    </wpcHeader>
    <wpcBody>
        < wpcCommand type=ADD mode=SYNC >
        <wpcCatalogItem>
        ………...
    </wpcCatalogItem>
        </wpcCommand>
    </wpcBody>
</envelope>

A respectiva resposta do Product Center deverá ser:

<envelope>
<wpcHeader>
	<!— companyName. Por padrão, o ID do usuário e a empresa no WPC serão obtidos do
respectivo contexto de script. Isso será a partir de agora apenas para o tipo de campo
Para Sua Informação -->
	< companyName></ companyName> 
	<!—UserID. Por padrão, o ID do usuário e a empresa no WPC serão obtidos do
respectivo contexto de script. Isso será a partir de agora apenas para o tipo de campo
Para Sua Informação -->
	< userID></ userID>
	<!--messageIdentifier identifica com exclusividade cada mensagem-->
	< messageIdentifier></ messageIdentifier>
</wpcHeader>
<wpcBody>
	< wpcResponse>
		< wpcEntityIdentifier>
			<!—messageidentifier valor da mensagem de pedido --!>
< wpcMessageIdentifier > </ wpcMessageIdentifier >
<!—WPC ID da transação criado para a mensagem de pedido --!>
< wpcTransactionID ></ wpcTransactionID >
				</ wpcEntityIdentifier>
				< wpcNotification >
					< notificationInfo type=”SUCCESS” >
						< notificationCode >000</ notificationCode >
						<notificationMessage>SUCCESS</notificationMessage>
	</ wpcResponse>
</wpcBody>
</envelope>

No caso de qualquer erro encontrado, o atributo "type" de notificationInfo terá o valor como "ERROR" ou "WARNING", o código de notificação terá o código do erro e notificaitonMessage terá a respectiva mensagem de erro associada. Isso se aplica a todas as mensagens que serão enviadas do portal. No caso de pedido SEARCH/SELECTION, wpcResponse terá o bloco wpcCatalogueItem como parte da resposta que é o resultado da procura/seleção, no caso de pedido no modo SYNC.

No caso de mensagem de pedido em modo ASYNC, o pedido enviado deverá ser conforme a seguir:

<envelope>
    <wpcHeader>
        <!— companyName. Por padrão, o ID do usuário e a empresa no WPC serão obtidos do respectivo contexto de script. Isso será a partir de agora apenas para o tipo de campo Para Sua Informação -->
        < companyName></ companyName> 
        <!—UserID. Por padrão, o ID do usuário e a empresa no WPC serão obtidos do respectivo contexto de script. Isso será a partir de agora apenas para o tipo de campo Para Sua Informação -->
        < userID></ userID>
       !--messageIdentifier identifica com exclusividade cada mensagem-->
        < messageIdentifier></ messageIdentifier>
    </wpcHeader>
    <wpcBody>
        < wpcCommand type=ADD mode=”ASYNC”>
    <!— no caso de operações de itens em massa, o bloco abaixo será utilizado --!>
    <!—a partir de agora, o único tipo de arquivo suportado é CSV --!>
            <wpcDataContainer fileType=”CSV”>
                <serverName></serverName>
                <userName></userName>
                <password></password>
                <dataDir></dataDir>
                <fileName></filename>
        </wpcCommand>
    </wpcBody>
</envelope>

A resposta para o mesmo é conforme a seguir:

<envelope>
    <wpcHeader>
        <!— companyName. Por padrão, o ID do usuário e a empresa no WPC serão obtidos do respectivo contexto de script. Isso será a partir de agora apenas para o tipo de campo Para Sua Informação -->
        < companyName></ companyName> 
        <!—UserID. Por padrão, o ID do usuário e a empresa no WPC serão obtidos do respectivo contexto de script. Isso será a partir de agora apenas para o tipo de campo Para Sua Informação -->
        < userID></ userID>
        <!--messageIdentifier identifica com exclusividade cada mensagem-->
        < messageIdentifier></ messageIdentifier>
    </wpcHeader>
    <wpcBody>
        < wpcResponse>
            < wpcEntityIdentifier>
                <!—messageidentifier valor da mensagem de pedido --!>
                < wpcMessageIdentifier > </ wpcMessageIdentifier >
            <!—WPC ID da transação criado para a mensagem de pedido --!>
            < wpcTransactionID ></ wpcTransactionID >
        </ wpcEntityIdentifier>
        < wpcNotification >
            < notificationInfo type=”PROCESSING” >
                < notificationCode >999</ notificationCode >
        <notificationMessage>PROCESSING</notificationMessage>
            </ wpcResponse>
    </wpcBody>
</envelope>

Agora o portal deverá continuar efetuando polling no Product Center para verificar a conclusão da transação fornecida. A mensagem a seguir faz isso.

<envelope>
    <wpcHeader>
        <!— companyName. Por padrão, o ID do usuário e a empresa no WPC serão obtidos do respectivo contexto de script. Isso será a partir de agora apenas para o tipo de campo Para Sua Informação -->
        < companyName></ companyName> 
        <!—UserID. Por padrão, o ID do usuário e a empresa no WPC serão obtidos do respectivo contexto de script. Isso será a partir de agora apenas para o tipo de campo Para Sua Informação -->
        < userID></ userID>
        <!--messageIdentifier identifica com exclusividade cada mensagem-->
        < messageIdentifier></ messageIdentifier>
    </wpcHeader>
    <wpcBody>
        < wpcCommand type=”QUERY_TRANSACTION” mode=”ASYNC”>
            < wpcEntityIdentifier>
            <!—messageidentifier valor da mensagem de pedido --!>
            < wpcMessageIdentifier > </ wpcMessageIdentifier >
                <!—WPC ID da transação criado para a mensagem de pedido --!>
                < wpcTransactionID ></ wpcTransactionID >
        </ wpcEntityIdentifier>
        </wpcCommand>
    </wpcBody>
</envelope>

Agora a respectiva resposta do Product Center sobre conclusão com êxito da operação é a seguinte:

<envelope>
    <wpcHeader>
        <!— companyName. Por padrão, o ID do usuário e a empresa no WPC serão obtidos do respectivo contexto de script. Isso será a partir de agora apenas para o tipo de campo Para Sua Informação -->
        < companyName></ companyName> 
        <!—UserID. Por padrão, o ID do usuário e a empresa no WPC serão obtidos do respectivo contexto de script. Isso será a partir de agora apenas para o tipo de campo Para Sua Informação -->
        < userID></ userID>
        <!--messageIdentifier identifica com exclusividade cada mensagem-->
        < messageIdentifier></ messageIdentifier>
    </wpcHeader>
    <wpcBody>
        < wpcResponse>
            < wpcEntityIdentifier>
                <!—messageidentifier valor da mensagem de pedido --!>
                < wpcMessageIdentifier > </ wpcMessageIdentifier >
                <!—WPC ID da transação criado para a mensagem de pedido --!>
                < wpcTransactionID ></ wpcTransactionID >
        </ wpcEntityIdentifier>
        < wpcNotification >
            < notificationInfo type=”SUCCESS” >
            < notificationCode >000</ notificationCode >
        <notificationMessage>SUCCESS</notificationMessage>
        </ wpcResponse>
    </wpcBody>
</envelope>

No caso em que o pedido ainda for processado, a resposta será a mesma enviada imediatamente após o pedido ASYNC ser recebido pelo Product Center

Visão Geral de Scripts e Serviços da Web Envolvidos

Esta seção identifica o script e os serviços da Web que estão envolvidos com a integração do portal.

wpc_portal_integrated_dev

Script de Implementação de Serviços da 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

Diferentes Formatos de Mensagem

Nas seções a seguir estão mensagens XML de amostra e respectivos scripts para chamar os comandos determinados.

Incluir

O pedido determinado incluirá o item e retornará a resposta de sucesso ou falha.

// to invoke the item add message
<?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>

Modificação

O pedido fornecido a seguir modificará o item com a chave primária fornecida

// to invoke MODIFY message
<?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>

Excluir

Para excluir o item fornecido com a chave primária fornecida

// to invoke DELETE message
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"); // This will have the transaction id. Check /scripts/soap/messages/response/<TXN_ID> for the actual response.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Pesquisar

É possível utilizar todo tipo de parâmetro de procura possível em uma seleção avançada nesta mensagem de procura. Examine o WSDL para obter mais formatos de mensagem para cada critério de procura.

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"); // This will have the transaction id. Check /scripts/soap/messages/response/<TXN_ID> for the actual response.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Esboço do Item

Esta mensagem retornará a especificação primária do catálogo fornecido e no caso de as informações de categoria estarem presentes e caso haja qualquer especificação de categoria de item anexada a essa categoria incluindo essa, as informações serão enviadas de volta como resposta

// to invoke the ITEMSKELETON message

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"); // This will have the transaction id. Check /scripts/soap/messages/response/<TXN_ID> for the actual response.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Detalhes da Transação de Consulta

Esse comando será processado pela própria estrutura de serviços da Web do WPC e não será processado pela respectiva implementação de script. A estrutura de serviços da Web fornecerá um ID de transação exclusivo para cada pedido ASYNC. Quando o WPS envia a mensagem com os detalhes da transação de consulta tendo o ID de transação fornecido, a estrutura se encarrega de enviar de volta a resposta gerada pelo script de implementação.

// to invoke QUERY_TRANSACTION_DETAILS message
<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>

Status da Transação de Consulta

Esta é uma mensagem de polling que será enviada pelo usuário em um intervalo regular para descobrir se o ID de transação fornecido (mensagem ASYNC) está concluído ou não. Essa mensagem também será manipulada pela estrutura de serviços da Web e não pelos scripts de implementação

// to invoke QUERY_TRANSACTION_STATUS message
<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>

Fazer Upload de Arquivo

Para fazer upload do arquivo enviado como anexos de serviços da Web, como os scripts de implementação de resposta copiarão o arquivo transferido por upload para a respectiva pasta supplier/ctg_files no armazenamento de documentos e enviará de volta o caminho do armazenamento de documentos atual.

// to invoke the UPLOAD_FILE message with out attachments

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"); // This will have the transaction id. Check /scripts/soap/messages/response/<TXN_ID> for the actual response.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Importar

Antes de chamar este comando, o comando de upload de arquivo será utilizado para fazer upload do arquivo CSV tendo dados necessários; em seguida, a mensagem de importação será enviada junto com o caminho de armazenamento de documentos do arquivo transferido por upload e o mesmo será processado pelo script de implementação para inclusão ou atualização dos respectivos registros. 

// to invoke the IMPORT message with out attachments

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"); // This will have the transaction id. Check /scripts/soap/messages/response/<TXN_ID> for the actual response.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Detalhe do Item

Para obter todos os atributos de item incluindo a categoria específica, caso aplicável.

// to get the item detail
<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"); // This will have the transaction id. Check /scripts/soap/messages/response/<TXN_ID> for the actual response.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Clonar Item

Esta mensagem retornará uma resposta de detalhes do item sem nenhum valor para a chave primária.

// to invoke clone item message
// to get the item detail
<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"); // This will have the transaction id. Check /scripts/soap/messages/response/<TXN_ID> for the actual response.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Consultar Filho do Catálogo

Em resposta, esse comando retornará todas as categorias e itens filho na categoria atual para o catálogo fornecido e sua árvore de categorias primária, se nenhuma informação de árvore de categorias for fornecida na mensagem de pedido

// to invoke the QUERY_CATALOG_CHILDREN message
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"); // This will have the transaction id. Check /scripts/soap/messages/response/<TXN_ID> for the actual response.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Obter Catálogos

Esta mensagem obterá todos os catálogos que estão disponíveis atualmente no WPC e enviará através da mesma como resposta

// to invoke the GET_CATALOGS message type

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"); // This will have the transaction id. Check /scripts/soap/messages/response/<TXN_ID> for the actual response.
   respLog.writeln(resp);
   respLog.save("Response.xml");

Obter Visualização de Catálogo

Retorna a visualização especificada na resposta XML. Essa mensagem não está sendo utilizada pelo Product Center nesse momento.

Obter Recurso 

Isso retornará a respectiva resposta solicitada como um anexo

// to invoke the GET_RESOURCE message
<?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>

 

Avisos

A IBM pode não oferecer os produtos, serviços ou recursos discutidos neste documento em todos os países. Consulte um representante IBM local para obter informações sobre produtos e serviços disponíveis atualmente em sua área. Qualquer referência a um produto, programa ou serviço da IBM não pretende declarar ou inferir que somente aquele produto, programa ou serviço da IBM pode ser utilizado. Qualquer produto, programa ou serviço funcionalmente equivalente, que não infrinja nenhum direito de propriedade intelectual da IBM ou quaisquer outros direitos da IBM, poderá ser utilizado em substituição a este produto programa ou serviço. Entretanto, é responsabilidade do usuário avaliar e verificar a operação de qualquer produto, usuário ou operação não-IBM.

A IBM pode ter aplicativos de patente ou de patente pendente cobrindo assunto sujeito descrito nesse documento. O fornecimento desta publicação não lhe garante direito algum sobre tais patentes. Pedidos de licença devem ser enviados, por escrito, para:

Gerência de Relações Comerciais e Industriais da IBM Brasil
Av. Pasteur, 138-146
Botafogo
Rio de Janeiro, RJ
CEP 22290-240

O parágrafo a seguir não se aplica ao Reino Unido ou a qualquer país no qual tais previsões são incompatíveis com a lei local:

A INTERNATIONAL BUSINESS MACHINES CORPORATION FORNECE ESTA PUBLICAÇÃO "NO ESTADO EM QUE SE ENCONTRA", SEM GARANTIA DE NENHUM TIPO, SEJA EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS IMPLÍCITAS DE MERCADO OU DE ADEQUAÇÃO A UM DETERMINADO PROPÓSITO. Alguns países não permitem a exclusão de garantias expressas ou implícitas em certas transações; portanto, esta disposição pode não se aplicar a você.

Essas informações poderiam incluir inadequações técnicas ou erros tipográficos. Periodicamente, são feitas alterações nas informações aqui contidas; tais alterações serão incorporadas em futuras edições desta publicação. A IBM pode, a qualquer momento, aprimorar e/ou alterar os produtos e/ou programas descritos nesta publicação sem aviso prévio.

Referências nestas informações a Web sites não-IBM são fornecidas apenas por conveniência e não representam de forma alguma um endosso a estes Web sites. Os materiais desses sites da Web não fazem parte deste produto IBM e o uso dos mesmos fica por sua própria conta e risco.

A IBM pode utilizar ou distribuir as informações fornecidas da maneira que achar conveniente, sem que isso implique em qualquer obrigação para com o Cliente.

Os possuidores de licença deste programa que pretendam obter informações sobre o mesmo com objetivo de permitir: (i) a troca de informações entre programas criados independentemente e outros programas (incluindo este) e (ii) a utilização mútua das informações trocadas, devem entrar em contato com:

Gerência de Relações Comerciais e Industriais da IBM Brasil
Av. Pasteur, 138-146
Botafogo
Rio de Janeiro, RJ
CEP 22290-240

Tais informações podem estar disponíveis, sujeitas a termos e condições apropriados, incluindo em alguns casos, o pagamento de uma taxa.

O programa licenciado descrito neste documento e todo o material licenciado disponível são fornecidos pela IBM sob os termos do Contrato com o Cliente IBM, do Contrato de Licença do Programa Internacional IBM ou de qualquer outro contrato equivalente.

Quaisquer dados de desempenho contidos aqui foram determinados em um ambiente controlado. Portanto, os resultados obtidos em outros ambientes operacionais podem variar significativamente. Algumas medidas podem ter sido tomadas em sistemas em nível de desenvolvimento de sistema e não há garantia de que essas medidas serão as mesmas em sistemas geralmente disponíveis. Além disso, alguma medida pode ter sido estimada através de extrapolação. Resultados reais podem variar. Usuários desse documento devem verificar os dados aplicáveis aos seus ambientes específicos.

As informações sobre produtos não-IBM foram obtidas junto aos fornecedores dos respectivos produtos, de seus anúncios publicados ou de outras fontes disponíveis publicamente. A IBM não testou necessariamente estes produtos e não pode confirmar a precisão de seu desempenho, compatibilidade nem qualquer outra reivindicação relacionada a produtos não-IBM. Questões sobre as capacidades dos produtos não IBM devem ser endereçadas aos fornecedores desses produtos.

Estas informações podem conter exemplos de dados e relatórios utilizados nas operações diárias de negócios. Para que sejam ilustrados do modo mais completo possível, os exemplos incluem nomes de indivíduos, empresas, marcas e produtos. Todos estes nomes são fictícios e qualquer semelhança com nomes e endereços utilizados por uma empresa real é mera coincidência.

Todas as declarações em relação a futura direção ou objetivo da IBM estão sujeitas a alterações e retirada sem aviso e representam metas e objetivos somente.

Informações da Interface de Programação

As informações da interface de programação, se fornecidas, foram projetadas para ajudar você a criar software aplicativo utilizando este programa.

As interfaces de programação de uso geral permitem gravar o software aplicativo que obtém os serviços das ferramentas deste programa.

No entanto, estas informações também podem conter informações de diagnóstico, modificação e ajuste. As informações de diagnóstico, modificação e ajuste são fornecidas para ajudá-lo a depurar seu software aplicativo.

Aviso: Não utilize estas informações de diagnóstico, modificação e ajuste como uma interface de programação, pois está sujeita a alterações.

Marcas Registradas e Marcas de Serviço

Os termos a seguir são marcas registradas ou marcas registradas da International Business Machines Corporation nos Estados Unidos e/ou em outros países:

IBM
o logotipo IBM
AIX
CrossWorlds
DB2
Banco de Universal DB2
Domino
Lotus
Lotus Notes
MQIntegrator
MQSeries
Tivoli
WebSphere

Microsoft, Windows, Windows NT e o logotipo Windows são marcas registradas da Microsoft Corporation nos Estados Unidos e/ou em outros países.

MMX, Pentium e ProShare são marcas registradas ou marcas registradas da Intel Corporation nos Estados Unidos e/ou em outros países.

Java e todas as marcas registradas baseadas em Java são marcas registradas da Sun Microsystems, Inc. nos Estados Unidos e/ou em outros países.

Outros nomes de empresas, produtos ou serviços podem ser marcas registradas ou marcas de serviços de terceiros.


O IBM WebSphere Product Center contém determinados Componentes Excluídos (conforme definido no documento pertinente Informações sobre Licença), aos quais são aplicados os seguintes termos adicionais. Este software está licenciado sob os termos e condições do Acordo de Licença do Programa Internacional, sujeito às suas provisões de Componentes Excluídos. A IBM deve fornecer os seguintes avisos juntamente com este software:

i.) O IBM WebSphere Product Center inclui o seguinte software que foi licenciado pela IBM a partir da Apache Software Foundation sob os termos e condições da licença 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

Licença da Apache
Versão 2.0, janeiro de 2004
http://www.apache.org/licenses/

TERMOS E CONDIÇÕES DE USO, REPRODUÇÃO E DISTRIBUIÇÃO

1. Definições.

"Licença" deve significar os termos e as condições de uso, reprodução e distribuição, conforme definido pelas Seções 1 a 9 deste documento.

"Licenciador" deve significar o proprietário de copyright ou a entidade autorizada pelo proprietário do copyright que está concedendo a Licença.

"Entidade Jurídica" deve significar a união da entidade atuante e todas as outras entidades que controlam, são controladas ou que estejam sob controle comum com essa entidade. Para as finalidades desta definição, "controle" significa (i) a capacidade, direta ou indireta, de provocar a direção ou o gerenciamento de tal entidade, seja por contrato ou qualquer outro meio, ou (ii) a detenção de cinqüenta por cento (50%) ou mais das ações pendentes ou (iii) propriedade benéfica de tal entidade.

"Você" (ou "Seu") significa um indivíduo ou uma Entidade Jurídica que está utilizando as permissões concedidas por esta licença.

Formato de "origem" significa o formato preferido para fazer modificações, incluindo, mas não se limitando, ao código fonte do software, à origem da documentação e aos arquivos de configuração.

Formato de "objeto" significa qualquer formato resultante da transformação ou conversão mecânica de um formato de Origem, incluindo, mas
não se limitando ao código de objeto compilado, à documentação gerada e a conversões em outros tipos de mídia.

"Trabalho" significa o trabalho de autoria, seja em formato de Origem ou de Objeto, disponibilizado com a Licença, conforme indicado pelo aviso de copyright incluído no trabalho ou anexado a ele (no Apêndice a seguir é fornecido um exemplo).

"Trabalhos Derivativos" significa qualquer trabalho, seja no formato de Origem ou de Objeto, baseado no (ou derivado do) Trabalho e para o qual as revisões editoriais, as anotações, as elaborações ou outras modificações representam, como um todo, um trabalho original de autoria. Para as finalidades desta Licença, os Trabalhos Derivativos não devem incluir trabalhos que permaneçam separáveis ou simplesmente sejam vinculados (ou ligados por nome) às interfaces do Trabalho e dos Trabalhos Derivativos.

"Contribuição" deve significa qualquer trabalho de autoria, incluindo a versão original do Trabalho e quaisquer modificações ou adições feitas a este Trabalho ou Trabalho Derivativo, que sejam intencionalmente submetidas ao Licenciante para inclusão no Trabalho pelo detentor do copyright ou por um indivíduo ou uma Entidade Jurídica autorizada a submeter em nome do detentor do copyright. Para a finalidade dessa definição, "submetido" significa qualquer formato de comunicação eletrônica, verbal ou escrita enviado
ao Licenciante ou a seus representantes, incluindo, mas não se limitando à comunicação em listas de correio eletrônico, sistemas de controle de código fonte e sistemas de rastreamento de problemas que sejam gerenciados pelo Licenciante, ou em seu nome, com o objetivo de discutir e aprimorar o Trabalho, mas excluindo a comunicação visivelmente marcada ou, então, designada por escrito pelo detentor do copyright como "Não é uma Contribuição."

"Contribuinte" deve significar Licenciante ou qualquer indivíduo ou Entidade Jurídica em nome de quem uma Contribuição foi recebida pelo Licenciante e subseqüentemente incorporada no Trabalho.

2. Concessão de Licença de Copyright. Sujeito aos termos e às condições desta Licença, cada Contribuinte, por meio deste documento, concede a você uma licença de copyright vitalícia, mundial, não exclusiva, gratuita, isenta de direitos autorais e irrevogável para reproduzir, preparar Trabalhos Derivativos, exibir e executar publicamente, sublicenciar e distribuir o Trabalho e estes Trabalhos Derivativos em formato de Origem e Objeto.

3. Concessão de Licença de Patente. Sujeita aos termos e às condições desta Licença, cada Contribuinte, por meio deste documento, concede a você uma licença de patente vitalícia, mundial, não exclusiva, gratuita, isenta de direitos autorais e irrevogável (exceto conforme informado nesta seção) para fazer, ter feito, utilizar, oferecer para venda, vender, importar e, em outro caso, transferir o Trabalho, em que esta licença se aplica somente às reivindicações de patentes licenciáveis por este Contribuinte que sejam necessariamente violadas por seus Contribuições isoladas ou pela combinação de suas Contribuições com o Trabalho a que estas Contribuições foram submetidas. Se Você instituir litigação de patente contra qualquer entidade (incluindo uma reivindicação cruzada ou uma reivindicação em uma ação judicial) alegando que o Trabalho ou uma Contribuição incorporada dentro do Trabalho constitui violação direta ou contribuinte de patente, quaisquer licenças de patentes concedidas a Você sob esta Licença para o Trabalho deverão terminar a partir da data de arquivamento desta litigação.

4. Redistribuição. Você pode reproduzir e distribuir cópias do Trabalho ou de Trabalhos Derivativos deste documento em qualquer meio, com ou sem modificações, e em formulário de Origem ou de Objeto, contanto que Você atenda às seguintes condições:

(a) Você deve fornecer a qualquer outro destinatário do Trabalho ou dos Trabalhos Derivativos uma cópia desta Licença

(b) Você deve fazer com que quaisquer arquivos modificados enviem avisos proeminentes informando que Você alterou os arquivos

(c) Você deve reter, no formulário de Origem de quaisquer Trabalhos Derivativos que Você distribuir, todos os avisos de copyright, patente, marca registrada e
atribuição a partir do formulário de Origem do Trabalho, excluindo os avisos que não pertencem a nenhum parte dos Trabalhos Derivativos

(d) Se o Trabalho incluir um arquivo de texto "AVISO" como parte de sua distribuição, quaisquer Trabalhos Derivativos que Você distribui devem
incluir uma cópia legível dos avisos de atribuição contidos dentro de tal arquivo AVISO, excluindo esses avisos que não
pertencem a nenhuma parte dos Trabalhos Derivativos, em pelo menos um dos seguintes locais: dentro de um arquivo de texto AVISO distribuído
como parte dos Trabalhos Derivativos; no formato ou documentação de Origem, se fornecida junto com os Trabalhos Derivativos; ou
em uma exibição gerada pelos Trabalhos Derivativos, se e onde quer que tais avisos de terceiros normalmente aparecer. O conteúdo
do arquivo AVISO é apenas para fins informativos e não modifica a Licença. É possível incluir os Seus próprios avisos
de distribuição nos Trabalhos Derivativos distribuídos, ao longo ou como um adendo ao texto de AVISO do Trabalho, contanto que tais avisos de atribuição adicionais não possam ser construídos durante a modificação da Licença.

É possível incluir Sua própria declaração de copyright nas Suas Modificações e pode fornecer termos e condições adicionais ou diferentes de licença para uso, reprodução ou distribuição de Suas modificações ou para quaisquer Trabalhos Derivativos como um todo, contanto que Seu uso, reprodução e distribuição do Trabalho estejam em conformidade com as condições descritas nesta Licença.

5. Submissão de Contribuições. A menos que Você informe explicitamente o contrário, qualquer Contribuição intencionalmente submetida para inclusão no Trabalho por Você ao Licenciante deve estar sob os termos e as condições desta Licença, sem nenhum termo ou condição adicional. Apesar do que foi dito anteriormente, nada descrito neste documento deve substituir ou modificar os termos de nenhum acordo de licença distinto que você tenha firmado com o Licenciante sobre tais Contribuições.

6. Marcas Registradas. Esta Licença não concede permissão para utilizar os nomes comerciais, as marcas registradas, as marcas de serviço ou os nomes de produto do Licenciante, exceto conforme requerido para uso aceitável e costumeiro na descrição da origem do Trabalho e na reprodução do conteúdo do arquivo NOTICE.

7. Isenção de Responsabilidade de Garantia. A menos que requerido pela lei aplicável ou firmado um acordo, por escrito, o Licenciador fornece o Trabalho (e cada
Contribuinte fornece suas Contribuições) COM BASE "NO ESTADO EM QUE SE ENCONTRA", SEM GARANTIA DE NENHUM TIPO, SEJA EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS IMPLÍCITAS DE NÃO-VIOLAÇÃO, MERCADO OU DE ADEQUAÇÃO A UM DETERMINADO PROPÓSITO. Você é o único responsável pela determinação da adequação de uso ou redistribuição do Trabalho e assume quaisquer riscos associados ao Seu exercício de permissões contidos nesta Licença.

8. Limitação de Responsabilidade. Em nenhuma circunstância e sob nenhuma teoria jurídica, seja em danos (incluindo negligência), contrato ou, de alguma outra forma,
a menos que seja exigido pela lei aplicável (como atos deliberados e excessivamente negligentes), ou acordo por escrito, o Contribuinte deverá ser responsabilizado por Você por danos, incluindo danos diretos, indiretos, especiais, acidentais ou resultantes, de qualquer espécie que surjam como resultado desta Licença ou do uso ou da incapacidade de uso do Trabalho (incluindo, mas não se limitando a danos por perda de clientes, interrupção do trabalho, defeito ou mau funcionamento do computador ou qualquer e todos os outros danos ou perdas comerciais), mesmo que esse Contribuinte tenha sido avisado da possibilidade desses danos.

9. Aceitando a Garantia ou Responsabilidade Adicional. Durante a redistribuição do Trabalho ou dos Trabalhos Derivativos descritos neste documento, Você pode optar por oferecer e cobrar uma taxa para aceitação de suporte, garantia, indenização ou outras obrigações e/ou direitos de responsabilidades consistentes com esta Licença. No entanto, na aceitação dessas obrigações, Você pode agir somente em Seu próprio nome e em Sua exclusiva responsabilidade, não em nome de nenhum outro Contribuinte e somente se concordar em indenizar, defender e reter cada Contribuinte ileso de qualquer responsabilidade incorrida ou reivindicações asseguradas contra esse Contribuinte por motivo da aceitação de qualquer garantia ou responsabilidade adicional.

FIM DOS TERMOS E DAS CONDIÇÕES

APÊNDICE: Como Aplicar a Licença Apache em seu Trabalho.

Para aplicar a Licença Apache em seu trabalho, anexe o seguinte aviso padronizado, aos campos colocados entre colchetes "[]"
substituídos por suas próprias informações de identificação. (Não inclua os colchetes!) O texto deve ficar envolvido na sintaxe de comentário
adequada para o formato de arquivo. Recomendamos também que um arquivo ou nome de classe e descrição do objetivo sejam incluídos na mesma "página impressa" que o aviso de direitos autorais, para facilitar a identificação de archives de terceiros.

Copyright [aaaa] [nome do proprietário de copyright]

Licenciado sob a Licença Apache, Versão 2.0 (a "Licença"); você não poderá utilizar esse arquivo, exceto em conformidade com a Licença. É possível obter uma cópia da Licença em

http://www.apache.org/licenses/LICENSE-2.0

A menos que requerido pela lei aplicável ou firmado um acordo, por escrito, o software distribuído na Licença, é distribuído COM BASE "NO ESTADO EM QUE SE ENCONTRA", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam expressas ou implícitas. Consulte a Licença para obter as permissões de controle no idioma específico e limitações sob a Licença.

ii.) O IBM WebSphere Product Center inclui o seguinte software que foi licenciado pela IBM a partir da Scott Hudson, Frank Flannery and C. Scott Ananian sob os termos e condições a seguir:

- Cup Parser Generator v0.10k

Aviso de Copyright, Licença e Isenção de Responsabilidade do CUP Parser Generator
Copyright 1996-1999 da Scott Hudson, Frank Flannery, C. Scott Ananian 
A permissão para utilizar, copiar, modificar e distribuir este software e sua documentação para qualquer finalidade e sem taxa é concedida por meio deste documento, contanto que o aviso de copyright acima apareça em todas as cópias e que tanto o aviso de copyright como esta isenção de garantia e de aviso de permissão apareçam na documentação de suporte e que os nomes dos autores ou de seus empregadores não sejam utilizados em propaganda ou publicidade relativa à distribuição do software sem permissão prévia específica por escrito.Os autores e seus empregadores renunciam todas as garantias relativas a este software, incluindo todas as garantias implícitas de mercado e adequação. Em hipótese nenhuma os autores ou seus empregadores devem ser responsabilizados por danos especiais, indiretos ou resultantes ou por danos que resultem em perda de uso, de dados ou de lucros, seja em uma ação de contrato, negligência ou outra ação prejudicial, proveniente do uso ou desempenho deste software ou em conexão com o seu uso ou desempenho.  

iii.) O IBM WebSphere Product Center inclui o seguinte software que foi licenciado pela IBM a partir da Elliot Joel Berk and C. Scott Ananian sob os termos e condições a seguir:

- JLex v1.2.6

AVISO DE COPYRIGHT, LICENÇA E ISENÇÃO DE RESPONSABILIDADE DA JLEX.
Copyright 1996-2003 da Elliot Joel Berk and C. Scott Ananian 
A permissão para utilizar, copiar, modificar e distribuir este software e sua documentação para qualquer finalidade e sem taxa é concedida por meio deste documento, contanto que o aviso de copyright acima apareça em todas as cópias e que tanto o aviso de copyright como esta isenção de garantia e de aviso de permissão apareçam na documentação de suporte e que o nome dos autores ou de seus empregadores não seja utilizado em propaganda ou publicidade relativa à distribuição do software sem permissão prévia específica por escrito.Os autores e seus empregadores renunciam todas as garantias relativas a este software, incluindo todas as garantias implícitas de mercado e adequação. Em hipótese nenhuma os autores ou seus empregadores devem ser responsabilizados por danos especiais, indiretos ou resultantes ou por danos que resultem em perda de uso, de dados ou de lucros, seja em uma ação de contrato, negligência ou outra ação prejudicial, proveniente do uso ou desempenho deste software ou em conexão com o seu uso ou desempenho. Java é uma marca registrada da Sun Microsystems, Inc. As referências à linguagem de programação Java em relação ao JLex não indicam que a Sun aprova este produto. 

iv.) O IBM WebSphere Product Center inclui o seguinte software que foi licenciado pela IBM a partir da International Business Machines Corporation e outros sob os termos e condições a seguir:

- ICU4J v2.8

ICU License - ICU 1.8.1 e posterior
AVISO DE COPYRIGHT E PERMISSÃO

Copyright (c) 1995-2003 International Business Machines Corporation e outros
Todos os direitos reservados.

Desse modo, é concedido permissão gratuitamente a qualquer pessoa que obtém uma cópia desse software e de arquivos da documentação associados (o "Software"), para lidar com o Software sem restrição, incluindo sem limitação os direitos de uso, cópia, modificação, mesclagem, publicação, distribuição e/ou venda de cópias do Software, e permissão de pessoas a quem o Software é fornecido a fazer isso, contanto que os avisos de direitos autorais e esse aviso de permissão apareçam em todas as cópias do Software e que os avisos de direitos autorais acima e esse aviso de permissão apareçam na documentação de suporte.

O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRA", SEM GARANTIA DE NENHUM TIPO, SEJA EXPRESSA OU IMPLÍCITA, INCLUINDO MAS NÃO SE LIMITANDO ÀS GARANTIAS DE MERCADO E ADEQUAÇÃO A UM DETERMINADO PROPÓSITO E NÃO-TRANSGRESSÃO DE DIREITOS DE TERCEIROS. EM NENHUMA CIRCUNSTÂNCIA, O PORTADOR OU PORTADORES DE DIREITOS AUTORAIS INCLUÍDOS NESSE AVISO SERÁ(ÃO) RESPONSABILIZADO(S) POR NENHUMA EXIGÊNCIA, POR NENHUM DANO ESPECÍFICO, INDIRETO OU CONSEQÜENTE, NENHUM DANO RESULTANTE DA PERDA DE USO, DADOS OU LUCROS, SE EM UMA AÇÃO DE CONTRATO, NEGLIGÊNCIA OU OUTRA AÇÃO PREJUDICIAL, QUE SURGE FORA OU EM RELAÇÃO AO USO OU DESEMPENHO DESSE SOFTWARE.

Exceto como contido nesse aviso, o nome de um portador de direitos autorais não deverá ser utilizado na propaganda ou, do contrário, para promover a venda, o uso e outras transações desse Software, sem antes ter autorização por escrito do portador de direitos autorais.

-----------------------------------------------------------------------------
Todas as marcas registradas aqui mencionadas, são a propriedade de seus respectivos proprietários.