Compartir a través de


Ejecución de operaciones compuestas en oracle Database mediante BizTalk Server

El adaptador de base de datos de Oracle permite a los clientes adaptadores realizar operaciones compuestas en la base de datos de Oracle. Una operación compuesta puede incluir:

  • Insertar, actualizar, eliminar y seleccionar operaciones en tablas y vistas.

  • Procedimientos almacenados y funciones, dentro o fuera de un paquete.

    Una sola operación compuesta puede tener cualquier número de estas operaciones, en cualquier orden. Por ejemplo, puede tener dos inserciones seguidas de una eliminación y, por último, una ejecución de procedimiento almacenado. Además, puede tener diferentes operaciones destinadas a distintas tablas o vistas de base de datos. Para obtener más información sobre cómo el adaptador admite operaciones compuestas, consulte Realización de operaciones compuestas en Oracle Database. Para obtener información sobre la estructura del mensaje SOAP para las operaciones compuestas, vea Esquemas de mensaje para la operación compuesta.

¿Cómo realizar operaciones compuestas en Oracle Database?

Realizar una operación en una base de datos de Oracle mediante el adaptador de base de datos de Oracle con BizTalk Server implica tareas de procedimientos descritas en Bloques de creación para desarrollar aplicaciones de BizTalk con Oracle Database. Para realizar operaciones compuestas en la base de datos de Oracle, estas tareas son:

  1. Cree un proyecto de BizTalk en Visual Studio y genere el esquema para todas las operaciones que desea invocar.

  2. Cree manualmente un archivo de esquema que incluya referencias a todos los esquemas que generó en el paso anterior.

  3. Cree mensajes en el proyecto de BizTalk para enviar y recibir mensajes de la base de datos de Oracle. Estos mensajes deben ajustarse al esquema de solicitud y respuesta que creó en el paso anterior.

  4. Cree una orquestación para invocar la operación compuesta en la base de datos de Oracle.

  5. Compile e implemente el proyecto de BizTalk.

  6. Configure la aplicación de BizTalk mediante la creación de puertos físicos de envío y recepción.

  7. Inicie la aplicación de BizTalk.

    En este tema se proporcionan instrucciones sobre cómo realizar estas tareas.

Generación de esquema

En este tema, para demostrar cómo realizar operaciones compuestas, realizaremos las siguientes tareas en el mismo orden:

  • Inserte el registro en la tabla ACCOUNTACTIVITY.

  • Recupere todos los registros de la tabla ACCOUNTACTIVITY invocando el procedimiento GET_ALL_ACTIVITY dentro del paquete ACCOUNT_PKG.

  • Elimine el registro de la tabla ACCOUNTACTIVITY.

    Ejecute los scripts proporcionados con los ejemplos para crear la tabla ACCOUNTACTIVITY. Para obtener más información sobre los ejemplos, vea Ejemplos de esquema.

    Debe crear un proyecto de BizTalk y usar el complemento consumir servicio adaptador para generar el esquema. Consulte Recuperación de metadatos para operaciones de Oracle Database en Visual Studio para obtener más información sobre cómo generar esquemas.

Creación de una definición de esquema compuesto

Ahora debe crear un esquema compuesto en el proyecto de Visual Studio BizTalk que haga referencia a los esquemas que creó para las operaciones individuales. Realice los pasos siguientes para crear una definición de esquema compuesto.

Para agregar una definición de esquema compuesto

  1. Agregue un archivo de esquema al proyecto de BizTalk en Visual Studio. Haga clic con el botón derecho en el nombre de la solución, seleccione Agregar y, a continuación, haga clic en Nuevo elemento. En el cuadro de diálogo Agregar nuevo elemento , en el cuadro Categorías , haga clic en Archivos de esquema. En el cuadro Plantillas , haga clic en Esquema. Especifique un nombre para el archivo de esquema y haga clic en Aceptar.

    En este ejemplo, especifique el nombre del archivo de esquema como CompositeSchema.xsd.

  2. Agregue referencias al esquema generado para las distintas operaciones que desea realizar. En este ejemplo, los distintos esquemas generados para las operaciones son:

    • OracleDBBinding.xsd, para las operaciones insertar y eliminar en la tabla ACCOUNTACTIVITY.

    • OracleDBBinding2.xsd, para el procedimiento GET_ALL_ACTIVITY.

      Para agregar referencias:

    1. Haga clic con el botón derecho en el nodo Esquema> raíz< en CompositeSchema.xsd y haga clic en Propiedades.

    2. En el cuadro Propiedad , haga clic en el botón de puntos suspensivos (...) en la propiedad Imports .

      Importar definiciones de esquema

    3. En el cuadro de diálogo Importaciones , en la lista Importar nuevo esquema como , seleccione Importación XSD y, a continuación, haga clic en Agregar.

    4. En el cuadro de diálogo Selector de tipos de BizTalk , expanda el nodo Nombre del proyecto de BizTalk, expanda Esquemas y, a continuación, seleccione el esquema que desea importar. En este ejemplo, seleccione <BizTalk_project_name>. OracleDBBinding.xsd. Haga clic en OK.

      Repita este paso para importar <BizTalk_project_name>. OracleDBBinding2.xsd también.

    5. En el cuadro de diálogo Importaciones , haga clic en Aceptar.

  3. Agregue dos nodos secundarios al nodo de esquema raíz. Un nodo secundario corresponde al esquema de solicitud para realizar la operación compuesta. El otro nodo secundario corresponde al esquema de respuesta. El nodo que corresponde al esquema de solicitud puede tener cualquier nombre. El nodo que corresponde al esquema de respuesta debe llamarse <request_schema_node>Response. En este ejemplo, llamaremos al nodo de esquema de solicitud como Solicitud. Por lo tanto, el nodo de esquema de respuesta se denomina RequestResponse.

    Nota

    De forma predeterminada, también se agrega un nodo raíz a un nuevo archivo de esquema. Puede cambiar el nombre del nodo raíz a Solicitud. Para cambiar el nombre de un nodo, haga clic con el botón derecho en el nombre del nodo y haga clic en Cambiar nombre.

    Para agregar un nodo en el <nodo Esquema> :

    1. Haga clic con el botón derecho en el <nodo Esquema> , seleccione Insertar nodo de esquema y haga clic en Registro secundario.

    2. Cambie el nombre del nuevo nodo a RequestResponse.

  4. Agregue nodos secundarios en el nodo Solicitud que corresponda al esquema de solicitud para cada operación que realizará como parte de la operación compuesta. En este ejemplo, debe agregar nodos secundarios correspondientes a lo siguiente:

    • Insertar y eliminar operaciones en la tabla ACCOUNTACTIVITY.

    • GET_ALL_ACTIVITY procedimiento.

    Importante

    Debe agregar los nodos en el mismo orden en el que desea realizar las operaciones. Por ejemplo, si desea insertar un registro, ejecute un procedimiento almacenado y, a continuación, elimine un registro, primero debe agregar un nodo para la operación Insertar, seguido de un nodo para el procedimiento almacenado y, por último, un nodo para la operación Delete.

    Para agregar nodos secundarios al nodo Solicitud :

    1. Haga clic con el botón derecho en el nodo Solicitud , seleccione Insertar nodo de esquema y, a continuación, haga clic en Registro secundario.

      Insertar nodos secundarios para un esquema

    2. Cambie el nombre del registro para que corresponda a un esquema de solicitud para una operación que realice como parte de la operación compuesta. Por ejemplo, cambie el nombre del nodo a "Insertar".

    3. Asigne el nodo Insertar al esquema de solicitud para la operación Insertar en la tabla ACCOUNTACTIVITY. Para ello, haga clic con el botón derecho en el nodo Insertar y haga clic en Propiedades. En el cuadro Propiedades, en la lista Tipo de estructura de datos, seleccione Insertar (referencia).

      Asignar nodos secundarios para solicitar el esquema

    4. Repita estos pasos para agregar nodos para los esquemas de solicitud para GET_ALL_ACTIVITY procedimiento almacenado y la operación Eliminar. Especifique los nombres de nodo y asígnelos al esquema correspondiente, tal como se mencionó en la tabla siguiente.

      nombre del nodo Asignado al esquema
      GET_ALL_ACTIVITY GET_ALL_ACTIVITY (referencia)
      Eliminar Eliminar (referencia)
  5. Agregue nodos secundarios en el nodo RequestResponse que corresponda al esquema de respuesta de cada operación que realizará como parte de la operación compuesta. En este ejemplo, debe agregar nodos secundarios correspondientes a lo siguiente:

    • Insertar y eliminar operaciones en la tabla ACCOUNTACTIVITY.

    • GET_ALL_ACTIVITY procedimiento almacenado.

    Importante

    Debe agregar los nodos secundarios en el mismo orden que los nodos secundarios en el nodo Solicitud .

    Para agregar nodos secundarios al nodo RequestResponse :

    1. Haga clic con el botón derecho en el nodo RequestResponse , seleccione Insertar nodo de esquema y haga clic en Registro secundario.

    2. Cambie el nombre del registro para que corresponda a un esquema de respuesta para una operación que se realiza como parte de la operación compuesta. Por ejemplo, cambie el nombre del nodo a "InsertResponse".

    3. Asigne el nodo InsertResponse al esquema de respuesta de la operación Insertar en la tabla ACCOUNTACTIVITY. Para ello, haga clic con el botón derecho en el nodo InsertarResponse y haga clic en Propiedades. En el cuadro Propiedades, en la lista Tipo de estructura de datos, seleccione InsertarResponse (Referencia).

    4. Repita estos pasos para agregar nodos para los esquemas de respuesta para el procedimiento almacenado GET_ALL_ACTIVITY y la operación Delete. Especifique los nombres de nodo y asígnelos al esquema correspondiente, tal como se mencionó en la tabla siguiente.

      nombre del nodo Asignado al esquema
      GET_ALL_ACTIVITYResponse GET_ALL_ACTIVITYResponse (referencia)
      DeleteResponse DeleteResponse (Referencia)
  6. Guarde el archivo CompositeSchema.xsd .

Definición de mensajes y tipos de mensajes

El esquema compuesto que creó en el último paso describe los "tipos" necesarios para los mensajes de una orquestación. Normalmente, un mensaje es una variable, el tipo para el que se define mediante el esquema correspondiente. Ahora debe crear mensajes para la orquestación y vincularlos al esquema que creó en el paso anterior.

  1. Agregue una orquestación al proyecto de BizTalk en Visual Studio. En Explorador de soluciones, haga clic con el botón derecho en el nombre del proyecto de BizTalk, seleccione Agregar y, a continuación, haga clic en Nuevo elemento. Escriba un nombre para la orquestación de BizTalk y, a continuación, haga clic en Agregar.

  2. Abra la ventana Vista orquestación del proyecto de BizTalk si no está abierta. Para ello, haga clic en Ver, seleccione Otras ventanas y, a continuación, haga clic en Vista de orquestación.

  3. En la vista Orquestación, haga clic con el botón derecho en Mensajes y, a continuación, haga clic en Nuevo mensaje.

  4. Haga clic con el botón derecho en el mensaje recién creado y, a continuación, seleccione Ventana Propiedades.

  5. En el panel Propiedades del Message_1, haga lo siguiente:

    Use Para hacer esto
    Identificador Escriba Request
    Tipo de mensaje En la lista desplegable, expanda Esquemas y seleccione Composite_Op.CompositeSchema.Request, donde Composite_Op es el nombre del proyecto de BizTalk. CompositeSchema es el esquema que creó manualmente para las operaciones compuestas.
  6. Repita el paso 2 para crear un mensaje. En el panel Propiedades del nuevo mensaje, haga lo siguiente:

    Use Para hacer esto
    Identificador Escriba Response
    Tipo de mensaje En la lista desplegable, expanda Esquemas y, a continuación, seleccione Composite_Op.CompositeSchema.RequestResponse.

Configuración de la orquestación

Debe crear una orquestación de BizTalk para usar BizTalk Server para realizar operaciones compuestas en la base de datos de Oracle. En esta orquestación, quitará un mensaje de solicitud en una ubicación de recepción definida. El mensaje de solicitud debe ajustarse al esquema compuesto que creó anteriormente. El adaptador de Base de datos de Oracle consume este mensaje y lo pasa a la base de datos de Oracle. La respuesta de la base de datos de Oracle se guarda en otra ubicación. Debe incluir formas enviar y recibir para enviar mensajes a la base de datos de Oracle y recibir respuestas, respectivamente. Una orquestación básica para realizar operaciones compuestas es similar a la siguiente:

Orquestación para realizar operaciones compuestas peform

Agregar formas de mensaje

Asegúrese de especificar las siguientes propiedades para cada una de las formas de mensaje. Los nombres enumerados en la columna Shape son los nombres de las formas de mensaje que se muestran en la orquestación mencionada.

Forma Tipo de forma Propiedades
ReceiveMessage Recepción - Establecer nombre en ReceiveMessage
- Establecer Activar en True
SendMessage Envío - Establecer nombre en SendMessage
ReceiveResponse Recepción - Establecer nombre en ReceiveResponse
- Establecer Activar en False
SendResponse Envío - Establecer el nombre en SendResponse

Adición de puertos

Asegúrese de especificar las siguientes propiedades para cada uno de los puertos lógicos. Los nombres enumerados en la columna Puerto son los nombres de los puertos como se muestra en la orquestación.

Port Propiedades
MessageIn - Establecer identificadoren MessageIn
- Establecer el tipo en MessageInType
- Establecer el patrón de comunicación en unidireccional
- Establecer la dirección de comunicación para recibir
LOBPort - Establecer identificador en LOBPort
- Establecer tipo en LOBPortType
- Establecer el patrón de comunicación en Solicitud-respuesta
- Establecer la dirección de comunicación en Enviar y recibir
ResponseOut - Establecer el identificador en ResponseOut
- Establecer el tipo en ResponseOutType
- Establecer el patrón de comunicación en unidireccional
- Establecer la dirección de comunicación en enviar

Especificar mensajes para formas de acción y conectarlos a puertos

En la tabla siguiente se especifican las propiedades y sus valores que se deben establecer para especificar mensajes para las formas de acción y para vincular los mensajes a los puertos. Los nombres enumerados en la columna Shape son los nombres de las formas de mensaje tal como se muestran en la orquestación mencionada anteriormente.

Forma Propiedades
ReceiveMessage - Establecer mensaje en solicitud
- Establecer la operación en MessageIn.CompositeOp.Request
SendMessage - Establecer mensaje en solicitud
- Establecer operación en LOBPort.CompositeOp.Request
ReceiveResponse - Establecer mensaje en respuesta
- Establecer operación en LOBPort.CompositeOp.Response
SendResponse - Establecer mensaje en respuesta
- Establecer la operación en ResponseOut.CompositeOp.Request

Después de especificar estas propiedades, se conectan las formas y los puertos del mensaje y se completa la orquestación.

Ahora debe compilar la solución de BizTalk e implementarla en un BizTalk Server. Para obtener más información, vea Compilar y ejecutar orquestaciones.

Configuración de la aplicación de BizTalk

Después de implementar el proyecto de BizTalk, la orquestación que creó anteriormente aparece en el panel Orquestaciones de la consola de administración de BizTalk Server. Debe usar la consola de administración de BizTalk Server para configurar la aplicación. Para ver un tutorial, consulte Tutorial: Implementación de una aplicación básica de BizTalk.

La configuración de una aplicación implica:

  • Selección de un host para la aplicación.

  • Asignación de los puertos que creó en la orquestación a puertos físicos en la consola de administración de BizTalk Server. Para esta orquestación debe:

    • Defina una ubicación en el disco duro y un puerto de archivo correspondiente donde quitará un mensaje de solicitud. La orquestación de BizTalk consumirá el mensaje de solicitud y lo enviará a la base de datos de Oracle.

    • Defina una ubicación en el disco duro y un puerto de archivo correspondiente donde la orquestación de BizTalk quitará el mensaje de respuesta que contiene la respuesta de la base de datos de Oracle.

    • Defina un WCF-Custom físico o WCF-OracleDB puerto de envío para enviar mensajes a la base de datos de Oracle. Dado que las operaciones que forman parte de la operación compuesta se ejecutan en una sola transacción, asegúrese de que la propiedad de enlace UseAmbientTransaction esté establecida en True.

      También debe especificar la acción en el puerto de envío. La acción de una operación compuesta es "<http://Microsoft.LobServices.OracleDB/2007/03/CompositeOperation".> Para obtener información sobre cómo crear puertos, consulte Configuración manual de un enlace de puerto físico al adaptador de base de datos de Oracle. Para obtener más información sobre cómo especificar acciones para puertos, consulte Configuración de la acción SOAP para Oracle Database.

      Nota

      La generación del esquema mediante el complemento de proyecto de BizTalk del servicio consumir adaptador también crea un archivo de enlace que contiene información sobre los puertos y las acciones que se van a establecer para esos puertos. Puede importar este archivo de enlace desde la consola de administración de BizTalk Server para crear puertos de envío (para llamadas salientes) o puertos de recepción (para llamadas entrantes). Para obtener más información, consulte Configuración de un enlace de puerto físico mediante un archivo de enlace de puertos a Oracle Database. Si importa este archivo de enlace, la acción en el puerto de envío se establece en una acción dinámica que implique todas las operaciones seleccionadas en el complemento Consumir servicio de adaptador mientras genera el esquema. Para una operación compuesta, debe reemplazar la acción dinámica por "<http://Microsoft.LobServices.OracleDB/2007/03/CompositeOperation".>

Iniciar la aplicación

Debe iniciar la aplicación de BizTalk para realizar operaciones compuestas en la base de datos de Oracle. Para obtener instrucciones sobre cómo iniciar una aplicación de BizTalk, vea Cómo iniciar una orquestación.

En esta fase, asegúrese de:

  • El puerto de recepción FILE para recibir mensajes de solicitud para la orquestación se está ejecutando.

  • El puerto de envío FILE para recibir los mensajes de respuesta de la orquestación se está ejecutando.

  • El WCF-Custom o WCF-OracleDB puerto de envío para enviar mensajes a la base de datos de Oracle se está ejecutando.

  • La orquestación de BizTalk para la operación se está ejecutando.

Ejecución de la operación

Después de ejecutar la aplicación, debe quitar un mensaje de solicitud en la ubicación de recepción del archivo. El esquema del mensaje de solicitud debe ajustarse al esquema de las operaciones compuestas que creó anteriormente. Por ejemplo, un mensaje de solicitud que inserta un registro en la tabla ACCOUNTACTIVITY, invoca el GET_ALL_ACTIVITY procedimiento almacenado y elimina un registro de la tabla ACCOUNTACTIVITY es:

<Request xmlns="http://Composite_Op.CompositeSchema">  
  <Insert xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/ACCOUNTACTIVITY">  
    <RECORDSET>  
      <ACCOUNTACTIVITYRECORDINSERT>  
        <TID>1</TID>  
        <ACCOUNT>100001</ACCOUNT>  
        <AMOUNT>1500</AMOUNT>  
        <DESCRIPTION></DESCRIPTION>  
        <TRANSDATE>2008-06-21T15:52:19</TRANSDATE>  
        <PROCESSED>n</PROCESSED>  
      </ACCOUNTACTIVITYRECORDINSERT >  
    </RECORDSET>  
  </Insert>  
  <GET_ALL_ACTIVITY xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG"/>  
  <Delete xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/ACCOUNTACTIVITY">  
    <FILTER>WHERE AMOUNT = 1500</FILTER>  
  </Delete>  
</Request>  

El mensaje de solicitud anterior inserta primero un registro y, a continuación, invoca el procedimiento GET_ALL_ACTIVITY para obtener todos los registros de la tabla ACCOUNTACTIVITY. A continuación, el registro insertado se elimina especificando una cláusula FILTER. Consulte Esquemas de mensajes para la operación compuesta para obtener más información sobre el esquema de mensajes de solicitud para realizar operaciones compuestas en la base de datos de Oracle mediante el adaptador de base de datos de Oracle.

La orquestación consume el mensaje y lo envía a la base de datos de Oracle. La respuesta de la base de datos de Oracle se guarda en la otra ubicación FILE definida como parte de la orquestación. Por ejemplo, la respuesta de la base de datos de Oracle para el mensaje de solicitud anterior es similar a la siguiente:

<?xml version="1.0" encoding="utf-8" ?>   
<RequestResponse xmlns="http://Composite_Op.CompositeSchema">  
  <InsertResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOOT/Table/ACCOUNTACTIVITY">  
    <InsertResult>1</InsertResult>   
  </InsertResponse>  
  <GET_ALL_ACTIVITYResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG">  
    <ALLRECS>  
      <xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">  
        <xs:element msdata:IsDataSet="true" name="NewDataSet">  
          <xs:complexType>  
            <xs:sequence>  
              <xs:element minOccurs="0" maxOccurs="unbounded" name="NewTable">  
                <xs:complexType>  
                  <xs:sequence>  
                    <xs:element minOccurs="0" name="TID" type="xs:decimal" />   
                    <xs:element minOccurs="0" name="ACCOUNT" type="xs:decimal" />   
                    <xs:element minOccurs="0" name="AMOUNT" type="xs:decimal" />   
                    <xs:element minOccurs="0" name="DESCRIPTION" type="xs:string" />   
                    <xs:element minOccurs="0" name="TRANSDATE" type="xs:dateTime" />   
                    <xs:element minOccurs="0" name="PROCESSED" type="xs:string" />   
                  </xs:sequence>  
                </xs:complexType>  
              </xs:element>  
            </xs:sequence>  
          </xs:complexType>  
        </xs:element>  
      </xs:schema>  
      <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">  
        <NewDataSet xmlns="">  
          <NewTable>  
            ......   
            ......   
          </NewTable>  
          ......  
          ......  
          <NewTable>  
            <TID>10</TID>   
            <ACCOUNT>100001</ACCOUNT>   
            <AMOUNT>1000</AMOUNT>   
            <TRANSDATE>2008-07-28T21:39:57</TRANSDATE>   
            <PROCESSED>n</PROCESSED>   
          </NewTable>  
        </NewDataSet>  
      </diffgr:diffgram>  
    </ALLRECS>  
  </GET_ALL_ACTIVITYResponse>  
  <DeleteResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/ACCOUNTACTIVITY">  
    <DeleteResult>1</DeleteResult>   
  </DeleteResponse>  
</RequestResponse>  

La respuesta anterior contiene varios conjuntos de resultados que corresponden a las distintas operaciones realizadas como parte de la operación compuesta. Por ejemplo, el InsertResult elemento contiene "1", que indica el número de filas insertadas por la operación Insertar. Del mismo modo, el DeleteResult elemento contiene '1', que indica el número de filas eliminadas por la operación Delete.

Importante

Si experimenta problemas de tiempo de espera al ejecutar una operación compuesta, podría deberse a que el número de conexiones es menor que el número de operaciones de una operación compuesta que implica:

  • Procedimientos almacenados que contienen BFILE, BLOB, CLOB, NCLOB y REF CURSOR como parámetros OUT o IN OUT.

    • Seleccione la operación.

    Para resolver este problema, debe asegurarse de que si hay un número "n" de estas operaciones en una operación compuesta, el valor especificado para la propiedad de enlace MinPoolSize es "n+1" o superior. Para obtener más información sobre la propiedad de enlace MinPoolSize , vea Trabajar con propiedades de enlace.

Prácticas recomendadas

Después de haber implementado y configurado el proyecto de BizTalk, puede exportar las opciones de configuración a un archivo XML denominado archivo de enlace. Una vez que genere un archivo de enlace, puede importar los valores de configuración del archivo, de modo que no necesite crear elementos como puertos de envío y puertos de recepción para la misma orquestación. Para obtener más información sobre los archivos de enlace, consulte Reutilización de enlaces de adaptadores de base de datos de Oracle.

Consulte también

Bloques de creación para desarrollar aplicaciones de BizTalk con Oracle Database