Compartir a través de


Invocar funciones y procedimientos sobrecargados en la base de datos de Oracle mediante BizTalk Server

Los procedimientos almacenados y las funciones se pueden sobrecargar en una base de datos de Oracle. El adaptador de base de datos de Oracle admite funciones y procedimientos sobrecargados cambiando el espacio de nombres de destino de la operación. Por ejemplo, la estructura del mensaje para dos procedimientos sobrecargados tiene el siguiente aspecto:

Stored Procedure Overload 1:  
<[SP_NAME] xmlns="http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Package/[PACKAGE_NAME]/[SP_NAME]/overload1">    
  <[PRM1_NAME]>value1</[PRM1_NAME]>  
  <[PRM2_NAME]>value1</[PRM2_NAME]>  
  …  
</[SP_NAME]>  
  
Stored Procedure Overload 2:  
<[SP_NAME] xmlns="http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Package/[PACKAGE_NAME]/[SP_NAME]/overload2">    
  <[PRM1_NAME]>value1</I_[PRM1_NAME]>  
  <[PRM2_NAME]>value1</I_[PRM2_NAME]>  
  …  
</[SP_NAME]>  

La estructura de mensajes SOAP y la acción SOAP necesaria para invocar una función o procedimiento sobrecargado es similar a invocar una función y un procedimiento, como se describe en Esquemas de mensaje para funciones y procedimientos.

Invocar un procedimiento sobrecargado es similar a invocar cualquier otra función, como se describe en Invocación de funciones y procedimientos en Oracle Database Using BizTalk Server. Sin embargo, para diferenciar las funciones sobrecargadas, el adaptador de base de datos de Oracle anexa una cadena única al identificador de nodo y al espacio de nombres que pone a disposición para el artefacto sobrecargado. Esta cadena es "overload1" para la primera sobrecarga, "overload2" para la siguiente sobrecarga, etc.

¿Cómo invocar funciones y procedimientos sobrecargados?

La realización de 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 invocar una función en una base de datos de Oracle, estas tareas son:

  1. Cree un proyecto de BizTalk y genere esquema para la función sobrecargada que desea invocar en una base de datos de Oracle.

  2. Cree mensajes en el proyecto de BizTalk para enviar y recibir mensajes de la base de datos de Oracle. Debe crear mensajes para cada sobrecarga.

  3. Cree una orquestación para invocar la función sobrecargada en la base de datos de Oracle.

  4. Compile e implemente el proyecto de BizTalk.

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

  6. Inicie la aplicación de BizTalk.

    En este tema se proporcionan instrucciones para realizar estas tareas.

Ejemplo basado en este tema

También se proporciona un ejemplo invokeOverloadedProc basado en este tema con el paquete de adaptadores de BizTalk. Para obtener más información, consulte Ejemplos de adaptador.

Generar esquema

En este tema, para demostrar cómo invocar una función o procedimiento sobrecargado, invocaremos el procedimiento GET_ACCOUNT en el esquema SCOTT\Package\ACCOUNT_PKG. Este paquete se crea en el esquema SCOTT mediante la ejecución de los scripts SQL proporcionados con los ejemplos. Este es un procedimiento sobrecargado donde:

  • Una sobrecarga toma el identificador de cuenta como parámetro de entrada (IN) y devuelve una CUENTA%ROWTYPE como parámetro de salida (OUT).

  • La segunda sobrecarga toma el nombre de la cuenta como parámetro de entrada (IN) y devuelve una CUENTA%ROWTYPE como parámetro de salida (OUT).

    Para obtener más información sobre los ejemplos y los scripts sql, consulte Ejemplos de esquema.

    Para invocar una función sobrecargada, generamos esquema para los procedimientos sobrecargados, GET_ACCOUNT.1 y GET_ACCOUNT.2. Consulte Recuperación de metadatos para operaciones de Oracle Database en Visual Studio para obtener más información sobre cómo generar esquema.

Definición de mensajes y tipos de mensajes

El esquema que generó anteriormente describe los "tipos" necesarios para los mensajes de la orquestación. Normalmente, un mensaje es una variable, el tipo para el que se define mediante el esquema correspondiente. Debe vincular el esquema que generó en el primer paso a los mensajes desde la ventana Vista de orquestación del proyecto de BizTalk.

Para este tema, debe crear dos conjuntos de mensajes de solicitud-respuesta: un conjunto de solicitudes-respuesta para el primer procedimiento sobrecargado y el segundo conjunto de solicitudes-respuesta para el segundo procedimiento sobrecargado.

Realice los pasos siguientes para crear mensajes y vincularlos al esquema.

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

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

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

  4. En el panel Propiedades de Message_1, haga lo siguiente:

    Usa esto Para
    Identificador Escriba Solicitud.
    Tipo de mensaje En la lista desplegable, expanda Esquemas y seleccione InvokeOverloadedProc.OracleDBBindingSchema.GET_ACCOUNT, donde InvokeOverloadedProc es el nombre del proyecto de BizTalk. OracleDBBindingSchema es el esquema generado para el procedimiento GET_ACCOUNT.
  5. Repita el paso anterior para crear tres mensajes más. En el panel Propiedades de los nuevos mensajes, haga lo siguiente:

    Establece el identificador en Establecer el tipo de mensaje en
    Respuesta InvokeOverloadedProc.OracleDBBindingSchema.GET_ACCOUNTResponse
    Solicitud2 InvokeOverloadedProc.OracleDBBindingSchema1.GET_ACCOUNT
    Respuesta2 InvokeOverloadedProc.OracleDBBindingSchema1.GET_ACCOUNTResponse

Configuración de la orquestación

Debe crear una orquestación de BizTalk para usar BizTalk Server para invocar un procedimiento sobrecargado en una base de datos de Oracle. En esta orquestación, se dejan caer dos mensajes de petición, uno correspondiente a cada procedimiento sobrecargado, en la ubicación de recepción especificada. El adaptador de Oracle Database consume los mensajes y los pasa a la base de datos de Oracle a través de ODP. La respuesta de la base de datos de Oracle se guarda en otra ubicación.

Dado que la orquestación elige dos solicitudes simultáneamente, debe incluir una forma de Acciones Paralelas en la orquestación. Para cada acción paralela, debe incluir formas Enviar y Recibir para enviar mensajes a la base de datos de Oracle y recibir respuestas. Sin embargo, puede usar los mismos puertos para enviar y recibir mensajes para ambas operaciones. Una orquestación típica para invocar los procedimientos sobrecargados simultáneamente contendrá:

  • Enviar y recibir formas para enviar mensajes a la base de datos de Oracle y recibir respuestas.

  • Puerto de recepción unidireccional para recibir mensajes de solicitud que se van a enviar a la base de datos de Oracle.

  • Puerto de envío bidireccional para enviar mensajes de solicitud a la base de datos de Oracle y recibir respuestas.

  • Un puerto de envío unidireccional para enviar las respuestas de la base de datos de Oracle a una carpeta.

    Una orquestación de ejemplo para invocar las primera y segunda sobrecargas del procedimiento GET_ACCOUNT es similar a la siguiente:

    Orquestación para invocar paquetes sobrecargados

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 tal como se muestran en la orquestación recién mencionada. En la tabla siguiente se enumeran las formas que debe incluir para una de las acciones paralelas.

Forma Tipo de forma Propiedades
RecibirMensaje Recibir - Establecer nombre en ReceiveMessage
- Establecer Activar en True
EnviarMensaje Enviar - Establecer nombre en SendMessage
RecibirRespuesta Recibir - Establecer Name en ReceiveResponse
- Establecer Activar en False
SendResponse Enviar - Establecer nombre en SendResponse

En la tabla siguiente se enumeran las formas que debe incluir para la otra acción paralela.

Forma Tipo de forma Propiedades
ReceiveMessage2 Recibir - Establecer nombre en ReceiveMessage2
- Establecer Activar en True
SendMessage2 Enviar - Establecer nombre en SendMessage2
ReceiveResponse2 Recibir - Establecer nombre en ReceiveResponse2
- Establecer Activar en False
SendResponse2 Enviar - Establecer nombre en SendResponse2

Agregar 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 tal como aparecen en la orquestación.

Puerto Propiedades
FileIn - Establecer identificador en FileIn
- Configura Tipo como FileInType
- Establecer el patrón de comunicación en unidireccional
- Establecer la dirección de comunicación para recibir
LOBPort - Establecer identificador en LOBPort
- Establecer el tipo en LOBPortType
- Establecer el patrón de comunicación en Request-Response
- Establecer la dirección de comunicación en enviar y recibir
GuardarRespuesta - Establecer identificador en SaveResponse
- Establecer Tipo en SaveResponseType
- Establecer el patrón de comunicación en unidireccional
- Establecer la dirección de comunicación en Enviar

Dado que va a procesar dos mensajes de solicitud y respuesta mediante estos puertos, debe crear dos operaciones para cada puerto, donde cada operación corresponde a un tipo de mensaje. Para crear una operación, haga clic con el botón derecho en la forma del puerto y seleccione Nueva operación. Asigne un nombre a la primera operación para cada puerto como Overload1 y la segunda operación para cada puerto como Overload2.

Uso de la correlación

La correlación es el proceso de hacer coincidir un mensaje entrante con la instancia adecuada de una orquestación. En la orquestación, descartará dos mensajes de solicitud, uno para cada sobrecarga. Con la correlación, se asocia un mensaje de solicitud con la orquestación correcta. Para obtener más información sobre la correlación, consulte Uso de correlaciones en orquestaciones.

Para usar correlaciones
  1. Promueva una propiedad del esquema generado para cada función sobrecargada. Por ejemplo, promocione la propiedad AID en el esquema de la primera sobrecarga; promocione la propiedad ANAME en el esquema de la segunda sobrecarga. Para promover una propiedad, haga clic con el botón derecho en la propiedad en la vista de esquema, seleccione Promover y, a continuación, seleccione Promoción rápida. Esto agrega un archivo PropertySchema.xsd al proyecto de BizTalk.

    Para obtener información sobre la promoción de una propiedad, vea Promoción de propiedades.

  2. En la vista orquestación, haga clic con el botón derecho en Tipos de correlacióny, a continuación, seleccione Nuevo tipo de correlación.

  3. En el cuadro de diálogo Propiedades de correlación se enumeran las propiedades que ha promocionado en el paso 1. Seleccione una propiedad y haga clic en Agregar.

  4. Haz clic en Aceptar.

  5. Para crear tipos de correlación para la otra propiedad promocionada, repita estos pasos.

  6. Cambie el nombre de los tipos de correlación en función de la propiedad a la que están asociados. Puede cambiar el nombre de los tipos de correlación a CorrelationType_AID (para la propiedad AID) y CorrelationType_ANAME (para la propiedad ANAME).

  7. En la vista orquestación, haga clic con el botón derecho en Conjuntos de correlación y, a continuación, seleccione Nuevo conjunto de correlación.

  8. Haga clic con el botón derecho en el conjunto de correlación recién agregado y, a continuación, haga clic en Propiedades. En el panel Propiedades, haga lo siguiente:

    Usa esto Para
    Tipo de correlación InvokeOverloadedProc.CorrelationType_AID
    Identificador Correlation_AID
  9. Agregue otro conjunto de correlación y especifique las siguientes propiedades en el panel Propiedades.

    Usa esto Para
    Tipo de correlación InvokeOverloadedProc.CorrelationType_ANAME
    Identificador Correlation_ANAME

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
RecibirMensaje - Establecer Inicialización de Conjuntos de Correlación a Correlation_AID
- Establecer mensaje en solicitud
- Configura Operación en FileIn.Overload1.Request
EnviarMensaje - Establecer mensaje en solicitud
- Establecer Operación en LOBPort.Overload1.Request
RecibirRespuesta - Establecer mensaje en respuesta
- Establecer Operación en LOBPort.Overload1.Response
SendResponse - Establecer mensaje en respuesta
- Establecer Operación en SaveResponse.Overload1.Request
RecibirMensaje2 - Establecer Inicialización de conjuntos de correlación a Correlation_ANAME
- Establecer mensaje en Request2
- Establecer la operación en FileIn.Overload2.Request
SendMessage2 - Establecer mensaje en Request2
- Establecer Operación en LOBPort.Overload2.Request
ReceiveResponse2 - Establecer mensaje en Response2
- Establecer Operación en LOBPort.Overload2.Response
SendResponse2 - Establecer mensaje en Response2
- Establecer Operación en SaveResponse.Overload2.Request

Una vez que haya especificado estas propiedades, las formas de mensaje y los puertos están conectados y se completa la orquestación.

Ahora debe compilar la solución de BizTalk e implementarla en un servidor de 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, debes:

    • Defina una ubicación en el disco duro y un puerto de archivo correspondiente donde quitará los mensajes de solicitud, uno para cada procedimiento sobrecargado. La orquestación de BizTalk consumirá los mensajes de solicitud y los 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á los mensajes de respuesta, uno para cada procedimiento sobrecargado, que contiene la respuesta de la base de datos de Oracle.

    • Defina una WCF-Custom física o WCF-OracleDB puerto de envío para enviar mensajes a la base de datos de Oracle. También debe especificar la acción en el puerto de envío. Para obtener información sobre cómo crear puertos WCF-Custom o WCF-OracleDB, consulte Configuración manual de un enlace de puerto físico al adaptador de base de datos de Oracle. Dado que el WCF-Custom o WCF-OracleDB el puerto de envío envía y recibe mensajes conformes a más de un esquema y realiza dos operaciones, debe establecer una acción dinámica para ambas operaciones. Para obtener más información sobre las acciones, consulte Configuración de la acción SOAP para Oracle Database. Para esta orquestación, la acción debe establecerse de la siguiente manera:

      <BtsActionMapping>  
        <Operation Name="Overload1" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload1" />  
        <Operation Name="Overload2" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload2" />  
      </BtsActionMapping>  
      

      Nota:

      La generación del esquema mediante el complemento del proyecto de BizTalk para consumir servicio de 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 en Oracle Database.

Iniciar la aplicación

Debe iniciar la aplicación de BizTalk para invocar una función en una tabla de 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 está en funcionamiento.

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

  • El puerto de envío WCF-Custom o WCF-OracleDB que envía mensajes a la base de datos de Oracle está en funcionamiento.

  • 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 soltar dos mensajes de solicitud (uno para cada procedimiento sobrecargado) en la ubicación de recepción FILE. El esquema de los mensajes de solicitud debe ajustarse al esquema del procedimiento que generó anteriormente. Consulte Esquemas de mensajes para funciones y procedimientos para obtener más información sobre el esquema de mensajes de solicitud para invocar funciones mediante el adaptador de base de datos de Oracle.

Por ejemplo, el mensaje de solicitud para invocar la primera sobrecarga del procedimiento GET_ACCOUNT es:

<GET_ACCOUNT xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload1">  
  <AID>100001</AID>  
</GET_ACCOUNT>  

Del mismo modo, el mensaje de solicitud para invocar la segunda sobrecarga del procedimiento GET_ACCOUNT es:

<GET_ACCOUNT xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload2">  
  <ANAME>Mindy Martin</ANAME>  
</GET_ACCOUNT>  

El primer mensaje de solicitud invoca el procedimiento GET_ACCOUNT para recuperar el registro con el identificador de cuenta igual a 100020. El segundo mensaje de solicitud invoca el procedimiento GET_ACCOUNT para recuperar los registros que tienen el nombre de cuenta como "John Smith".

La orquestación consume los mensajes de solicitud y los envía a la base de datos de Oracle. La respuesta de la base de datos de Oracle se guarda en otra ubicación file definida como parte de la orquestación. Por ejemplo, la respuesta para invocar el primer procedimiento sobrecargado es:

<?xml version="1.0" encoding="utf-8"?>  
<GET_ACCOUNTResponse mlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload1">  
 <ACCT>  
  <ACCTID>100001</ACCTID>  
  <NAME>Ty Carlson</NAME>  
  <BALANCE>9000</BALANCE>  
 </ACCT>  
</GET_ACCOUNTResponse>  

Posibles excepciones

Para obtener información sobre las excepciones que puede encontrar al invocar paquetes sobrecargados mediante BizTalk Server, vea Excepciones y control de errores.

Procedimientos recomendados

Después de implementar y configurar el proyecto de BizTalk, puede exportar opciones de configuración a un archivo XML denominado archivo de enlaces. Una vez que genere un archivo de enlaces, puede importar los valores de configuración del archivo para que no sea necesario crear los puertos de envío, los puertos de recepción, etc. para la misma orquestación. Para obtener más información sobre la vinculación de archivos, consulte Reutilizar vinculaciones del adaptador de base de datos de Oracle.

Véase también

Bloques de creación para desarrollar aplicaciones de BizTalk con la base de datos de Oracle