Creación del ejemplo COBOL

Puede utilizar las instrucciones de este tema para crear el ejemplo COBOL. De forma alternativa, puede importar los esquemas DFDL completados, la aplicación y la biblioteca para el ejemplo.

Creación de la aplicación y la biblioteca

Este ejemplo utiliza una aplicación y una biblioteca en las que se almacenan los artefactos del ejemplo. En primer lugar, debe crear la biblioteca:

  1. En la vista Desarrollo de intermediario, asegúrese de que está viendo recursos como Aplicaciones y bibliotecas. Pulse Inicios rápidos.
  2. Pulse Iniciar creando una biblioteca. Se abre el asistente Nueva biblioteca.
  3. En el campo del nombre de proyecto, especifique COBOLLibrary. Pulse Finalizar

Se crea una biblioteca, llamada COBOLLibrary, y se muestra en la vista Desarrollo de intermediario.

Ahora que ya ha creado la biblioteca, cree la aplicación:

  1. En la vista Desarrollo de intermediario, asegúrese de que está viendo recursos como Aplicaciones y bibliotecas. Pulse Inicios rápidos.
  2. Pulse Iniciar creando una aplicación. Se abrirá el asistente Nueva aplicación.
  3. En el campo nombre de proyecto, especifique COBOLApplication. Pulse Siguiente
  4. Seleccione la biblioteca que creó anteriormente, COBOLLibrary. Pulse Finalizar.

Se crea una aplicación, llamada COBOLApplication, y se muestra en la vista Desarrollo de intermediario.

Creación de los archivos de esquema DFDL

Esta sección describe cómo crear los archivos de esquema DFDL que se utilizan en este ejemplo, importando libros de copias COBOL. Guarde los libros de copias COBOL siguientes en su espacio de trabajo:

  1. OrderList
  2. PurchaseData
  3. CustomerAddress

Para crear un archivo de esquema DFDL para cada uno de estos libros de copias COBOL:

  1. En la vista Desarrollo de intermediario, asegúrese de que está viendo recursos como Aplicaciones y bibliotecas. Pulse el botón derecho del ratón en la biblioteca COBOLLibrary. Pulse Nuevo > Modelo de mensaje. Se abre el asistente Nuevo modelo de mensaje.
  2. En el asistente Nuevo modelo de mensaje, seleccione COBOL. Pulse Siguiente.
  3. Seleccione Crear archivo de esquema DFDL importando un libro de copias o programa COBOL. Pulse Siguiente.
  4. Seleccione el libro de copias que desea importar del espacio de trabajo. Pulse Siguiente
  5. Cada uno de los libros de copia COBOL que se proporciona contiene un solo elemento de nivel 01. Seleccione este elemento en la lista Estructuras de origen y pulse a continuación el botón > para pasar el elemento a la lista Estructuras importadas. Pulse Siguiente.
  6. Deje estas opciones como predeterminadas. Pulse Siguiente.
  7. Bajo Opciones de codificación, seleccione Fija.
  8. En la lista desplegable Codificación (pagina de códigos), seleccione UTF-8. Establezca Orden de bytes en Big Endian.
  9. Pulse Finalizar

Se crea el archivo de esquema DFDL (extensión de archivo .xsd) y se muestra en la carpeta Definiciones de esquema de su biblioteca, COBOLLibrary. Repita estos pasos para cada uno de tres libros de copia COBOL.

Adición de discriminadores a los archivos de esquema DFDL

Antes de poder utilizar los archivos de esquema DFDL OrderList.xsd y PurchaseData.xsd en este ejemplo, debe añadir discriminadores a cada uno de los elementos seleccionados.

Para añadir discriminadores a OrderList.xsd:

  1. En la vista Desarrollo de intermediario, asegúrese de que está viendo recursos como Aplicaciones y bibliotecas. Expanda COBOLLibrary > Definiciones de esquema. Pulse el botón derecho del ratón en el archivo de esquema DFDL, OrderList.xsd, y seleccione Abrir. El archivo de esquema DFDL se abre en el editor de esquemas DFDL.
  2. En la vista Editor, se muestra una opción como hijo del tipo complejo, OrderList. Expanda esta opción y seleccione PointOfSale1.
  3. En la vista Propiedades DFDL, pulse el separador Condiciones de prueba.
  4. Seleccione Discriminador y pulse Añadir discriminador.
  5. En la lista desplegable Clase de prueba, seleccione expression.
  6. En el campo Condición de prueba, escriba {/OrderList/PointOfSaleType eq '1'}.
  7. En la vista Editor, seleccione PointOfSale2.
  8. En la vista Propiedades DFDL, pulse el separador Condiciones de prueba.
  9. Seleccione Discriminador y pulse Añadir discriminador.
  10. En la lista desplegable Clase de prueba, seleccione expression.
  11. En el campo Condición de prueba, escriba {/OrderList/PointOfSaleType eq '2'}.

Para añadir discriminadores a PurchaseData.xsd:

  1. En la vista Desarrollo de intermediario, asegúrese de que está viendo recursos como Aplicaciones y bibliotecas. Expanda COBOLLibrary > Definiciones de esquema. Pulse el botón derecho del ratón en el archivo de esquema DFDL, PurchaseData.xsd, y seleccione Abrir. El archivo de esquema DFDL se abre en el editor de esquemas DFDL.
  2. En la vista Editor, expanda SaleList > Invoice > Items > choice, y seleccione Item1.
  3. En la vista Propiedades DFDL, pulse el separador Condiciones de prueba.
  4. Seleccione Discriminador y pulse Añadir discriminador.
  5. En la lista desplegable Clase de prueba, seleccione expression.
  6. En el campo Condición de prueba, escriba {/PurchaseData/SaleList/Invoice/Items/ItemType eq '1'}.
  7. En la vista Editor, seleccione Item2.
  8. En la vista Propiedades DFDL, pulse el separador Condiciones de prueba.
  9. Seleccione Discriminador y pulse Añadir discriminador.
  10. En la lista desplegable Clase de prueba, seleccione expression.
  11. En el campo Condición de prueba, escriba {/PurchaseData/SaleList/Invoice/Items/ItemType eq '2'}.

Ahora debería tener tres archivos de esquema DFDL, como los siguientes:

En este momento podrá probar sus archivos de esquema DFDL ejecutando un análisis de prueba de los datos de ejemplo, consulte Probar un esquema DFDL analizando los datos de entrada de prueba.

Creación del flujo de mensajes OrderList2PurchaseData

Para crear el flujo de mensajes OrderList2PurchaseData que se utiliza en este ejemplo:

  1. En la vista Desarrollo de intermediario, asegúrese de que está viendo recursos como Aplicaciones y bibliotecas. Pulse el botón derecho del ratón en la aplicación, COBOLApplication. Pulse Nuevo > Flujo de mensajes. Se abre el asistente Nuevo flujo de mensajes.
  2. En el campo Nombre del flujo de mensajes, escriba OrderList2PurchaseData.
  3. Pulse Finalizar. El flujo de mensajes se crea, con el nombre OrderList2PurchaseData, y se abre en el editor de flujos de mensajes.
  4. En el Editor de flujos de mensajes, añada dos nodos MQInput, un nodo de transformación de su elección (por ejemplo, un nodo Compute ESQL o un nodo Mapping) y un nodo MQOutput.
    Para obtener instrucciones, consulte Crear un flujo de mensajes en la documentación de WebSphere Message Broker.
  5. Conecte los terminales de nodo: Para obtener instrucciones, consulte Conexión a nodos de flujo de mensajes en la documentación de WebSphere Message Broker.
  6. Configure las propiedades de nodo tal como se indica en la siguiente tabla. Acepte los valores predeterminados para todas las propiedades, a menos que en la tabla se indique un valor alternativo.
    Para obtener instrucciones, consulte Configurar un nodo de flujo de mensajes en la documentación de WebSphere Message Broker.
    Nodo Página Propiedad Valor
    MQInput Básicas Nombre de cola ORDERLIST.IN1
    Análisis de mensaje de entrada Dominio del mensaje DFDL
    Análisis de mensaje de entrada Modelo de mensaje OrderList.xsd
    Análisis de mensaje de entrada Mensaje {}OrderList.xsd
    MQInput Básicas Nombre de cola XMLORDERLIST.IN1
    Análisis de mensaje de entrada Dominio del mensaje XMLNSC
    Análisis de mensaje de entrada Modelo de mensaje OrderList.xsd
    MQOutput Básicas Nombre de cola

    PURCHASEDATA.OUT1


  7. Si está utilizando un nodo Compute ESQL, efectúe una doble pulsación en el nodo Compute para abrir el Editor ESQL.
  8. En la vista de editor, sustituya el ESQL existente por el código siguiente:
    
    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. Si está utilizando un nodo Mapping, efectúe una doble pulsación en el nodo Mapping para abrir el editor de Correlación de datos gráficos. Seleccione "OrderList" como entrada y "PurchaseData" como salida y cree las transformaciones necesarias.
  10. Guarde el flujo de mensajes.

Crear el flujo de mensajes Redefine

Para crear el flujo de mensajes Redefine que se utiliza en este ejemplo:

  1. En la vista Desarrollo de intermediario, asegúrese de que está viendo recursos como Aplicaciones y bibliotecas. Pulse el botón derecho del ratón en la aplicación, COBOLApplication. Pulse Nuevo > Flujo de mensajes. Se abre el asistente Nuevo flujo de mensajes.
  2. En el campo Nombre del flujo de mensajes, escriba Redefine.
  3. Pulse Finalizar. El flujo de mensajes se crea, con el nombre Redefine, y se abre en el editor de flujos de mensajes.
  4. En el editor de flujo de mensajes, añada un nodo MQInput, un nodo Compute y un nodo MQOutput.
    Para obtener instrucciones, consulte Crear un flujo de mensajes en la documentación de WebSphere Message Broker.
  5. Conecte los terminales de nodo: Para obtener instrucciones, consulte Conexión a nodos de flujo de mensajes en la documentación de WebSphere Message Broker.
  6. Configure las propiedades de nodo tal como se indica en la siguiente tabla. Acepte los valores predeterminados para todas las propiedades, a menos que en la tabla se indique un valor alternativo.
    Para obtener instrucciones, consulte Configurar un nodo de flujo de mensajes en la documentación de WebSphere Message Broker.
    Nodo Página Propiedad Valor
    MQInput Básicas Nombre de cola BINARYADDR.IN1
    Análisis de mensaje de entrada Dominio del mensaje DFDL
    Análisis de mensaje de entrada Modelo de mensaje CustomerAddress.xsd
    Análisis de mensaje de entrada Mensaje {}CustomerAddress.xsd
    MQOutput Básicas Nombre de cola

    XMLADDR.OUT1


  7. Pulse dos veces sobre el nodo Compute para abrirlo en el editor ESQL.
  8. En la vista de editor, sustituya el ESQL existente por el código siguiente:
    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. Guarde el flujo de mensajes.

Despliegue

Para desplegar la aplicación, arrastre la aplicación COBOLApplication al grupo de ejecución en el que desee desplegarla. Automáticamente se genera un archivo BAR y se despliega en el intermediario.

Prueba

Este ejemplo proporciona algunos datos de prueba de ejemplo para los tres escenarios. Estos son OrderList.bin, OrderListLogicalInstance.xml y TestInputAddress1.bin, que se encuentran en la biblioteca COBOLLibrary.

Para obtener información sobre cómo utilizar el cliente de prueba, consulte Visión general del cliente de prueba.

Volver a Leer sobre el ejemplo

Volver a la página inicial del ejemplo