 | Nível: Introdutório Lakshmi Priya, Systems Software Engineer, IBM
06/Ago/2009 Os novos recursos introduzidos no portlet Java, especificação 2.0, baseados no JSR 286, dão suporte à coordenação entre os portlets. Eventos e parâmetros de renderização pública são dois mecanismos que permitem que os portlets se comuniquem uns com os outros. Após uma breve passagem por alguns dos principais conceitos, este artigo o orienta na criação de uma amostra de aplicativo de portlet básico JSR 286, usando o Portal Toolkit no IBM® Rational® Application Developer, Versão 7.5. No decorrer do artigo, será explicado como o Portal Toolkit acelera todo o processo de forma a aproveitar esses recursos. Instruções detalhadas mostram como ativar eventos e parâmetros de renderização pública usando o novo assistente de eventos e o aprimorado editor visual do descritor de implementação do portlet. A amostra de aplicativo que você desenvolverá no artigo pode ser implementada no IBM® WebSphere® Portal, Versão 6.1.
Conceitos principais
Os principais conceitos deste artigo são inicialmente explicados e, em seguida, ilustrados usando uma amostra de aplicativo de portlet.
Eventos
A Versão 2 da especificação Java™ Specification Request (JSR) 286 possibilita que portlets enviem e recebam eventos. Os eventos permitem que os portlets se comuniquem uns com os outros. O IBM® Rational® Application Developer, Versão 7.5, fornece um conjunto de ferramentas para definir eventos, ativar portlets e passar dados entre eles usando os eventos. Um portlet pode lidar com ambas as extremidades da comunicação:
- Enviar eventos para outros portlets
- Receber e processar eventos de outros portlets
Atributos de eventos
Cada evento deve ter um nome e, se possível, outros atributos:
- Nome: Um nome exclusivo para o evento. O nome do evento pode ser um QName completo: um nome qualificado conforme definido na especificação XML, que consiste em um espaço de nomes (por exemplo, http://www.ibm.com) e em uma parte local (por exemplo, sampleEvent). Como alternativa, é possível usar o mesmo espaço de nomes para vários eventos, declarando-o como o espaço de nomes padrão e, em seguida, especificando apenas a parte local para cada evento.
- Descrição: (Opcional) A descrição do evento.
- Tipo de valor: (Opcional) Um nome completo de classe Java do valor a ser transferido com o evento.
- Alias: (Opcional) Um nome qualificado pelo espaço de nomes para o evento.
Para criar um aplicativo de portlet que incorpore eventos e parâmetros de renderização pública para a comunicação entre portlets, conclua as seguintes tarefas:
- Crie um projeto de portlet JSR 286 e portlets.
- Crie uma definição de evento no descritor de implementação do portlet (PDD).
- Adicione o evento como uma publicação suportada ou um evento de processamento pelo portlet.
- Modifique a ação do processo ou o código de evento na classe do portlet para publicar ou processar o evento.
- Adicione parâmetros de renderização pública.
- Publique o projeto do portlet no servidor.
- Conecte os portlets uns aos outros.
Essas tarefas são extremamente simplificadas pelo uso das ferramentas fornecidas pelo Rational Application Developer V7.5.
Parâmetros de renderização pública
A especificação JSR 286 fornece outro mecanismo que permite a coordenação entre os portlets: parâmetros de renderização pública (consulte Recursos para saber onde aprender mais sobre eles). Esses parâmetros oferecem uma forma de compartilhar parâmetros de solicitação entre os portlets.
Atributos dos parâmetros de renderização pública
Cada parâmetro deve ter um nome e, se possível, outros atributos:
- Nome: (Obrigatório) Um nome exclusivo para o parâmetro, seja uma cadeia de caractere ou um nome qualificado pelo espaço de nomes. Selecione o espaço de nomes padrão ou especifique outro. A cadeia de caractere localizada que você inseriu como nome do evento é acrescentada ao espaço de nomes.
- Identificador: (Obrigatório) Uma cadeia de caractere usada no código de portlet para fazer referência ao parâmetro de renderização.
- Descrição: (Opcional) Uma descrição do parâmetro de renderização.
- Alias: (Opcional) Um nome qualificado pelo espaço de nomes para o parâmetro.
Amostra de aplicativo usado neste artigo
Neste artigo, uma amostra de aplicativo de portlet demonstra a utilidade dos recursos de eventos e de parâmetros de renderização pública do JSR 286. Ela é usada por uma companhia de navegação para manutenção dos detalhes de seus pedidos e clientes. Ele consiste em três portlets:
- O portlet Orders faz a manutenção dos detalhes mensais dos pedidos da companhia.
- O portlet OrderDetails mostra os detalhes de um pedido.
- O portlet TrackingDetails mostra os detalhes de acompanhamento de um pedido.
Este artigo demonstra como criar eventos e parâmetros de renderização pública e usá-los na amostra. Consulte Download para obter a amostra completa.
O caso de uso da amostra
Um usuário pode selecionar o ID do pedido de um mês para visualizar os detalhes do pedido e do acompanhamento. Isso é implementado com o uso de eventos e parâmetros de renderização pública. O portlet Orders resume as informações de todos os pedidos durante um mês. Quando o usuário clica no ID de um pedido no portlet Orders, o portlet aciona um evento. Esse evento é processado pelo portlet OrderDetails, que mostra os detalhes do pedido do ID selecionado. O portlet OrderDetails, em seguida, busca o ID de acompanhamento do pedido em seus detalhes e os passa para o portlet TrackingDetails como um parâmetro de renderização. O portlet TrackingDetails, então, mostra os detalhes de acompanhamento desse pedido.
- Para que esse caso de uso funcione, utilize o Portal Toolkit no Rational Application Developer 7.5 para, primeiro, declarar um evento chamado
OrderIDType. Esse evento é adicionado como um evento de publicação suportado no portlet Orders, e como um evento de processamento suportado no portlet OrderDetails.
- Depois, crie o parâmetro de renderização pública
TrackingIDType e faça com que os portlets OrderDetails e TrackingDetails suportem o parâmetro.
Criação do projeto de portlet JSR 286 e dos portlets
O assistente Projeto de Portlet no Rational Application Developer suporta a criação de projetos de portlet compatíveis com o JSR 286.
Para criar o projeto de portlet:
- Clique em Arquivo >Novo > Projeto de Portlet para abrir o assistente.
- Especifique os detalhes, conforme mostrado na Figura 1:
- Para o ambiente de tempo de execução de destino, selecione WebSphere Portal v6.1.
- Para o API do portlet, selecione Portlet JSR 286.
- Para o tipo de portlet, selecione Portlet Básico.
Figura 1. Assistente de criação do projeto de portlet JSR 286
A próxima etapa é adicionar os portlets necessários ao aplicativo de portlet que você criou. Considerando-se que o artigo abrange três portlets na amostra de aplicativo, é possível adicionar esses portlets ao projeto de portlet (consulte a Figura 2):
- Clique com o botão direito do mouse no descritor de implementação do portlet e selecione Novo > Portlet.
- Insira o nome do portlet como
OrderDetail e clique em Concluir.
- Repita essas etapas para adicionar os outros dois portlets: OrdersPortlet e TrackingPortlet.
Figura 2. Assistente de criação do portlet
Observação: Este artigo não trata da modificação de arquivos Java™Server Pages (JSP™), nem da adição da função desejada aos portlets, uma vez que o foco é a criação de eventos e parâmetros de renderização pública. Supõe-se que os portlets passaram por modificações, com o portlet Orders mostrando os pedidos do mês, o portlet OrderDetails mostrando os detalhes do pedido e o portlet Tracking mostrando os detalhes de acompanhamento do pedido.
A Figura 3 mostra a aparência do OrdersPortlet após ser publicado no WebSphere Application Server V6.1.
Figura 3. Portlet Orders
Criação da definição de um evento no descritor de implementação do portlet
É fácil criar eventos com o assistente de eventos incorporado no Rational Application Developer. Para criar os três eventos:
- Expanda o projeto de portlet no Explorador de Projetos.
- Clique com o botão direito do mouse no descritor de implementação do portlet e selecione Evento.
Como mostra a Figura 4, há duas opções disponíveis em Evento:
- Permitir que Este Portlet Publique Eventos
- Permitir que Este Portlet Processe Eventos
Figura 4. Opções de eventos
Clique para ampliar
Adição do evento como um evento de publicação do portlet
Estas ações são executadas quando você seleciona a primeira opção, que é "Permitir que Este Portlet Publique Eventos":
- Adicione a definição do evento ao aplicativo de portlet
- Adicione o evento como um evento de publicação suportado ao portlet
- Modifique os métodos
processAction() ou processEvent() para publicar o evento
Estas opção são executadas quando você seleciona a outra opção, "Permitir que Este Portlet Processe Eventos":
- Adicione a definição do evento ao aplicativo de portlet, caso essa definição ainda não exista
- Adicione o evento como um evento de processamento suportado ao portlet
- Modifique os métodos processEvent() para processar o evento
A próxima etapa é criar o evento usando o assistente. Para permitir que o portlet Orders publique o evento OrderIDType:
- Clique com o botão direito do mouse no portlet Orders no descritor de implementação do portlet.
- Selecione Evento > Permitir que Este Portlet Publique Eventos. Essa ação abre o assistente.
- Especifique os detalhes, como na Figura 5:
- Para o Nome do evento, selecione OrderIDType.
- Para o Tipo de valor, especifique Cadeia de caractere.
Figura 5. Assistente para permitir que o portlet publique eventos
- Clique em Concluir.
Esse assistente faz duas alterações no descritor de implementação do portlet:
- Adiciona a definição do evento ao aplicativo de portlet
- Adiciona o evento como um evento publicado suportado ao portlet
O código em negrito na Lista 1 mostra como o código do descritor de implementação do portlet é modificado pelo assistente do evento.
Lista 1. Modificações no código do descritor de implementação
<?xml version="1.0" encoding="UTF-8"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd
http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
id="com.ibm.jsr286eventrenderparam.JSR286EventRenderParamPortlet.19a07d46c1">
<portlet>
<portlet-name>OrderDetail</portlet-name>
<?xml version="1.0" encoding="UTF-8"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd
http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
id="com.ibm.jsr286eventrenderparam.JSR286EventRenderParamPortlet.19a07d46c1">
<portlet>
<portlet-name>OrderDetail</portlet-name>
<display-name xml:lang="en">OrderDetail</display-name>
<display-name>OrderDetail</display-name>
<portlet-class>
com.ibm.jsr286eventrenderparam.OrderDetailPortlet
</portlet-class>
<init-param>
<name>wps.markup</name>
<value>html</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
</supports>
<supported-locale>en</supported-locale>
<resource-bundle>
com.ibm.jsr286eventrenderparam.nl.OrderDetailPortletResoure
</resource-bundle>
<portlet-info>
<title>OrderDetail</title>
<short-title>OrderDetail</short-title>
<keywords>OrderDetail</keywords>
</portlet-info>
</portlet>
<portlet>
<portlet-name>OrdersPortlet</portlet-name>
<display-name xml:lang="en">OrdersPortlet</display-name>
<display-name>OrdersPortlet</display-name>
<portlet-class>
com.ibm.jsr286eventrenderparam.OrdersPortlet
</portlet-class>
<init-param>
<name>wps.markup</name>
<value>html</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
</supports>
<supported-locale>en</supported-locale>
<resource-bundle>
com.ibm.jsr286eventrenderparam.nl.OrdersPortletResource
</resource-bundle>
<portlet-info>
<title>OrdersPortlet</title>
<short-title>OrdersPortlet</short-title>
<keywords>OrdersPortlet</keywords>
</portlet-info>
<supported-publishing-event>
<name>OrderIDType</name>
</supported-publishing-event>
</portlet>
<portlet>
<portlet-name>TrackingPortlet</portlet-name>
<display-name xml:lang="en">TrackingPortlet</display-name>
<display-name>TrackingPortlet</display-name>
<portlet-class>
com.ibm.jsr286eventrenderparam.TrackingPortlet
</portlet-class>
<init-param>
<name>wps.markup</name>
<value>html</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
</supports>
<supported-locale>en</supported-locale>
<resource-bundle>
com.ibm.jsr286eventrenderparam.nl.TrackingPortletResource
</resource-bundle>
<portlet-info>
<title>TrackingPortlet</title>
<short-title>TrackingPortlet</short-title>
<keywords>TrackingPortlet</keywords>
</portlet-info>
</portlet>
<default-namespace>http://JSR286EventRenderParam/</default-namespace>
<event-definition>
<name>OrderIDType</name>
<value-type>java.lang.String</value-type>
</event-definition>
</portlet-app>
|
 |
Modificação do código de ação do processo na classe do portlet para publicar o evento
O método processAction() é, em seguida, modificado para publicar o evento, como mostra a Lista 2.
Lista 2. Modificações no evento processAction( )
public void processAction(ActionRequest request, ActionResponse response)
throws PortletException, java.io.IOException {
if( request.getParameter(FORM_SUBMIT) != null ) {
// Configure o formato do texto no session bean
OrdersPortletSessionBean sessionBean = getSessionBean(request);
if( sessionBean != null )
sessionBean.setFormText(request.getParameter(FORM_TEXT));
}
//Inicialize os campos na classe de acordo com seu requisito
java.lang.String sampleObject = new java.lang.String();
response.setEvent("OrderIDType", sampleObject);
}
|
É necessário customizar o código gerado pelo assistente de eventos para que ele se ajuste às suas necessidades. Uma vez que é necessário enviar o OrderIDType, o ID do pedido vem do parâmetro do pedido de ação quando o ID do pedido é selecionado (consulte a Lista 3).
Lista 3. Código para enviar o OrderIDType
String order_id = request.getParameter(ORDER_ID);
if (order_id!=null)
response.setEvent("OrderIDType", order_id);
|
O assistente modifica o portlet no descritor de implementação do portlet, conforme mostrado no Explorador de Projetos na Figura 6. No nó OrdersPortlet, aparece o evento OrderIDType.
Figura 6. Explorador de Projetos
Adicione o evento como um evento de processamento suportado pelo portlet
Em seguida, o ID do pedido precisa ser recebido pelo portlet OrderDetail. Em outras palavras, o evento publicado agora precisa ser processado pelo portlet OrderDetail.
Para permitir que o portlet processe o evento:
- Expanda o nó Descritor de Implementação do Portlet.
- Clique com o botão direito do mouse no portlet OrderDetail e selecione Evento > Permitir que Este Portlet Processe Eventos.
Figura 7. Opções de processamento de eventos
Clique para ampliar
O assistente "Permitir que Este Portlet Processe Eventos" é aberto, como mostra a Figura 8.
Figura 8. Janela Permitir que Este Portlet Processe Eventos
- Para o Nome do Evento, selecione OrderIDType, que já foi declarado usando o assistente de publicação de eventos. Não é possível modificar a definição do evento aqui, mas é possível editá-la manualmente no descritor de implementação do portlet.
- Clique em Concluir para concluir o processamento:
- Adicione o elemento
supported-processing-event ao Portlet OrderDetail (a definição do evento já foi adicionada quando você o publicou)
- Modifique o método
processEvent() para processar o evento
A seção do portlet para o portlet OrderDetail é modificada, como mostra a Lista 4.
Lista 4. Modificações no portlet OrderDetail
<portlet>
<portlet-name>OrderDetail</portlet-name>
<display-name xml:lang="en">OrderDetail</display-name>
<display-name>OrderDetail</display-name>
<portlet-class>
com.ibm.jsr286eventrenderparam.OrderDetailPortlet
</portlet-class>
<init-param>
<name>wps.markup</name>
<value>html</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
</supports>
<supported-locale>en</supported-locale>
<resource-bundle>
com.ibm.jsr286eventrenderparam.nl.OrderDetailPortletResoure
</resource-bundle>
<portlet-info>
<title>OrderDetail</title>
<short-title>OrderDetail</short-title>
<keywords>OrderDetail</keywords>
</portlet-info>
<supported-processing-event>
<name>OrderIDType</name>
</supported-processing-event>
</portlet>
|
Modifique o código do evento na classe do portlet para processar o evento
Como mostra a Lista 5, as alterações também são feitas ao método processEvent(), que é responsável pelo processamento do evento recebido.
Lista 5. Modificações ao método processEvent( )
public void processEvent(EventRequest request, EventResponse response)
throws PortletException, java.io.IOException {
Event sampleEvent = request.getEvent();
if(sampleEvent.getName().toString().equals("OrderIDType")) {
Object sampleProcessObject = sampleEvent.getValue();
}
|
É necessário enviar o TrackingID do portlet OrderDetail para o portlet Tracking. Por isso, é necessário modificar o método processEvent(), como mostra o código em negrito na Lista 6.
Lista 6. Modificações ao método processEvent( )
public void processEvent(EventRequest request, EventResponse response)
throws IOException, PortletException {
Event sampleEvent = request.getEvent();
if(sampleEvent .getName().equals("OrderIDType")) {
Object sampleProcessObject = sampleEvent.getValue();
response.setRenderParameter(ORDER_ID, sampleProcessObject.toString());
//defina a id da ordem como um parâmetro de processamento
OrderDetail od = ShippingDB.getOrderDetail(ev.getValue().toString());
if (od != null) {
request.getPortletSession().setAttribute(ORDER_DETAIL, od);
response.setRenderParameter("TrackingID", od.getTrackingId());
//localize o id de rastreio a partir dos detalhes do pedido e defina-o como um
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- Erro XML: A linha anterior não é maior do que o máximo de 90 caracteres ---------|
parâmetro de processamento.
}
}
}
|
Para que o Portlet OrderDetails mostre os Detalhes do Pedido, é necessário modificar o método doView() para adicionar o código que a Lista 7 mostra em negrito.
Lista 7. Modificações ao método doView( )
String orderId = (String) request.getParameter(ORDER_ID);//get the order set
in the processAction()
OrderDetail od = ShippingDB.getOrderDetail(orderId);
PortletURL actionURL = ShippingUtils.createSimpleActionURL(ORDER_DETAILS, response);
odb.setActionURL(actionURL);
if (od != null)
odb.setOrderDetail(od);
getPortletContext().getRequestDispatcher(getJspFilePath(request, VIEW_JSP))
.include(request, response);
|
Adição de parâmetros de renderização pública
A próxima etapa é usar o mecanismo do parâmetro de renderização pública para compartilhar o ID de acompanhamento entre o portlet OrderDetail e o portlet Tracking:
- Abra o descritor de implementação do portlet para o projeto EventSample.
- Selecione a guia Parâmetros de Renderização e clique em Adicionar para criar um parâmetro de renderização pública com o nome padrão: NewPublicRenderParam.
- Altere os campos Nome e Identificador para
TrackingID, como mostra a Figura 9.
Figura 9. Guia Parâmetros de Renderização no editor do Descritor de Implementação do Portlet
Clique para ampliar
Essa ação adiciona a seção mostrada na Lista 8 à definição do aplicativo de portlet do descritor de implementação do portlet.
Lista 8. Trecho de código adicionado ao descritor de implementação do portlet
<public-render-parameter>
<identifier>TrackingID</identifier>
<name>TrackingID</name>
</public-render-parameter>
|
- Já que esse parâmetro precisa ser compartilhado pelos portlets Tracking e OrderDetail, é necessário adicioná-lo como um parâmetro de renderização pública suportado para ambos os portlets.
- Na guia Portlets, selecione o portlet Tracking .
- Role para baixo até a seção Parâmetros de Renderização Pública Suportados, no painel direito, e clique em Selecionar.
- Para o nome, selecione ID de Acompanhamento, que foi criado na guia Parâmetros de Renderização no editor, como mostra a Figura 10.
- Clique em OK.
- Repita as Etapas 4 e 5 para adicionar
TrackingID como um parâmetro de renderização pública suportado para o OrdersPortlet.
A Figura 10 mostra o parâmetro de renderização pública adicionado aos portlets.
Figura 10. Adição do parâmetro de renderização pública
Clique para ampliar
As alterações mostradas em negrito na Lista 9 são feitas ao descritor de implementação do portlet.
Lista 9. Modificações ao descritor de implementação do portlet
<portlet>
<portlet-name>OrdersPortlet</portlet-name>
<display-name xml:lang="en">OrdersPortlet</display-name>
<display-name>OrdersPortlet</display-name>
<portlet-class>
com.ibm.jsr286eventrenderparam.OrdersPortlet
</portlet-class>
<init-param>
<name>wps.markup</name>
<value>html</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
</supports>
<supported-locale>en</supported-locale>
<resource-bundle>
com.ibm.jsr286eventrenderparam.nl.OrdersPortletResource
</resource-bundle>
<portlet-info>
<title>OrdersPortlet</title>
<short-title>OrdersPortlet</short-title>
<keywords>OrdersPortlet</keywords>
</portlet-info>
<supported-publishing-event>
<name>OrderIDType</name>
</supported-publishing-event>
<supported-public-render-parameter>
TrackingID
</supported-public-render-parameter>
</portlet>
<portlet>
<portlet-name>TrackingPortlet</portlet-name>
<display-name xml:lang="en">TrackingPortlet</display-name>
<display-name>TrackingPortlet</display-name>
<portlet-class>
com.ibm.jsr286eventrenderparam.TrackingPortlet
</portlet-class>
<init-param>
<name>wps.markup</name>
<value>html</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
</supports>
<supported-locale>en</supported-locale>
<resource-bundle>
com.ibm.jsr286eventrenderparam.nl.TrackingPortletResource
</resource-bundle>
<portlet-info>
<title>TrackingPortlet</title>
<short-title>TrackingPortlet</short-title>
<keywords>TrackingPortlet</keywords>
</portlet-info>
<supported-public-render-parameter>TrackingID
</supported-public-render-parameter>
</portlet>
|
- É necessário modificar o método
doView() do portlet Tracking para exibir os detalhes do acompanhamento, baseados no TrackingID do pedido (consulte a Lista 10).
Lista 10. Modificações ao método doView( )
String renderParam = request.getParameter("TrackingID");
//localize o parâmetro de processamento do id de acompanhamento que foi configurado no Portlet OrderDetails
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- Erro XML: A linha anterior não é maior do que o máximo de 90 caracteres ---------|
TrackingDetailBean tdb = new TrackingDetailBean();
request.setAttribute(TRACKING_DETAIL_BEAN, tdb);
if (renderParam!=null && renderParam.length()>0) {
PortletURL actionURL =
ShippingUtils.createSimpleActionURL(TRACKING_DETAILS, response);
tdb.setActionURL(actionURL);
PortletURL rdActionURL =
ShippingUtils.createSimpleActionURL(ROUTING_DETAILS, response);
tdb.setRoutingDetailActionURL(rdActionURL);
TrackingDetail td = ShippingDB.getTrackingDetail(renderParam);
if (td != null) {
tdb.setTrackingDetail(td);
getPortletContext().getRequestDispatcher(getJspFilePath
(request, VIEW_JSP)).include(request, response);
} else {
//ID de rastreio não encontrado, imprimir página de erros
tdb.setErrorMessage("Tracking Id " + renderParam + " not found.");
getPortletContext().getRequestDispatcher(getJspFilePath
(request, ERROR_JSP)).include(request, response);
}
}
|
 |
Publicação do projeto de portlet
Agora, é possível publicar o aplicativo de portlet no WebSphere Application Server V6.1:
- Clique com o botão direito do mouse no projeto de portlet (consulte a Figura 11) e selecione Executar como > Executar no Servidor.
Figura 11. Publicação do projeto de portlet
Clique para ampliar
- Selecione WebSphere Portal V6.1 Server, como na Figura 12.
- Clique em Avançar e depois em Concluir.
Figura 12. Selecione o servidor no qual deseja executar seu aplicativo de portlet
Conecte os portlets uns aos outros
A ferramenta de conexões disponível no servidor do portal pode ajudá-lo a conectar as relações entre os portlets que compartilham eventos entre si.
Para acessar a ferramenta de conexões:
- Selecione Editar Layout da Página para a página na qual os portlets estão localizados.
- Selecione a guia Redes.
- Para o portlet de origem, selecione OrdersPortlet no menu suspenso e, para o portlet de destino, selecione o portlet OrderDetail (Figura 13). Para os nomes do evento, clique na seta suspensa dos campos de Envio e Recebimento.
Figura 13. Adicione conexões para definir as relações no aplicativo de portlet
Clique para ampliar
- Clique no sinal de mais e em Concluído.
- Selecione o ID de um pedido (por exemplo, o primeiro no OrdersPortlet).
Quando você clica no ID do pedido, um evento é acionado pelo portlet Orders, que envia o valor Order_ID para o portlet OrderDetails. Quando o portlet OrderDetails recebe o ID do pedido, executa o processamento do evento. Esse portlet busca os detalhes do ID do pedido e os exibe para o usuário. Além disso, o portlet OrderDetails recupera o ID de acompanhamento do pedido e o comunica para o portlet de detalhes de acompanhamento, já que TrackingID foi adicionado como parâmetro de renderização compartilhado para ambos os portlets OrderDetails e Tracking. Dessa forma, assim que o usuário clica no ID de um pedido, os detalhes do pedido e do acompanhamento são mostrados (consulte a Figura 14).
Figura 14. O portlet Orders
Agora, o usuário pode ver os detalhes do pedido e do acompanhamento, como mostra a Figura 15. Assim, eventos e parâmetros de renderização pública são usados para transferir o OrderID e o TrackingID para os respectivos portlets.
Figura 15. Detalhes dos portlets Order e Tracking
Clique para ampliar
Como mostrado aqui, as ferramentas oferecidas pelo Rational Application Developer 7.5 simplificam muito a criação de eventos e parâmetros de renderização pública. É necessário customizar apenas o código gerado para adequá-lo às necessidades de seu aplicativo.
Download | Descrição | Nome | Tamanho | Método de download |
|---|
| How to create events and public render parameters | JSR286EventRenderParam.zip | 63KB | HTTP |
|---|
Recursos Aprender
Obter produtos e tecnologias
Sobre o autor  | |  | Lakshmi Priya is a software developer who works on the portal tooling component in Rational Application Developer at IBM India Software Labs in Delhi, India. She leads the Portlet Tooling subcomponent team. She started her career with a pervasive computing team, in Bangalore, and has been working on portlets and Eclipse-based technologies. |
Avalie esta página
|  |