Sobre a Amostra de Transformação JABX do Nó JavaCompute

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:

  1. JavaComputeNodeJAXBSampleLibrary/SaleEnvelope.xsd
  2. JavaComputeNodeJAXBSampleLibrary/ProcessedSales.xsd
Esses arquivos de Esquema XML foram vinculados a classes de objetos Java usando o compilador de esquema JAXB 2.0 que é fornecido com o WebSphere Message Broker e estão contidos no projeto Java "JavaComputeNodeJAXBSampleLibraryJava".

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.

Voltar para o início da Amostra