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.
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
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:
Incluir item no WebSphere Product Center
Modificar item no WebSphere Product Center
Excluir item do WebSphere Product Center
Procurar itens com base no GTIN (Global Trade Identification Number), SKU (Stock Keeping Unit) e GLN (Global Location Number)
Suportar seleções
Upload e download de CSV (Valores Separados por Vírgula)
Atualizações em massa
Este documento supõe que os seguintes componentes são utilizados no ambiente do WebSphere Product Center:
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.
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.
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.
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:
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>
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.
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.
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.
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>
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.
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.
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.
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
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.
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.
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.
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.
Esse artigo descreve a arquitetura para a estrutura de integração do portal para o Product Center.
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.
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.
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.
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.
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.
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_PortalSe 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_PortalNota: 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.
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
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> </td>
<td align="<%= bidiAlignLeft %>" class="wpsEditText">
<label for="company">
<wps:text key="company" bundle="nls.field"/>
</label>
</td>
</tr>
<tr>
<td> </td>
<td> <input dir="ltr" class="wpsFieldText" size="16" value="" id="company" name="company" type="text"></td>
</tr>
7. 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
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=">="/>
<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>
Ao final deste capítulo, a seguinte tarefa deverá ter sido concluída:
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.
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
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>
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.
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;
}
}
}
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
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/>
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>
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:
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.
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.
Como parte da customização do portal, crie as seguintes etiquetas no portal conforme mostrado na Figura 1:
Figura 1
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.
Organize os portlets em várias guias, como a seguir:
Guia Home |
|
Guia Procurar |
|
Guia Criar/Editar Item |
|
Guia Edição em Massa |
|
Guia Fazer Upload |
|
Guia Registro |
|
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.
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).
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
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
Ao final deste capítulo, as seguintes tarefas terão sido executadas:
Este capítulo fornece detalhes sobre:
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.
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.
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
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
Nas seções a seguir estão mensagens XML de amostra e respectivos scripts para chamar os comandos determinados.
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>
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>
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");
É 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");
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");
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>
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");
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");
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");
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");
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");
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");
Retorna a visualização especificada na resposta XML. Essa mensagem não está sendo utilizada pelo Product Center nesse momento.
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>
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.
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.
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.