Compartir a través de


Ejecución de operaciones en tablas con tipos de datos de objetos grandes en Oracle Database

El adaptador de Microsoft BizTalk para oracle Database proporciona compatibilidad con los tipos de datos de objetos grandes (LOB) de Oracle:

Nota

Cuando se usa el adaptador de Oracle Database con BizTalk Server, la operación ReadLOB no admite datos de tipo loB de streaming de una base de datos de Oracle. Para transmitir datos loB desde una base de datos de Oracle mediante BizTalk Server debe usar en su lugar la operación Select. Para obtener más información sobre el streaming, vea Compatibilidad de streaming con tipos de datos LOB en Oracle Database. Además, la respuesta de la base de datos de Oracle para la operación ReadLOB producirá un error en la validación en el WSDL. Para obtener instrucciones sobre cómo solucionar el error, consulte Solución de problemas operativos.

¿Cómo realizar operaciones en datos LOB?

Realizar una operación en una base de datos de Oracle mediante el adaptador de Oracle Database con BizTalk Server implica tareas de procedimientos descritas en Bloques de creación para desarrollar aplicaciones de BizTalk con Oracle Database. Para invocar las operaciones ReadLOB y UpdateLOB en una tabla de una base de datos de Oracle, estas tareas son:

  1. Cree un proyecto de BizTalk y genere un esquema para las operaciones ReadLOB y UpdateLOB.

  2. Cree mensajes en el proyecto de BizTalk para enviar y recibir mensajes de la base de datos de Oracle. Debe crear mensajes para la solicitud de envío y recibir respuestas para ambas operaciones.

  3. Cree una orquestación para invocar las operaciones ReadLOB y UpdateLOB.

  4. Compile e implemente el proyecto de BizTalk.

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

  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 de Operate_LOB basado en este tema con el paquete de adaptadores de BizTalk. Para obtener más información, vea Ejemplos de adaptador.

Generar esquema

En este tema, para demostrar cómo realizar operaciones ReadLOB y UpdateLOB, generaremos metadatos para estas operaciones expuestas para la tabla CUSTOMER en el esquema SCOTT de la base de datos de Oracle. Esta tabla se crea en el esquema SCOTT mediante la ejecución de los scripts SQL proporcionados con los ejemplos. Para más información sobre los ejemplos, consulte Ejemplos de 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 de 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 la operación ReadLOB y el segundo conjunto de solicitudes-respuesta para la operación UpdateLOB.

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

  1. 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.

  2. En vista de 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:

    Use Para hacer esto
    Identificador Escriba Solicitud.
    Tipo de mensaje En la lista desplegable, expanda Esquemas y seleccione Operate_LOB. OracleDBBindingSchema.ReadLOB, donde Operate_LOB es el nombre del proyecto de BizTalk. OracleDBBindingSchema es el esquema generado para las operaciones ReadLOB y UpdateLOB en la tabla CUSTOMER.
  5. Repita el paso anterior para crear tres mensajes más. En el panel Propiedades de los nuevos mensajes, haga lo siguiente:

    Establecer identificador en Establecer el tipo de mensaje en
    Response Operate_LOB. OracleDBBindingSchema.ReadLOBResponse
    Request2 Operate_LOB. OracleDBBindingSchema.UpdateLOB
    Response2 Operate_LOB. OracleDBBindingSchema.UpdateLOBResponse

Configuración de la orquestación

Debe crear una orquestación de BizTalk para usar BizTalk Server para invocar operaciones ReadLOB y UpdateLOB en una tabla. En esta orquestación, se quitan dos mensajes de solicitud, uno para la operación ReadLOB y el otro para la operación UpdateLOB. Estos mensajes se quitan en una ubicación de recepción. 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 Acciones paralelas en la orquestación. Para cada acción paralela, debe incluir formas de envío y recepción 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 realizar las operaciones ReadLOB y UpdateLOB simultáneamente contendría:

  • 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.

  • Un 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 es similar a la siguiente:

    Orquestación para leer y actualizar datos LOB

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. En la tabla siguiente se enumeran las formas que debe incluir para una de las acciones paralelas.

Forma Tipo de forma Propiedades
ReceiveMessage Recepción - Establecer el nombre en ReceiveMessage
- Establecer Activar enTrue
SendMessage Envío - Establecer el nombre en SendMessage
ReceiveResponse Recepción - Establecer nombre en ReceiveResponse
- Establecer Activar en False
SendResponse Envío - 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 Recepción - Establecer nombre en ReceiveMessage2
- Establecer Activar enTrue
SendMessage2 Envío - Establecer el nombre en SendMessage2
ReceiveResponse2 Recepción - Establecer nombre en ReceiveResponse2
- Establecer Activar en False
SendResponse2 Envío - Establecer nombre en SendResponse2

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 que se muestran en la orquestación.

Port Propiedades
FileIn - Establecer identificador en FileIn
- Establecer tipo en 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 tipo en LOBPortType
- Establecer el patrón de comunicación en Solicitud-respuesta
- Establecer la dirección de comunicación en enviar y recibir
SaveResponse - 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, a continuación, seleccione Nueva operación. Asigne un nombre a la primera operación para cada puerto como ReadLOB y la segunda operación para cada puerto como UpdateLOB.

Uso de la correlación

La correlación es el proceso de hacer coincidir un mensaje entrante con la instancia apropiada de una orquestación. En la orquestación, quitará dos mensajes de solicitud, uno para cada sobrecarga. Mediante 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. Promover una propiedad del esquema generado para cada operación. Por ejemplo, promueva la propiedad LOB_COLUMN desde el esquema de operación ReadLOB; promover la propiedad FILTER desde el esquema de la operación UpdateLOB. 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 cómo promover una propiedad, vea Promoción de propiedades.

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

  3. En el cuadro de diálogo Propiedades de correlación se enumeran las propiedades promocionadas en el paso 1. Seleccione una propiedad y, a continuación, haga clic en Agregar.

  4. Haga clic en OK.

  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 operación a la que están asociados. Puede cambiar el nombre de los tipos de correlación a CorrelationType_ReadLOB (para la operación ReadLOB) y CorrelationType_UpdateLOB (para la operación UpdateLOB).

  7. En vista de orquestación, haga clic con el botón derecho en Conjuntos de correlación y, después, 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:

    Use Para hacer esto
    Tipo de correlación Operate_LOB. CorrelationType_ReadLOB
    Identificador Correlation_ReadLOB
  9. Agregue otro conjunto de correlación y especifique las siguientes propiedades en el panel Propiedades.

    Use Para hacer esto
    Tipo de correlación Operate_LOB. CorrelationType_UpdateLOB
    Identificador Correlation_UpdateLOB

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 vincularlos 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 la inicialización de conjuntos de correlación en Correlation_ReadLOB
- Establecer mensaje en solicitud
- Establecer la operación en FileIn.ReadLOB.Request
SendMessage - Establecer mensaje en solicitud
- Establecer operación en LOBPort.ReadLOB.Request
ReceiveResponse - Establecer mensaje en respuesta
- Establecer operación en LOBPort.ReadLOB.Response
SendResponse - Establecer mensaje en respuesta
- Establecer operación en SaveResponse.ReadLOB.Request
ReceiveMessage2 - Establecer la inicialización de conjuntos de correlación en Correlation_UpdateLOB
- Establecer mensaje en Request2
- Establecer operación en FileIn.UpdateLOB.Request
SendMessage2 - Establecer mensaje en Request2
- Establecer operación en LOBPort.UpdateLOB.Request
ReceiveResponse2 - Establecer mensaje en Response2
- Establecer operación en LOBPort.UpdateLOB.Response
SendResponse2 - Establecer mensaje en respuesta
- Establecer operación en SaveResponse.UpdateLOB.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á los mensajes de solicitud, uno para las operaciones ReadLOB y UpdateLOB. 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 operación, 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. 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 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 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
        <Operation Name="ReadLOB" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER/ReadLOB" />  
        <Operation Name="UpdateLOB" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER/UpdateLOB" />  
      </BtsActionMapping>  
      

      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.

Iniciar la aplicación

Debe iniciar la aplicación de BizTalk para realizar una operación 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 puerto de envío o WCF-OracleDB 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 los mensajes de solicitud en la ubicación de recepción del archivo. El esquema de los mensajes de solicitud debe ajustarse al esquema de las operaciones que generó anteriormente. Consulte Esquemas de mensajes para operaciones de LÍNEA de negocio especiales para obtener más información sobre el esquema de mensajes de solicitud para invocar operaciones en tipos de datos LOB mediante el adaptador de base de datos de Oracle.

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.

Para esta orquestación, primero se quita un mensaje de solicitud para la operación UpdateLOB para actualizar la columna PHOTO (del tipo de datos BLOB) de la tabla CUSTOMER. El mensaje de solicitud para invocar la actualización de la columna PHOTO para un cliente específico es:

<UpdateLOB xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER">  
  <LOB_COLUMN>PHOTO</LOB_COLUMN>  
  <FILTER>Name='Mindy Martin'</FILTER>  
  <Stream>YWJjZA==</Stream>  
</UpdateLOB>  

Nota

La cadena de filtro siempre debe capturar una fila coincidente; de lo contrario, el adaptador de base de datos de Oracle produce una excepción XmlReaderParsingException. Además, el valor del <elemento Stream> debe ser del tipo base64Binary.

La respuesta de la operación UpdateLOB es:

<?xml version="1.0" encoding="utf-8"?>  
<UpdateLOBResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER"></UpdateLOBResponse>  

Ahora quitamos un mensaje de solicitud para que la operación ReadLOB lea los datos que actualizó la operación UpdateLOB. El mensaje de solicitud para invocar la operación ReadLOB en la columna PHOTO para un cliente específico es:

<ReadLOB xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER">  
  <LOB_COLUMN>PHOTO</LOB_COLUMN>  
  <FILTER>NAME='Mindy Martin'</FILTER>  
</ReadLOB>  

Nota

La cadena de filtro siempre debe capturar una fila coincidente. Si hay más de una fila coincidente, el adaptador de Base de datos de Oracle solo devuelve la columna LOB de la primera fila (coincidente).

La respuesta de la operación ReadLOB es:

<?xml version="1.0" encoding="utf-8"?>  
<ReadLOBResponse mlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER">  
  <ReadLOBResult>YWJjZA==</ReadLOBResult>  
</ReadLOBResponse>  

Nota

Es posible que la respuesta de la operación ReadLOB no se valide con el WSDL. Debe realizar determinadas tareas para validar el ReadLOB en el WSDL. Para obtener más información, consulte Solución de problemas operativos.

Posibles excepciones

Para obtener información sobre las excepciones que puede encontrar al realizar operaciones en la tabla que contiene datos de LOB mediante BizTalk Server, consulte Excepciones y control de errores.

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 enlaces. Una vez que genere un archivo de enlaces, puede importar los valores de configuración del archivo para que no necesite crear los puertos de envío, los puertos de recepción, etc. para la misma orquestación. Para obtener más información sobre los archivos de enlace, consulte Reutilización de enlaces del adaptador de base de datos de Oracle.

Consulte también

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