Criar o Subfluxo de Mensagem de Crédito da Conta Corrente

Utilize as seguintes instruções para criar o subfluxo de mensagem de crédito da conta corrente.

  1. Crie um novo fluxo de mensagens:
    1. Clique com o botão direito do mouse no projeto do Message Broker SCANodesSample existente, clique em Novo > Fluxo de Mensagens.
    2. Configure Nome do Fluxo de Mensagens para CurrentAccountCredit e clique em Concluir.
  2. No editor de Fluxo de Mensagens inclua e renomeie os nós relacionados na seguinte tabela.

    Tipo de Nó Nome de Nó
    Input Input
    JavaCompute RetrieveCurrentAccountBalance
    JavaCompute CreditCurrentAccountBalance
    JavaCompute UpdateCurrentAccountBalance
    Saída Saída

  3. Conecte os nós como descrito na tabela a seguir.

    Nome de Nó Terminal Conectar a esse Nó
    Input Out RetrieveCurrentAccountBalance
    RetrieveCurrentAccountBalance Out CreditCurrentAccountBalance
    CreditCurrentAccountBalance Out UpdateCurrentAccountBalance
    UpdateCurrentAccountBalance Out Saída
  4. Customize o nó RetrieveCurrentAccountBalance:
    1. Clique como botão direito do mouse no nó RetrieveCurrentAccountBalance, clique em Propriedades.
    2. Clique em Básico, selecione Navegar para localizar o campo de classe Java.
    3. No campo de texto, digite CurrentAccount.
    4. Selecione CurrentAccount_RetrieveCurrentAccountBalance, clique em OK.
  5. Customize o nó CreditCurrentAccountBalance:
    1. Dê um clique duplo no nó CreditCurrentAccountBalance, assegure que o Nome do projeto seja SCANodesSampleJava e clique em Avançar.
    2. Assegure que Pastas de origem no caminho de construção e Pasta de saída padrão contenham SCANodesSampleJava, clique em Avançar.
    3. Configure o Pacote para sca.broker.sample.currentaccount, clique em Avançar.
    4. Selecione o modelo Criando classe de mensagem, clique em Concluir.
    5. Clique com o botão direito do mouse no nó CreditCurrentAccountBalance, clique em Abrir Java.
    6. Inclua a seguinte instrução de importação:
      import java.math.BigDecimal;
      		
    7. Inclua o seguinte código Java:
      //Go to tree roots
      MbElement inRoot = inMessage.getRootElement();			
      MbElement outRoot = outMessage.getRootElement();			
      MbMessage locEnv = inAssembly.getLocalEnvironment();
      MbMessage newLocEnv = new MbMessage();
      //Get the operation name
      MbElement sca = locEnv.getRootElement().getFirstElementByPath("SCA");
      MbElement input = sca.getFirstElementByPath("Input");
      MbElement operation = input.getFirstElementByPath("Operation");
      String operationName = operation.getValue().toString();
      //Get the old balance
      MbElement variables = locEnv.getRootElement().getFirstElementByPath("Variables");
      float oldBalance = Float.parseFloat(variables.getFirstElementByPath("oldBalance").getValue().toString());
      //Get the amount to transfer			
      MbElement soap = inRoot.getFirstElementByPath("SOAP");
      MbElement body = soap.getFirstElementByPath("Body");
      MbElement action = body.getLastChild();
      MbElement request = action.getLastChild();
      MbElement amount = request.getFirstElementByPath("amount");
      float transferValue = Float.parseFloat(amount.getValue().toString());
      //Calculate the new balance total
      float newBalance = oldBalance + transferValue;
      MbElement newVariables = newLocEnv.getRootElement().createElementAsLastChild(MbElement.TYPE_NAME, "Variables", null);
      //Accept the transfer and set new balance in LE            newVariables.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "newBalance", new BigDecimal(newBalance).setScale(2, java.math.BigDecimal.ROUND_HALF_UP).toString());
      //Setup the message reply
      MbElement newXMLNSC = outRoot.createElementAsLastChild(MbXMLNSC.PARSER_NAME);
      MbElement newOperation = newXMLNSC.createElementAsLastChild(MbElement.TYPE_NAME, operationName + "Response", null);
      newOperation.setNamespace("http://CurrentAccount/");
      MbElement newResponse = newOperation.createElementAsLastChild(MbElement.TYPE_NAME, "CurrentAccountResponse", null);           newResponse.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "accept", "yes");				
      // Create the new assembly with the new property overrides
      MbMessageAssembly outAssembly = new MbMessageAssembly(
      					inAssembly,
      					newLocEnv,
      					inAssembly.getExceptionList(),
      					outMessage);
              
    8. Remova o código Java a seguir pois ele está em conflito com o MbMessageAssembly que você acaba de criar:
      MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly, outMessage);
         		
  6. Customize o nó UpdateCurrentAccountBalance:
    1. Clique com o botão direito do mouse no nó UpdateCurrentAccountBalance, clique em Propriedades.
    2. Clique em Básico, selecione Navegar para localizar o campo de classe Java.
    3. No campo de texto, digite CurrentAccount.
    4. Selecione CurrentAccount_UpdateCurrentAccountBalance, clique em OK.

Agora você pode criar o fluxo de mensagens de conta corrente, consulte Criar o fluxo de mensagens de conta corrente.

Voltar para Estender a Amostra

Voltar para o Início da Amostra