FeaturesPluginsDocs & SupportCommunityPartners

Noções básicas do serviço de reserva de viagens

  • O processo presume que um cliente inicia o processo enviando uma mensagem que contém um documento de itinerário de viagem parcial.
  • O itinerário da viagem do cliente pode ter:
    • Nenhuma reserva pré-existente ou
    • Uma combinação de reservas pré-existentes de linha aérea, carro e/ou hotel.
  • O Serviço de reserva de viagens examina o itinerário do cliente de entrada e processa esse itinerário para conclusão.
  • Se o itinerário do cliente não contiver uma reserva de linha aérea pré-existente, o Serviço de reserva de viagens passará o itinerário para o respectivo serviço de parceiro, o Serviço de reserva de linhas aéreas, para adicionar a reserva de linha aérea.
  • O Serviço de reserva de linha aérea passa o itinerário modificado de volta para o Serviço de reserva de viagens.
  • O Serviço de reserva de viagens executa uma lógica semelhante nas reservas de carro e hotel. Em cada caso, ele delegará a provisão real da reserva para o Serviço de reserva de veículos e o Serviço de reserva de hotel.
  • Finalmente, o Serviço de reserva de viagens passa o itinerário completo de volta para o cliente original, concluindo o processo.

Duração esperada: 60 minutos

início

Requisitos do tutorial

Antes de prosseguir, revise os requisitos nesta seção.

Pré-requisitos

Este tutorial presume que você possui algum conhecimento básico ou experiência de programação na linguagem e na plataforma Java e no NetBeans IDE.

Requisitos do sistema

Este tutorial presume que o seu sistema atende aos requisitos especificados no tópico Requisitos do sistema das Notas de versão do NetBeans IDE 6.0.

Software necessário para o tutorial

Antes de começar, você precisa instalar o software seguinte em seu computador: NetBeans IDE 6.0 com SOA e o servidor da aplicação GlassFish, incluído no download "Todos" disponível no Download do NetBeans IDE 6.0.

início

Configurando e iniciando o servidor da aplicação GlassFish

Quando o download completo do NetBeans 6.0 é instalado, ele inclui o servidor da aplicação GlassFish. O NetBeans IDE iniciará automaticamente o servidor da aplicação quando necessário.

Para iniciar o servidor da aplicação GlassFish:

  1. Se a janela Serviços não estiver visível, escolha Janela > Serviços.
  2. Na janela Serviços, expanda o nó Servidores.
    O nó Servidores deve conter um subnó do servidor da aplicação GlassFish. Se o nó do servidor da aplicação GlassFish não aparecer, vá para Para configurar o servidor da aplicação GlassFish.

 

  1. Clique com o botão direito do mouse no nó do servidor da aplicação GlassFish e selecione Iniciar.
    A janela de saída exibe informações de log sobre a inicialização da aplicação. Se a janela de saída não estiver visível, escolha Janela > Saída > Saída.

    Quando a mensagem Inicialização do servidor da aplicação concluída aparecer na janela Saída, o servidor da aplicação estará em execução.
    Observação: se um emblema com uma seta verde aparecer no nó do servidor da aplicação GlassFish, o servidor estará sendo executado.

Observação: a implantação de uma aplicação no servidor da aplicação GlassFish iniciará automaticamente o servidor. Assim, não é necessário iniciar manualmente o servidor da aplicação.

Observação: o procedimento seguinte mostra como configurar o IDE para usar uma versão alternativa do servidor da aplicação GlassFish V2.

Para configurar o servidor da aplicação GlassFish V2:

Você pode querer usar uma versão diferente do servidor da aplicação da fornecida com o NetBeans 6.0. Por exemplo, pode querer baixar e instalar uma versão mais atual do servidor da aplicação GlassFish V2 do site da comunidade do GlassFish.

O seguinte procedimento mostra como configurar o NetBeans 6.0 IDE para usar uma versão alternativa do servidor da aplicação GlassFish V2. Ele supõe que você tenha baixado e instalado a versão alternativa do servidor da aplicação.

  1. Na janela Serviços, clique com o botão direito do mouse no nó Servidores e escolha Adicionar servidor no menu pop-up.
    A caixa de diálogo Adicionar instância do servidor é aberta.
  2. Na página Escolher servidor, selecione GlassFish V2 na lista.
  3. Clique em Próximo.
    A página Localização da pasta da plataforma é aberta.
  4. No campo Localização da plataforma, use o botão Procurar para navegar para o local de instalação do servidor da aplicação e selecionar esse local.

    Se você tiver instalado o servidor da aplicação GlassFish no local padrão, use a Tabela 1 como um guia para localizar a instalação. Caso contrário, navegue para a localização onde você instalou o servidor da aplicação GlassFish V2.

    Tabela 1: diretório padrão de instalação do servidor da aplicação

    Plataforma Instalando como... Instalação da SOA Instalação do conjunto de ferramentas
    Solaris OS
    Linux
    raiz /opt/glassfish-v2 /opt/SUNWappserver
    Solaris OS
    Linux
    usuário ~/glassfish-v2 ~/SUNWappserver
    Mac OS X N/D /Applications/NetBeans/glassfish-v2b58g /Applications/NetBeans/NetBeans 6.0
    Windows N/D C:\Program Files\glassfish-v2-b58g C:\Sun\AppServer
  5. Selecione o botão de opção Registrar o domínio local padrão e clique em Próximo.
  6. Indique o nome de usuário e a senha do administrador do domínio.
    Caso você tenha aceitado os valores padrão durante a instalação, o nome de usuário é admin e a senha é adminadmin.
  7. Clique em Terminar.

início

Criando um novo projeto com o projeto de amostra Serviço de reserva de viagens

  1. No menu principal do IDE, escolha Arquivo > Novo projeto.
  2. Em Categorias, selecione Amostras > SOA.
  3. Em Projetos, selecione Serviço de reserva de viagens e clique em Próximo.

    Novo projeto

  4. Aceite os valores padrão ou digite um nome e localização de projeto da sua escolha.
    Observe que neste documento, o nome do projeto é TravelReservationService.
  5. Clique em Terminar.
    A janela Projetos agora contém três nós de projeto: um para TravelReservationService, um módulo BPEL, um para TravelReservationServiceApplication, um projeto de aplicação composta, e um para ReservationPartnerServices, um projeto EJB empacotado.

    Dois projetos

início


Implantando o projeto dos serviços Web de parceiro

O Serviço de reserva de viagens se comunica com seus serviços de parceiro através de suas interfaces públicas. Essas interfaces são definidas nos arquivos WSDL específicos do parceiro.

O IDE inclui um projeto EJB empacotado chamado ReservationPartnerServices. O projeto ReservationPartnerServices contém uma implementação básica EJB e baseada em JMS dos três serviços de parceiro. Esses serviços de parceiro são o Serviço de reserva de hotel, o Serviço de reserva de veículos e o Serviço de reserva de linhas aéreas. Esses serviços Web de parceiro devem ser implantados no servidor da aplicação GlassFish empacotado antes que você possa fazer a execução de teste do processo do Serviço de reserva de viagens.

Essa implementação destina-se somente a servir como um harness de teste do processo do Serviço de reserva de viagens. A implementação dos serviços de parceiro não deve ser de nenhum interesse para o desenvolvedor do BPEL. Eles são meramente pré-requisitos para a testabilidade do Serviço de reserva de viagens.

Para implantar o projeto ReservationPartnerServices:

  1. Na janela Projetos, clique com o botão direito do mouse no nó ReservationPartnerServices e escolha Implantar e desimplantar. Isso implanta o ReservationPartnerServices.
  2. Verifique se a aplicação ReservationPartnerServices foi implantada com êxito, realizando as seguintes etapas:

    1. Alterne para a janela Tempo de execução e expanda o nó GlassFish V2.
    2. Expanda o nó Aplicações e, em seguida, expanda o nó Módulos EJB.

      Serviços de parceiro implantados

início


Implantando o projeto de aplicação composta no servidor da aplicação

O projeto TravelReservationServiceApplication já contém um projeto BPEL como um módulo JBI (consulte o nó TravelReservationServiceApplication > Módulos JBI > TravelReservationService.jar). Implante a aplicação composta TravelReservationServiceApplication para tornar a composição de serviço disponível para o servidor da aplicação, permitindo, portanto, que as unidades de serviço sejam executadas.

  1. Na janela Projetos, clique com o botão direito do mouse no nó do projeto TravelReservationServiceApplication e escolha Implantar no menu pop-up.
  2. Na caixa de diálogo Aviso, verifique se GlassFish V2 está selecionado e clique em OK.
    O deployment foi bem sucedido, a seguinte mensagem for exibida na janela Saída:

    Construção bem-sucedida

início


Realizando uma execução de teste do processo do Serviço de reserva de viagens

O recurso de execução de teste permite que os desenvolvedores do processo comercial realizem execuções de teste de seus processos. Os processos BPEL são implantados no tempo de execução do BPEL, que gerencia o ciclo de vida do processo. Um processo BPEL começa com uma atividade Receber ou Selecionar responsável por iniciar o processo.

Um processo BPEL também é um serviço Web. Como qualquer serviço Web, um processo BPEL possui um arquivo WSDL que descreve sua interface pública. Essa interface, por sua vez, descreve as operações e as mensagens que os clientes podem alcançar para criar a instância do processo. Durante a recepção de uma mensagem destinada a uma dessas atividades Receber, o tempo de execução BPEL criará uma instância do processo BPEL e entregará a mensagem para a instância do processo a fim de que seja processada.

Por exemplo, no caso do TravelReservationService.wsdl existe uma operação chamada buildItinerary. Essa é a operação que os clientes do TravelReservationService chamarão para instanciar uma conversa com o TravelReservationService.

<portType name="TravelReservationPortType">
	<operation name="buildItinerary">
      		<input message="tns:ItineraryIn"/>
      		<output message="tns:ItineraryOut"/>
      		<fault name="itineraryProblem" message="tns:ItineraryFault"/>
	</operation>
</portType>

Portanto, para testar um processo BPEL, você deve enviar ao tempo de execução BPEL uma mensagem destinada a uma das atividades Receber do processo.

Esta versão do BPEL Designer contém recursos para tornar esse teste uma experiência de apontar e clicar. Especificamente, com o projeto de amostra TravelReservationService, você pode enviar solicitações buildItinerary para o TravelReservationService implantado.

Para realizar a execução de teste de TravelReservationService:

  1. Expanda os nós TravelReservationServiceApplication > Teste.
    Existem 4 subnós:

    • HasNoReservations - um itinerário de teste sem reservas
    • HasAirline - um itinerário de teste com uma reserva de linha aérea pré-existente
    • HasVehicle - um itinerário de teste com reservas de linha área e de veículo pré-existentes
    • HasHotel - um itinerário de teste com reservas de linha aérea, veículo e hotel pré-existentes

    Estes nós de teste são na verdade arquivos XML que contêm os dados da mensagem de SOAP. Cada um representa um caso diferente que pode ser usado para testar o TravelReservationService a fim de exercitar o processo de formas ligeiramente diferentes.
  2. Clique com o botão direito do mouse no nó HasNoReservations e escolha Executar no menu pop-up.
    Quando você seleciona a ação Executar, o IDE envia a mensagem SOAP HasNoReservations ao tempo de execução do BPEL. O IDE indicará se o teste foi bem sucedido.

O teste passou

Observações:

  • Se você realizar uma execução de teste em um dos cenários de teste antes de adicionar o módulo JBI ou implantar o projeto, a execução de teste falhará.
  • Para resolver um problema com pontos de extremidade de serviço ao realizar uma execução de teste, consulte a seção Portas do Guia do desenvolvedor para BPEL Designer: Solução de problemas para obter instruções.

início


Depurando o processo do Serviço de reserva de viagens

Você pode usar o IDE para depurar a aplicação BPEL de amostra.

Etapas gerais de depuração

  1. Na janela Projetos, sob o nó TravelReservationService > Arquivos do processo, clique duas vezes no arquivo TravelReservationService.bpel.
  2. No Editor de código-fonte, defina pontos de interrupção no código-fonte, clicando no número da linha do elemento em que você deseja colocar um ponto de interrupção. Usaremos o teste HasNoReservations, portanto, colocaremos pontos de interrupção nas atividades que chamam todos os três serviços de parceiro.

    1. Coloque um ponto de interrupção na atividade Receber ReceiveItinerary na linha 97. Essa é a atividade que inicia o processo. Se os números de linha não estiverem visíveis, escolha Exibir > Mostrar números de linha no menu principal.

      Defina um ponto de interrupção no código-fonte BPEL

      Você também pode definir pontos de interrupção no diagrama. Para isso, alterne para a visualização Design, clique com o botão direito do mouse no elemento e escolha Alternar ponto de interrupção no menu pop-up.

      Defina um ponto de interrupção no diagrama

      Uma caixa vermelha é mostrada na parte superior do elemento com um ponto de interrupção.

      Um ponto de interrupção no diagrama

      O comando de menu Alternar ponto de interrupção também está disponível para os elementos na visualização Lógica do navegador BPEL. Se a janela Navegador não estiver aberta, escolha Janela > Navegação > Navegador no menu principal. Para os elementos com pontos de interrupção, o Navegador mostra uma pequena caixa vermelha como a da imagem seguinte (ReceiveItinerary):

      Um ponto de interrupção no navegador

    2. Coloque pontos de interrupção nas atividades Chamar ReserveAirline (linha 130), ReserveVehicle (linha 183) e ReserveHotel (linha 236).
  3. Agora, adicione inspeções ao projeto:

    1. Se a janela Inspeções não estiver visível, escolha Janela > Depuração > Inspeções no menu principal.
    2. Na visualização Código-fonte, vá para a linha 127 e copie a expressão XPath:
      not($ItineraryIn.itinerary/ItineraryInfo/ReservationItems/Item/Air)
      Como alternativa, selecione o elemento If HasAirline no diagrama e copie a expressão XPath a partir da linha Condição na janela Propriedades. Se a janela Propriedades não estiver visível, escolha Janela > Propriedades no menu principal.

      Copie a expressão XPath a partir da janela Propriedades

    3. Clique com o botão direito do mouse dentro da janela Inspeções e escolha Nova inspeção.
    4. Na caixa de diálogo Nova inspeção, cole a expressão XPath no campo Inspecionar expressão e clique em OK.
    5. Adicione mais duas inspeções para expressões nas linhas 180 e 233. Sua janela Inspeções agora deve ter três itens:

      Janela Inspeções

  4. Na janela Projetos, clique com o botão direito do mouse no nó TravelReservationServiceApplication e escolha Depurar projeto (BPEL).
  5. Espere até que a mensagem CONSTRUÇÃO BEM SUCEDIDA seja exibida na janela Saída.
  6. Alterne para a janela Console do depurador BPEL para garantir que a mensagem Sessão de depuração iniciada tenha aparecido.
  7. Garanta que você tenha as janelas seguintes abertas:

    • Variáveis BPEL; escolha Janela > Depuração > BPEL > Variáveis BPEL no menu principal, se ela não estiver aberta.
    • Instâncias do processo BPEL; escolha Janela > Depuração > BPEL > Instâncias do processo BPEL no menu principal, se ela não estiver aberta.
    • Execução do processo BPEL; escolha Janela > Depuração > BPEL > Execução do processo BPEL no menu principal, se ela não estiver aberta.
  8. Na janela Projetos, clique com o botão direito do mouse em HasNoReservations no nó Teste em TraveReservationServiceApplication e escolha Executar para iniciar o teste.
  9. Quando o processo alcança o primeiro ponto de interrupção, observe as janelas seguintes:

    • Janela Variáveis BPEL
      Ela mostra a estrutura das variáveis locais e seus valores da instância do processo atual e a posição em que a instância do processo atual ficou suspensa.
      Observe que você pode acessar e modificar a parte XML que pertence a uma variável específica na caixa de diálogo Valor desde que seu valor seja XML. Para exibir a caixa de diálogo, pressione o botão de reticências (...) no fim da linha na janela Variáveis BPEL.
    • Janela Instâncias do processo BPEL
      Ela lista todas as instâncias do processo BPEL que estão sendo executadas no mecanismo de serviço BPEL durante a sessão de depuração atual.
      A instância numerada TravelReservationService deve estar no estado Suspenso.
    • Janela Execução do processo BPEL
      Ela representa geograficamente o andamento da execução da instância do processo BPEL atual no depurador BPEL.
      A atividade ReceiveItinerary deve ser realçada em verde, o que significa que ela está sendo executada no momento.
      O resto das atividades fica cinza, já que elas ainda não foram executadas.
    • Janela Inspeções.
      Ela contém a string <Impossível avaliar a expressão> na coluna Valor de todas as três expressões. Isso acontece porque o processo parou no início da primeira atividade Receber e a mensagem ItineraryIn ainda não chegou.
  10. Clique em Continuar na barra de ferramentas Depuração (Ctrl-F5). O processo pára no segundo ponto de interrupção. Nesse momento, a mensagem ItineraryIn chegou e as condições das inspeções foram avaliadas. O valor de todas as três expressões deve ser definido como verdadeiro.

    Observação: as expressões retornam true se a mensagem não contiver um item de reserva correspondente. Se você executar o teste HasAirline, o valor da expressão not($ItineraryIn.itinerary/ItineraryInfo/ReservationItems/Item/Air), que verifica se a mensagem de entrada não contém o item de reserva Linha aérea, será definido como false.

  11. Clique em Continuar.
    Na conclusão do processo, o teste HasNoReservations passa com êxito.
  12. Selecione Executar > Terminar sessão do depurador no menu principal.

Ações de depuração em um ponto de interrupção

Quando uma instância do processo é suspensa, você pode realizar qualquer uma das seguintes ações convencionais da barra de ferramentas Depurar (se a barra de ferramentas Depurar não estiver visível, escolha Exibir > Barras de ferramentas > Depurar):

  • Terminar sessão do depurador (Shift-F5). Finaliza a sessão de depuração atual.
  • Continuar (Ctrl-F5). Faz com que a instância do processo atual seja executada até que encontre o próximo ponto de interrupção ou até que a instância seja concluída.
  • Passar dentro (F7). Passa na próxima atividade BPEL. Esta etapa só é suportada na granularidade de uma atividade em termos de linguagem BPEL. Ela não entra em uma granularidade superior. Conforme você entra, o indicador da linha atual avançará e o conteúdo das janelas Variáveis BPEL e Inspeções pode conseqüentemente se alterar.
  • Executar até cursor (F4). Permite que os pontos de interrupção sejam definidos dinamicamente, quando o processo está sendo executado, na janela Navegador e nas visualizações Código-fonte e Design do BPEL Designer.


início

Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by