Esta amostra demonstra o uso do Java Architecture for XML Binding (JAXB) com um nó JavaCompute para transformar dados de mensagem.
Você pode usar o JAXB com aplicativos Java para trabalhar com classes de objetos Java usando métodos getter e setter. Este cenário transforma uma mensagem de envelope de vendas simplificada que contém registros de fatura em uma mensagem de vendas processada que contém registros de instrução.
As mensagens de entrada e de saída são definidas pelo Esquema XML em uma biblioteca do Message Broker:
As classes de objetos Java do JAXB são usadas na classe Java do nó JavaCompute JavaComputeJAXBSampleApplicationJava\com\ibm\sample\JavaComputeNodeJAXBTransform_JAXBSalesTransform.java. Essa classe Java foi criada usando o assistente "Nova Classe de Nó de Cálculo Java" e é chamada pelo nó JavaCompute "JAXB Sales Transform". O código a seguir conclui a transformação passando pelas classes de objetos Java, desserializando a mensagem de entrada, construindo objetos Java para construir a mensagem de saída e serializando os objetos Java para construir a saída a partir do nó:
SaleEnvelope saleEnvelope = (SaleEnvelope)inMsgJavaObj; StatementList statementList = new StatementList(); List<SaleListType> inSaleLists = saleEnvelope.getSaleList(); for(SaleListType inSaleLst : inSaleLists) { List<Invoice> inInvoices = inSaleLst.getInvoice(); for (Invoice inInv : inInvoices) { StatementType outStat = new StatementType(); outStat.setStyle("Full"); outStat.setType("Monthly"); CustomerType outCust = new CustomerType(); outCust.setInitials(inInv.getInitial().get(0) + inInv.getInitial().get(1)); outCust.setName(inInv.getSurname()); outStat.setCustomer(outCust); PurchasesType outPurch = new PurchasesType(); List<ItemType> inItems = inInv.getItem(); BigDecimal sumCost = new BigDecimal("0"); for (ItemType inItem : inItems) { BigDecimal outCost = inItem.getPrice().multiply(costMultipler); sumCost = sumCost.add(outCost.multiply(new BigDecimal(inItem.getQuantity()))); ArticleType outArtic = new ArticleType(); outArtic.setCost(outCost.toPlainString()); outArtic.setDesc(inItem.getDescription()); outArtic.setQty(inItem.getQuantity().toString()); outPurch.getArticle().add(outArtic); } outStat.setPurchases(outPurch); outStat.setAmount(sumCost.toPlainString()); statementList.getStatement().add(outStat); } } Object outMsgJavaObj = statementList;
Para obter informações adicionais, consulte Usando JAXB com um Nó JavaCompute.