Crear el subflujo de mensajes de crédito de cuentas corrientes

Utilice las instrucciones siguientes para crear el subflujo de mensajes de crédito de cuentas corrientes.

  1. Cree un nuevo flujo de mensajes:
    1. Pulse el botón derecho del ratón en el proyecto de Message Broker SCANodesSample existente, pulse Nuevo > Flujo de mensajes.
    2. Establezca Nombre de flujo de mensajes en CurrentAccountCredit, pulse Finalizar.
  2. En el Editor de flujos de mensajes, añada y renombre los nodos que se listan en la siguiente tabla.

    Tipo de nodo Nombre de nodo
    Input Input
    JavaCompute RetrieveCurrentAccountBalance
    JavaCompute CreditCurrentAccountBalance
    JavaCompute UpdateCurrentAccountBalance
    Output Output

  3. Conecte los nodos tal como se describe en la siguiente tabla.

    Nombre de nodo Terminal Conectar a este nodo
    Input Out RetrieveCurrentAccountBalance
    RetrieveCurrentAccountBalance Out CreditCurrentAccountBalance
    CreditCurrentAccountBalance Out UpdateCurrentAccountBalance
    UpdateCurrentAccountBalance Out Output
  4. Personalice el nodo RetrieveCurrentAccountBalance:
    1. Pulse con el botón derecho del ratón el nodo RetrieveCurrentAccountBalance, pulse Propiedades.
    2. Pulse Básico, seleccione Examinar para encontrar el campo de clase Java.
    3. En el campo de texto, escriba CurrentAccount.
    4. Seleccione CurrentAccount_RetrieveCurrentAccountBalance, pulse Aceptar.
  5. Personalice el nodo CreditCurrentAccountBalance:
    1. Efectúe una doble pulsación en el nodo CreditCurrentAccountBalance, asegúrese de que el Nombre de proyecto sea SCANodesSampleJava y pulse Siguiente.
    2. Asegúrese de que Carpetas origen en la vía de construcción y Carpeta de salida predeterminada contengan SCANodesSampleJava, pulse Siguiente.
    3. Establezca Paquete en sca.broker.sample.currentaccount, pulse Siguiente.
    4. Seleccione la plantilla Crear clase de mensaje, pulse Finalizar.
    5. Pulse con el botón derecho del ratón en el nodo CreditCurrentAccountBalance, pulse Abrir Java.
    6. Añada la sentencia de importación siguiente:
      import java.math.BigDecimal;
      		
    7. Añada el código Java siguiente:
      //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. Elimine el código Java siguiente porque entra en conflicto con el nodo MbMessageAssembly que acaba de crear:
      MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly, outMessage);
         		
  6. Personalice el nodo UpdateCurrentAccountBalance:
    1. Pulse con el botón derecho del ratón el nodo UpdateCurrentAccountBalance, pulse Propiedades.
    2. Pulse Básico, seleccione Examinar para encontrar el campo de clase Java.
    3. En el campo de texto, escriba CurrentAccount.
    4. Seleccione CurrentAccount_UpdateCurrentAccountBalance, pulse Aceptar.

Ahora puede crear el flujo de mensajes de cuentas corrientes, consulte Crear el flujo de mensajes de cuentas corrientes.

Volver a Ampliar el ejemplo

Volver a la página inicial del ejemplo