Construindo a Amostra COBOL

É possível usar as instruções deste tópico para construir a amostra COBOL. Como alternativa, é possível importar os esquemas, aplicativo e biblioteca DFDL concluídos para a amostra.

Criando o Aplicativo e Biblioteca

Essa amostra usa um aplicativo e uma biblioteca para conter os artefatos de amostra. Primeiro crie a Biblioteca:

  1. Na visualização Desenvolvimento do Broker, assegure-se de que você esteja visualizando os recursos como Aplicativos e Bibliotecas. Clique em Iniciações Rápidas.
  2. Clique em Iniciar criando uma biblioteca. O assistente Nova Biblioteca é aberto.
  3. No campo de nome do projeto, insira COBOLLibrary. Clique em Concluir.

Uma biblioteca é criada, denominada COBOLLibrary, e é mostrada na visualização Desenvolvimento do Broker.

Agora que você criou a biblioteca, crie o aplicativo:

  1. Na visualização Desenvolvimento do Broker, assegure-se de que você esteja visualizando os recursos como Aplicativos e Bibliotecas. Clique em Iniciações Rápidas.
  2. Clique em Iniciar criando um aplicativo. O assistente Novo Aplicativo é aberto.
  3. No campo Nome do Projeto, insira COBOLApplication. Clique em Avançar
  4. Selecione sua biblioteca criada anteriormente, COBOLLibrary. Clique em Concluir.

Um aplicativo é criado, denominado COBOLApplication, e é mostrado na visualização Desenvolvimento do Broker.

Criando os Arquivos de Esquema DFDL

Esta seção descreve como criar os arquivos de esquema DFDL usados nesta amostra, importando os copybooks COBOL. Salve os seguintes copybooks COBOL na sua área de trabalho:

  1. OrderList
  2. PurchaseData
  3. CustomerAddress

Para criar um arquivo de esquema DFDL para cada um desses copybooks COBOL:

  1. Na visualização Desenvolvimento do Broker, assegure-se de que você esteja visualizando os recursos como Aplicativos e Bibliotecas. Clique com o botão direito na biblioteca, COBOLLibrary. Clique em Novo > Modelo de Mensagem. O assistente de Novo Modelo de Mensagem é aberto.
  2. No assistente Novo Modelo de Mensagem, selecione COBOL. Clique em Avançar.
  3. Selecione Criar um arquivo de esquema DFDL importando um programa ou copybook COBOL. Clique em Avançar.
  4. Selecione o copybook que você deseja importar de sua área de trabalho. Clique em Avançar
  5. Cada copybook COBOL fornecido contém apenas 01 elemento de um nível. Selecione esse elemento na lista Estruturas de Origem e, em seguida, clique no botão > para mover o elemento para a lista Estruturas Importadas. Clique em Avançar.
  6. Deixe essas opções como padrão. Clique em Avançar.
  7. Sob as opções de Codificação, selecione Fixa.
  8. Na lista suspensa Codificação (Página de Códigos), selecione UTF-8. Configure Ordem do Byte para Big Endian.
  9. Clique em Concluir.

O arquivo de esquema DFDL é criado (extensão de arquivo .xsd) e é exibido na pasta Definições de Esquema da biblioteca, COBOLLibrary. Repita essas etapas para cada um dos três copybooks COBOL.

Incluindo Discriminadores nos Arquivos de Esquema DFDL

Antes que os arquivos de esquema DFDL OrderList.xsd e PurchaseData.xsd possam ser usados nesta amostra, você deve incluir discriminadores em cada um dos elementos de opção.

Para incluir os discriminadores necessários no OrderList.xsd:

  1. Na visualização Desenvolvimento do Broker, assegure-se de que você esteja visualizando os recursos como Aplicativos e Bibliotecas. Expanda COBOLLibrary > Definições de Esquema. Clique com o botão direito do mouse no arquivo de esquema DFDL, OrderList.xsd, e selecione Abrir. O arquivo de esquema DFDL é aberto no editor de esquema DFDL.
  2. Na visualização Editor, uma opção é exibida como uma filha do tipo complexo, OrderList. Expanda essa opção e selecione PointOfSale1.
  3. Na visualização Propriedades do DFDL, clique na guia Condições de Teste.
  4. Selecione Discriminador e clique em Incluir Discriminador.
  5. Na lista suspensa Tipo de Teste, selecione expressão.
  6. No campo Condição de Teste, insira {/OrderList/PointOfSaleType eq '1'}.
  7. Na visualização Editor, selecione PointOfSale2.
  8. Na visualização Propriedades do DFDL, clique na guia Condições de Teste.
  9. Selecione Discriminador e clique em Incluir Discriminador.
  10. Na lista suspensa Tipo de Teste, selecione expressão.
  11. No campo Condição de Teste, insira {/OrderList/PointOfSaleType eq '2'}.

Para incluir os discriminadores necessários no PurchaseData.xsd:

  1. Na visualização Desenvolvimento do Broker, assegure-se de que você esteja visualizando os recursos como Aplicativos e Bibliotecas. Expanda COBOLLibrary > Definições de Esquema. Clique com o botão direito do mouse no arquivo de esquema DFDL, PurchaseData.xsd, e selecione Abrir. O arquivo de esquema DFDL é aberto no editor de esquema DFDL.
  2. Na visualização Editor, expanda SaleList > Fatura > Itens > opção e selecione Item1.
  3. Na visualização Propriedades do DFDL, clique na guia Condições de Teste.
  4. Selecione Discriminador e clique em Incluir Discriminador.
  5. Na lista suspensa Tipo de Teste, selecione expressão.
  6. No campo Condição de Teste, insira {/PurchaseData/SaleList/Invoice/Items/ItemType eq '1'}.
  7. Na visualização Editor, selecione Item2.
  8. Na visualização Propriedades do DFDL, clique na guia Condições de Teste.
  9. Selecione Discriminador e clique em Incluir Discriminador.
  10. Na lista suspensa Tipo de Teste, selecione expressão.
  11. No campo Condição de Teste, insira {/PurchaseData/SaleList/Invoice/Items/ItemType eq '2'}.

Você deverá ter agora três arquivos de esquema DFDL que se parecerão como a seguir:

Neste ponto, é possível testar os arquivos de esquema DFDL, executando uma análise de teste dos dados da amostra, consulte Testando um esquema DFDL analisando os dados de entrada de teste.

Criando o Fluxo de Mensagens OrderList2PurchaseData

Para criar o fluxo de mensagens OrderList2PurchaseData que é usado nesta amostra.

  1. Na visualização Desenvolvimento do Broker, assegure-se de que você esteja visualizando os recursos como Aplicativos e Bibliotecas. Clique com o botão direito no aplicativo, COBOLApplication. Clique em Novo > Fluxo de Mensagens. O assistente Novo Fluxo de Mensagens é aberto.
  2. No campo Nome do Fluxo de Mensagens, insira OrderList2PurchaseData.
  3. Clique em Concluir. O fluxo de mensagens é criado, denominado OrderList2PurchaseData, e aberto no editor de Fluxo de Mensagens.
  4. No editor de Fluxo de Mensagens, inclua dois nós MQInput, um nó de transformação de sua escolha (por exemplo, um nó ESQL Compute ou Mapping) e um nó MQOutput.
    Para obter instruções, consulte Criando um fluxo de mensagens na documentação do WebSphere Message Broker.
  5. Conecte os terminais do nó: Para obter instruções, consulte Conectando nós de fluxo de mensagens na documentação do WebSphere Message Broker.
  6. Configure as propriedades do nó conforme listadas na tabela a seguir. Aceite os valores padrão para todas as propriedades, a menos que seja listado um valor alternativo na tabela.
    Para obter instruções, consulte Configurando um nó do fluxo de mensagens na documentação do WebSphere Message Broker.
    Ativo Propriedade Valor
    MQInput Básico Nome da Fila ORDERLIST.IN1
    Análise de Mensagem de Entrada Domínio de mensagem DFDL
    Análise de Mensagem de Entrada Modelo de mensagem OrderList.xsd
    Análise de Mensagem de Entrada Mensagem {}OrderList.xsd
    MQInput Básico Nome da Fila XMLORDERLIST.IN1
    Análise de Mensagem de Entrada Domínio de mensagem XMLNSC
    Análise de Mensagem de Entrada Modelo de mensagem OrderList.xsd
    MQOutput Básico Nome da Fila

    PURCHASEDATA.OUT1


  7. Se usar um nó ESQL Compute, clique duas vezes no nó Compute para abrir o Editor de ESQL.
  8. Na visualização do editor, substitua o ESQL existente pelo seguinte código:
    
    CREATE COMPUTE MODULE OrderList2PurchaseData_Compute
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		CALL CopyMessageHeaders();
    		
    		SET OutputRoot.DFDL.PurchaseData.InvoiceCount = InputRoot.DFDL.OrderList.InvoiceCount;
    		SET OutputRoot.DFDL.PurchaseData.ItemCount = InputRoot.DFDL.OrderList.ItemCount;
    		
    		DECLARE TotalQuantity INTEGER 0;
    		DECLARE I INTEGER 1;
    		DECLARE J INTEGER;
    		SET J = CARDINALITY(InputRoot.DFDL.OrderList.SaleList.Invoice[]);
    		WHILE I <= J DO
    			SET OutputRoot.DFDL.PurchaseData.SaleList.Invoice[I].CustomerInitial[1] = InputRoot.DFDL.OrderList.SaleList.Invoice[I].InvoiceHeader.CustomerInitial[1];
    			SET OutputRoot.DFDL.PurchaseData.SaleList.Invoice[I].CustomerInitial[2] = InputRoot.DFDL.OrderList.SaleList.Invoice[I].InvoiceHeader.CustomerInitial[2];
    			SET OutputRoot.DFDL.PurchaseData.SaleList.Invoice[I].Surname = InputRoot.DFDL.OrderList.SaleList.Invoice[I].InvoiceHeader.Surname;
    			
    			DECLARE K INTEGER 1;
    			DECLARE L INTEGER;
    			SET L = CARDINALITY(InputRoot.DFDL.OrderList.SaleList.Invoice[I].Items.Item[]);
    			
    			WHILE K <= L DO
    				DECLARE OutputItem ROW;
    				
    				SET OutputItem = THE (
    				   SELECT Inv.ItemType
    				        , Inv.ItemCode
    				        , Inv.Description
    				        , Inv.Price
    				        , Inv.Category
    				        , It.Quantity
    				     FROM InputRoot.DFDL.OrderList.SaleList.Invoice[I].Items.Item[K] AS It
    				        , InputRoot.DFDL.OrderList.Inventory.Item[] AS Inv
    				    WHERE Inv.ItemCode = It.ItemCode
    				      AND Inv.ItemCode = InputRoot.DFDL.OrderList.SaleList.Invoice[I].Items.Item[K].ItemCode
    				      );
    				      
    				IF OutputItem.ItemType = '1' THEN
    					SET OutputRoot.DFDL.PurchaseData.SaleList.Invoice[I].Items[K].ItemType = OutputItem.ItemType;
    					SET OutputRoot.DFDL.PurchaseData.SaleList.Invoice[I].Items[K].Item1.ItemCode = 'AA';--OutputItem.ItemCode;
    					SET OutputRoot.DFDL.PurchaseData.SaleList.Invoice[I].Items[K].Item1.Price = OutputItem.Price;
    					SET OutputRoot.DFDL.PurchaseData.SaleList.Invoice[I].Items[K].Item1.Description = OutputItem.Description;
    					SET OutputRoot.DFDL.PurchaseData.SaleList.Invoice[I].Items[K].Item1.Category = OutputItem.Category;
    					SET OutputRoot.DFDL.PurchaseData.SaleList.Invoice[I].Items[K].Item1.Quantity = OutputItem.Quantity;
    				ELSE
    					SET OutputRoot.DFDL.PurchaseData.SaleList.Invoice[I].Items[K].ItemType = OutputItem.ItemType;
    					SET OutputRoot.DFDL.PurchaseData.SaleList.Invoice[I].Items[K].Item2.ItemCode = OutputItem.ItemCode;
    					SET OutputRoot.DFDL.PurchaseData.SaleList.Invoice[I].Items[K].Item2.Price = OutputItem.Price;
    					SET OutputRoot.DFDL.PurchaseData.SaleList.Invoice[I].Items[K].Item2.Colour = OutputItem.Description;
    					SET OutputRoot.DFDL.PurchaseData.SaleList.Invoice[I].Items[K].Item2.Quantity = OutputItem.Quantity;
    					
    				END IF;
    				
    				SET TotalQuantity = TotalQuantity + OutputItem.Quantity;
    				SET K = K + 1;
    			END WHILE;
    			
    			SET I = I + 1; 
    		END WHILE;
    
    
    		--Trailer
    		SET OutputRoot.DFDL.PurchaseData.Trailer.TotalQuantity = TotalQuantity;
    		
    		IF EXISTS(InputRoot.DFDL.OrderList.PointOfSale1[]) THEN
    			SET OutputRoot.DFDL.PurchaseData.Trailer.PointOfSaleType = '1';
    		ELSE
    			SET OutputRoot.DFDL.PurchaseData.Trailer.PointOfSaleType = '2';
    		END IF;
    		
    		RETURN TRUE;
    	END;
    
    	CREATE PROCEDURE CopyMessageHeaders() BEGIN
    		DECLARE I INTEGER 1;
    		DECLARE J INTEGER;
    		SET J = CARDINALITY(InputRoot.*[]);
    		WHILE I < J DO
    			SET OutputRoot.*[I] = InputRoot.*[I];
    			SET I = I + 1;
    		END WHILE;
    	END;
    END MODULE;
    
    
  9. Se você estiver usando um nó Mapping, clique duas vezes no nó Mapping para abrir o editor de Mapa de Dados Gráficos. Selecione "OrderList" como a entrada e "PurchaseData" como a saída e construa as transformações necessárias.
  10. Salve o fluxo de mensagens.

Criando o Fluxo de Mensagens Redefine

Para criar o fluxo de mensagens Redefine que é usado nesta amostra.

  1. Na visualização Desenvolvimento do Broker, assegure-se de que você esteja visualizando os recursos como Aplicativos e Bibliotecas. Clique com o botão direito no aplicativo, COBOLApplication. Clique em Novo > Fluxo de Mensagens. O assistente Novo Fluxo de Mensagens é aberto.
  2. No campo Nome do Fluxo de Mensagens, insira Redefine.
  3. Clique em Concluir. O fluxo de mensagens é criado, denominado Redefine, e aberto no editor de Fluxo de Mensagens.
  4. No editor de Fluxo de Mensagens, inclua um nó MQInput, um nó Compute e um nó MQOutput.
    Para obter instruções, consulte Criando um fluxo de mensagens na documentação do WebSphere Message Broker.
  5. Conecte os terminais do nó: Para obter instruções, consulte Conectando nós de fluxo de mensagens na documentação do WebSphere Message Broker.
  6. Configure as propriedades do nó conforme listadas na tabela a seguir. Aceite os valores padrão para todas as propriedades, a menos que seja listado um valor alternativo na tabela.
    Para obter instruções, consulte Configurando um nó do fluxo de mensagens na documentação do WebSphere Message Broker.
    Ativo Propriedade Valor
    MQInput Básico Nome da Fila BINARYADDR.IN1
    Análise de Mensagem de Entrada Domínio de mensagem DFDL
    Análise de Mensagem de Entrada Modelo de mensagem CustomerAddress.xsd
    Análise de Mensagem de Entrada Mensagem {}CustomerAddress.xsd
    MQOutput Básico Nome da Fila

    XMLADDR.OUT1


  7. Clique duas vezes no nó Compute para abri-lo no editor ESQL.
  8. Na visualização do editor, substitua o ESQL existente pelo seguinte código:
    CREATE COMPUTE MODULE RedefineAddr_Compute
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		CALL CopyMessageHeaders();
    		SET OutputRoot.XMLNSC = InputRoot.DFDL;
    		RETURN TRUE;
    	END;
    	
    	CREATE PROCEDURE CopyMessageHeaders() BEGIN
    		DECLARE I INTEGER 1;
    		DECLARE J INTEGER;
    		SET J = CARDINALITY(InputRoot.*[]);
    		WHILE I < J DO
    			SET OutputRoot.*[I] = InputRoot.*[I];
    			SET I = I + 1;
    		END WHILE;
    	END;
    	
    END MODULE;
    
  9. Salve o fluxo de mensagens.

Implementando

Para implementar seu aplicativo, arraste o aplicativo COBOLApplication para o grupo de execução no qual você deseja implementá-lo. Um arquivo BAR é gerado automaticamente e implementado no broker.

Testando

Esta amostra fornece alguns dados de teste de exemplo para todos os três cenários. Eles são OrderList.bin, OrderListLogicalInstance.xml e TestInputAddress1.bin, localizados na biblioteca, COBOLLibrary.

Para obter informações sobre como usar o Cliente de Teste, consulte Visão Geral do Cliente de Teste.

Voltar a Ler sobre a Amostra

Voltar para o Início da Amostra