FeaturesPluginsDocs & SupportCommunityPartners

Usando o Mapeador BPEL para editar os processos BPEL

Este tutorial ilustra como trabalhar com as expressões XPath usando o mapeador BPEL. O mapeador BPEL é um componente do recurso BPEL Designer do NetBeans Enterprise Pack. Usando as extensas capacidades do mapeador BPEL, você pode trabalhar com predicados, usar as funções XPath e copiar as variáveis dentro de um processo comercial.

O mapeador BPEL permite adicionar e editar as funções específicas de alguns elementos do processo comercial, como Atribuir, If, o elemento ElseIf de If, Para cada, Repetir até, While e Esperar. Cada um desses elementos pode possuir tipos específicos de expressões, como atribuições de cópia, expressões condicionais e funções temporais. Por exemplo, as atividades If, elemento ElseIf de If, e  Repetir até podem ter expressões condicionais, o elemento Atribuir contém expressões de cópia, o elemento Esperar pode ter expressões de duração e a atividade Para cada pode ter expressões com valores inteiros. Usando a interface gráfica do mapeador BPEL, você pode realizar também cálculos atribuindo operações e funções XPath a variáveis e a partes, atributos e elementos XSD. 

Pré-requisito

Este tutorial presume que você tenha algum conhecimento básico ou experiência de programação com as tecnologias SOA e o 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 Enterprise Pack 5.5.

Software necessário para o tutorial

Antes de começar, você deve instalar o seguinte software em seu computador:

  • NetBeans IDE 5.5 com NetBeans Enterprise Pack 5.5 (download)

Conteúdo

superior


Configurando o ambiente do tutorial

Antes de implantar o seu aplicativo, o servidor de aplicativos Sun Java System e o tempo de execução JBI devem estar configurados corretamente e em execução.

Consulte a seção Configurando o ambiente do tutorial do tutorial Um processo BPEL síncrono simples para saber como iniciar o servidor de aplicativos.

superior


Criando o projeto SynchronousSample

Para este tutorial, usaremos o projeto de amostra do processo BPEL síncrono.

  1. No menu principal do IDE, escolha Arquivo > Novo projeto.
  2. Na lista Categorias, expanda o nó Amostras e selecione o nó Service Oriented Architecture.
  3. Na lista Projetos, selecione Processo BPEL síncrono.
  4. Clique em Próximo.
  5. Aceite os padrões de Nome do projeto, SynchronousSample e Local do projeto ou altere os valores de acordo com as suas preferências.
  6. Clique em Finalizar.
    A janela Projetos agora contém dois nós de projeto: um nó do projeto do módulo BPEL chamado SynchronousSample e um projeto de aplicativo composto chamado SynchronousSampleApplication.

superior


Explorando a janela Mapeador BPEL

  1. Na janela Projetos, expanda o nó do projeto SynchronousSample e o nó Arquivos do processo.
  2. Clique duas vezes no arquivo SynchronousSample.bpel.
    O IDE abre a exibição Design do arquivo BPEL.
  3. No diagrama, selecione o elemento Atribuir1.
    A janela Mapeador BPEL do elemento Atribuir1 se abre na parte inferior do IDE.
  4. Expanda o nó inputVar do lado esquerdo da janela Mapeador BPEL e o nó outputVar do lado direito.
    Observe que, para o elemento Atribuir1, o valor do parâmetro de entrada é copiado no parâmetro de saída.

Janela Mapeador BPEL do elemento Atribuir, clique para aumentar
Clique para aumentar

Vejamos o código-fonte da operação de cópia. Para ver o código-fonte, clique com o botão direito do mouse no elemento Atribuir1 no diagrama e selecione Ir para o código-fonte no menu pop-up.

Na exibição Fonte, você vê o seguinte código que copia o valor de entrada paramA no valor de saída paramA.

<copy>
<from>$inputVar.inputType/paramA</from><to>$outputVar.resultType/paramA</to>
</copy>

Exclua essa operação dessa janela do mapeador BPEL realizando as seguintes etapas:

  1. Clique na guia Design para abrir a exibição Design e selecione o elemento Atribuir1 no diagrama.
  2. Na janela Mapeador BPEL, clique na linha que conecta os parâmetros de entrada e saída e pressione o botão Excluir.
    Na exibição Fonte, você pode verificar se o código não contém mais a operação de cópia: <assign name="Assign1"></assign>
  3. Clique em Salvar.

superior


Editando o projeto BPEL síncrono usando o mapeador BPEL

Os exemplos abaixo mostram como trabalhar com a função current-date e as seguintes funções de seqüência: concat e substring. Você usará também as literais string e number e aprenderá como usar as funções de conjunto de nós como count e last. Os exemplos mostram o uso das operações sum e equal.

Finalmente, você também criará dois casos de teste para testar o processo comercial modificado:

  • Para o Caso de teste 0, os parâmetros de entrada são qualquer seqüência e o número de teste, e a saída é uma seqüência que contém a data atual e fuso horário.
  • Para o Caso de teste 1, os parâmetros de entrada são o número de teste e um conjunto de nós, e a saída é uma seqüência que contém o número de elementos, sua soma e o último elemento.

Adicionando uma variável

Neste procedimento, você adiciona a variável todayIs do tipo de seqüência ao processo comercial. Esta variável é usada para armazenar o valor retornado da função current-date.

  1. Se o arquivo SynchronousSample.bpel não estiver aberto no IDE, abra-o agora.
  2. Na exibição Design, clique com o botão direito do mouse no elemento de processo SynchronousSample e selecione Adicionar > Variável.
  3. No campo Nome, digite todayIs.
  4. Expanda o nó Tipos incorporados e selecione o tipo seqüência.
  5. Clique em OK.
    Selecione o elemento Atribuir1 no diagrama. A variável todayIs é exibida agora em ambos painéis de árvore da janela Mapeador BPEL.

Modificando esquema XML

Neste procedimento, você modifica as propriedades de um elemento existente do esquema XML e adiciona um novo elemento nTest. O elemento nTest é usado para definir que ramificação If será executada. Depois, você usará o elemento nTest em casos de teste.

  1. Na janela Projetos, expanda o nó do projeto SynchronousSample e o nó Arquivos do processo.
  2. Clique duas vezes no nó SynchronousSample.xsd.
    O IDE abre a exibição Esquema do arquivo do esquema XML.
  3. Nas colunas da exibição Esquema, selecione o nó Tipos complexos > simpleProcess > seqüência > paramA.
    Você pode clicar no botão da coluna para certificar-se de que esteja no modo de coluna da exibição.
  4. Na janela Propriedades, defina o parâmetro Max Occurs como não vinculado para permitir o uso dos valores que sejam maiores ou iguais a 1.
    Se a janela Propriedades não estiver aberta, selecione Janela > Propriedades ou pressione Ctrl-Shift-7.

    Modificando as propriedades do ParamA na exibição Esquema XML, clique para aumentar
    Clique para aumentar

  5. Na terceira coluna da exibição Esquema, clique com o botão direito do mouse no elemento Seqüência e selecione Adicionar > Elemento no menu pop-up.
  6. Na caixa de diálogo Elemento, insira nTest no campo Nome e selecione a opção Usar tipo existente.
  7. Expanda o nó Tipos incorporados e selecione o tipo int.
  8. Clique em OK.

    Adicionando o elemento ao arquivo do esquema XML, clique para aumentar
    Clique para aumentar

  9. Escolha Arquivo > Salvar todos.

Editando o processo BPEL

Neste procedimento, você adicionará as atividades If e Atribuir ao processo comercial.

  1. Se o arquivo SynchronousSample.bpel não estiver aberto no IDE, abra-o agora.
  2. Na exibição Design, selecione o ícone de If na Paleta, arraste a seleção para a área de design e solte-a no diagrama, entre o elemento inicial e o elemento Atribuir1.
  3. Mova o elemento Atribuir1 para dentro do elemento If1 e solte-o na ramificação principal (sem mover).
  4. Na Paleta, selecione o ícone de Atribuir e solte-o no diagrama depois do elemento Atribuir1 dentro do elemento If .
    Este elemento recebe o rótulo de Atribuir2.
  5. Clique com o botão direito do mouse no elemento If e escolha Adicionar Else If no menu pop-up.
  6. Na Paleta, selecione o ícone de Atribuir e solte-o no diagrama dentro da ramificação ElseIf .
    Este elemento recebe o rótulo de Atribuir3.
    Veja a ilustração abaixo e verifique se o diagrama do seu processo comercial é semelhante à ela.

Editando um processo BPEL síncrono simples de amostra, clique para aumentar
Clique para aumentar

Adicionando condições ao elemento If

Você pode especificar as condições para a execução da atividade If seguindo os procedimentos abaixo. O parâmetro nTest define que ramificação If contém true (verdadeiro). Para a ramificação If, nTest é igual a 1 e para a ramificação ElseIf, nTest é igual a 2.

Para especificar as condições do elemento If1:

  1. Selecione o elemento If1 no diagrama.
  2. Na janela Mapeador BPEL, na barra de menus, selecione Número > Literal numérico e operadores > IGUAL.
    São exibidas duas caixas de função no painel de mapeamento. Para a sua comodidade, arraste as caixas de função para que a caixa Literal numérico fique à esquerda e a caixa de função IGUAL à direita.
  3. No painel de árvore esquerdo da janela Mapeador BPEL, expanda os nós inputVar e inputType.
  4. Selecione o nó nTest no painel de árvore esquerdo e arraste o ponteiro até o parâmetro qualquer1 da caixa de função IGUAL.
  5. Na caixa de função Literal numérico, clique duas vezes no campo de entrada e insira 1.
  6. Selecione a caixa de função Literal numérico e arraste o ponteiro até o parâmetro qualquer2 da caixa de função IGUAL.
  7. Na caixa de função IGUAL, selecione o parâmetro booleano de retorno e arraste o ponteiro até o nó Resultado no painel de árvore direito da janela Mapeador BPEL.
  8. Selecione Arquivo > Salvar.

Configurando as condições de If, clique para aumentar
Clique em ampliar

Para especificar as condições do elemento ElseIf:

  1. Selecione o elemento ElseIf no diagrama.
  2. Siga as etapas de acordo com o procedimento anterior para If, porém insira 2 como o valor de Literal numérico.

Configurando as condições de Else If, clique para aumentar
Clique em ampliar

Adicionando expressões ao elemento Atribuir

Neste procedimento, você adicionará expressões aos elementos Atribuir1, Atribuir2 e Atribuir3 usando o Editor de fontes e o Mapeador BPEL.

Para adicionar expressões ao elemento Atribuir1:

  1. Selecione o elemento Atribuir1 no diagrama.
  2. Na janela Mapeador BPEL, na barra de menus, selecione Data-hora > Data atual.
    A caixa de função Data atual é exibida no painel de mapeamento.
  3. Na caixa de função Data atual, selecione o parâmetro seqüência de retorno e arraste o ponteiro até o nó todayIs no painel de árvore direito da janela Mapeador BPEL.
  4. Selecione Arquivo > Salvar.

    Expressão para o elemento Atribuir1, clique para aumentar
    Clique para aumentar

  5. Clique com o botão direito do mouse no elemento Atribuir1 no diagrama e selecione Ir para o código-fonte no menu pop-up.

    Na exibição Fonte, o operador copiar do elemento Atribuir1 copia o valor do parâmetro seqüência de retorno na variável todayIs como mostrado abaixo:

  <assign name="Assign1"></assign>
   <copy>
      <from>current-date()</from>
      <to variable="todayIs"/>         
    </copy>     
  </assign>  

Para adicionar expressões ao elemento Atribuir2:

O elemento Atribuir2 formará a seguinte seqüência de saída: Olá! Hoje é 2006-11-17. O fuso horário é de 03:00.

Você trabalhará com a variável todayIs que contém a data atual no seguinte formato: AAAA-MM-DD FF:FF, na qual AAAA é o ano atual, MM é o mês, DD é a data e FF:FF é o fuso horário.

  1. Selecione o elemento Atribuir2 no diagrama.
  2. Na janela Mapeador BPEL, na barra de menus, selecione Seqüência > Concat e selecione duas vezes Seqüência > Subseqüência.
    São exibidas três caixas de função no painel de mapeamento. Para sua comodidade, arraste as duas caixas Subseqüência à esquerda e a caixa Concatenar à direita.
  3. Para formar uma seqüência da variável todayIs que conterá somente uma data sem um fuso horário, realize as seguintes etapas:
    1. Selecione o nó todayIs no painel de árvore esquerdo e arraste o ponteiro até o parâmetro seqüência da primeira caixa de função Subseqüência.
    2. Clique duas vezes em número dentro da caixa de função e digite 1.
      Esta é a posição inicial da seqüência todayIs que será copiada.
    3. Clique duas vezes em número? dentro da caixa de função e digite 10.
      Este é o número de símbolos que serão copiados.
  4. Para formar uma seqüência da variável todayIs que conterá somente um fuso horário sem uma data, realize as seguintes etapas:
    1. Selecione o nó todayIs no painel de árvore esquerdo e arraste o ponteiro até o parâmetro seqüência da segunda caixa de função Subseqüência.
    2. Clique duas vezes em número dentro da caixa de função e digite 11.
      Esta é a posição inicial da seqüência todayIs que será copiada.

    Observação: Aqui, número? não é um parâmetro obrigatório para a função Subseqüência: sem nenhum parâmetro especificado, a função Subseqüência copia a seqüência da posição inicial ao final.

  5. Para formar uma seqüência de saída Concatenar, citada no início desta seção, realize as seguintes etapas:
    1. No painel de árvore esquerdo da janela Mapeador BPEL, expanda os nós inputVar e inputType.
    2. Selecione o nó paramA no painel de árvore esquerdo e arraste o ponteiro até o parâmetro seqüência1 da caixa de função Concatenar.
      Esta ação copia a seqüência que está contida no parâmetro de entrada.
    3. Clique duas vezes em seqüência2 dentro da caixa de função Concatenar e digite Hoje é.
      Este procedimento forma uma seqüência para uma saída, que será adicionada na seqüência de saída.
    4. Na primeira caixa de função Subseqüência, selecione o parâmetro seqüência de retorno e arraste o ponteiro até seqüência3 da caixa de função Concatenar.
      Esta ação copia uma data atual sem um fuso horário.
    5. Clique duas vezes em seqüência4 dentro da caixa de função Concatenar e digite : O fuso horário é de.
      Esta seqüência vem depois da data atual.
    6. Na segunda caixa de função Subseqüência, selecione o parâmetro seqüência de retorno e arraste o ponteiro até seqüência5 da caixa de função Concatenar.
      Esta ação copia um fuso horário sem uma data atual.
    7. Clique duas vezes em seqüência6 dentro da caixa de função Concatenar e digite : .
      Esta seqüência é adicionada depois de um fuso horário.
    8. No painel de árvore direito da janela Mapeador BPEL, expanda os nós outputVar e resultType.
    9. Na caixa de função Concatenar, selecione o parâmetro seqüência de retorno e arraste o ponteiro até o nó paramA no painel de árvore direito da janela Mapeador BPEL.
      Esta ação copia o resultado da função Concatenar na saída.
  6. Selecione Arquivo > Salvar.

    Expressões para o elemento Atribuir2, clique para aumentar
    Clique para aumentar

  7. Clique com o botão direito do mouse no elemento Atribuir2 no diagrama e selecione Ir para o código-fonte no menu pop-up.

    Na exibição Fonte, o operador copiar do elemento Atribuir2 forma uma seqüência que contém uma data atual e um fuso horário da seguinte forma:

    <assign name="Assign2">    
    <copy>
    <from>concat($inputVar.inputType/ns0:paramA, ' Hoje é ', substring($todayIs, 1, 10), '. O fuso horário é de ', substring($todayIs, 11), '.')</from> <to>$outputVar.resultType/ns0:paramA</to>
    </copy>
    </assign>

Para adicionar expressões ao elemento Atribuir3:

Você usará o Editor de fontes para adicionar expressões ao elemento Atribuir3.

Observação: Você pode editar o elemento no mapeador BPEL, se necessário, depois de adicionar uma expressão usando o Editor de fontes.

  1. Clique com o botão direito do mouse no elemento Atribuir3 no diagrama BPEL e selecione Ir para o código-fonte no menu pop-up.
  2. Substitua a seqüência <assign name="Assign3"/> pela seguinte:
    <assign name="Assign3">    
    <copy>
    <from>concat('Existe(m) ', count($inputVar.inputType/ns0:paramA), ' elemento(s) no conjunto de nós.', 'A soma de elemento(s) é ', sum($inputVar.inputType/ns0:paramA), '. O último elemento é ', $inputVar.inputType/ns0:paramA[last()], '.')</from> <to>$outputVar.resultType/ns0:paramA</to>
    </copy>
    </assign>
  3. Selecione Arquivo > Salvar.
  4. Clique no botão Design na barra de ferramentas do Editor para ir para a exibição Design e ver os resultados na janela Mapeador BPEL.
  5. Selecione o elemento Atribuir3 no diagrama BPEL.

    Expressões para o elemento Atribuir3, clique para aumentar
    Clique para aumentar

    As expressões para o elemento Atribuir3 mostra o número de nós copiados em paramA, calcula a soma de todos os nós e proporciona o valor do último nó. A saída é a seguinte seqüência de amostra: Existe(m) 3 elemento(s) no conjunto de nós. A soma de elemento(s) é 6. O último elemento é 3.

superior


Implantando o projeto no servidor de aplicativos

Antes de iniciar os testes do processo comercial, você precisa adicionar o projeto do módulo BPEL como um módulo JBI e implantá-lo no servidor de aplicativos.

Para isso, siga as etapas descritas na seção Implantando o projeto no servidor de aplicativos do tutorial Um processo BPEL síncrono simples.

superior


Criando um caso de teste

Para testar o processo BPEL modificado, crie casos de teste (TestCase0 e TestCase1) conforme descrito nos procedimentos abaixo. Para o TestCase0, os parâmetros de entrada são uma seqüência e o número do teste, e a saída é uma seqüência que contém a data atual e fuso horário. Para o TestCase1, os parâmetros de entrada são o número de teste e um conjunto de nós, e a saída é uma seqüência que contém o número de elementos, sua soma e o último elemento.

Para criar o TestCase0:

  1. Na janela Projetos, expanda os nós SynchronousSampleApplication, Teste e TestCase0.
    O nó TestCase0 contém dois arquivos XML: Input para entrada e Output para saída.
  2. Clique duas vezes no nó do arquivo Input e substitua o conteúdo padrão pelo seguinte:
    <soapenv:Envelope xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:syn="http://xml.netbeans.org/schema/SynchronousSample">
      <soapenv:Body>
        <syn:typeA> <syn:paramA>Olá!</syn:paramA> <syn:nTest>1</syn:nTest> </syn:typeA>
      </soapenv:Body> </soapenv:Envelope>
    Neste teste, os parâmetros de entrada são o número do teste (1) e a seqüência "Olá!"
  3. Clique duas vezes no nó do arquivo Output no nó TestCase0.
  4. Exclua o texto padrão do arquivo Output.

Para criar o TestCase1:

  1. Na janela Projetos, expanda o nó do projeto SynchronousSampleApplication, clique com o botão direito do mouse no nó Teste e escolha Novo caso de teste no menu pop-up.
    O assistente para Novo caso de teste é aberto.
  2. Em Nome, deixe TestCase1 e clique em Próximo.
  3. Expanda SynchronousSample - Arquivos do processo, selecione SynchronousSample.wsdl e clique em Próximo
  4. Selecione operação1 e clique em Finalizar.
  5. No nó Teste, expanda o nó TestCase1 e clique duas vezes em Input.
  6. Substitua o conteúdo padrão pelo seguinte:
    <soapenv:Envelope xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/
    http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:syn="http://xml.netbeans.org/schema/SynchronousSample">
       <soapenv:Body>
         <syn:typeA>
          <syn:paramA>1</syn:paramA>
          <syn:paramA>2</syn:paramA>
          <syn:paramA>3</syn:paramA>
          <syn:nTest>2</syn:nTest>
         </syn:typeA>
      </soapenv:Body> </soapenv:Envelope>
    Neste teste, os parâmetros de entrada são os três nós: 1, 2, 3, e o número do teste = 2.
  7. Clique duas vezes no nó do arquivo Output no nó TestCase1 e exclua o texto padrão deste arquivo.
  8. Salve as alterações escolhendo Arquivo > Salvar todos.

superior


Testando o aplicativo

Para executar os casos de teste:

  1. Na janela Projetos, clique com o botão direito do mouse no nó do projeto SynchronousSampleApplication e escolha Testar projeto no menu pop-up.
  2. Na primeira execução, o arquivo Output está vazio, por essa razão aceite substituir a saída vazia clicando em Sim nas duas caixas de diálogo.
  3. Observe a mensagem de que os testes falharam. É um caso especial porque durante a primeira execução o Output.xml está vazio e a saída é gravada em Output.
  4. Repita a etapa 1.
  5. Observe a mensagem de que os testes foram bem-sucedidos.

Você pode abrir os arquivos Output.xml de cada um dos casos de teste e verificar os resultados.

Em TestCase0, o arquivo Output.xml contém uma seqüência que exibe a data atual e o fuso horário, por exemplo "Olá! Hoje é 2006-11-17. O fuso horário é de 03:00."

Em TestCase1, o arquivo Output.xml apresenta a seguinte seqüência: "Existe(m) 3 elemento(s) no conjunto de nós. A soma de elemento(s) é 6. O último elemento é 3."

superior


Resumo

Neste tutorial, você explorou o componente Mapeador BPEL do BPEL Designer no NetBeans Enterprise Pack. Você modificou um projeto de aplicativo síncrono de amostra e usou a funcionalidade Mapeador BPEL para adicionar expressões e funções a um processo comercial. Você também testou os aplicativos e verificou que as expressões retornaram valores válidos.



superior


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