Share via


Consideraciones para recibir notificaciones de cambio de base de datos mediante el adaptador de Oracle Database

En este tema se proporcionan algunas consideraciones y procedimientos recomendados que debe tener en cuenta al usar el adaptador de Oracle Database para recibir notificaciones de base de datos de una base de datos de Oracle.

Consideraciones al usar el adaptador para recibir notificaciones

Debe tener en cuenta lo siguiente al usar el adaptador de base de datos de Oracle para recibir notificaciones de consulta.

  • El adaptador de Oracle Database simplemente pasa la notificación, que recibe de la base de datos de Oracle, a los clientes del adaptador. El adaptador no distingue entre las notificaciones de diferentes operaciones, es decir, el adaptador no tiene ninguna información si una notificación determinada es para una operación de inserción o una operación de actualización.

  • El mensaje de notificación de una operación no se ve afectado por el número de registros afectados por esa operación. Por ejemplo, independientemente del número de registros insertados en una tabla de base de datos de Oracle, los clientes del adaptador reciben solo un mensaje de notificación.

  • Se recomienda que la aplicación cliente del adaptador contenga la lógica para interpretar el tipo de notificación recibida de la base de datos de Oracle. Las aplicaciones cliente del adaptador pueden hacerlo extrayendo la información del <elemento Info> del mensaje de notificación recibido. Este es un ejemplo de un mensaje de notificación recibido para una operación de inserción.

    <?xml version="1.0" encoding="utf-8" ?>   
    <Notification xmlns="http://Microsoft.LobServices.OracleDB/2007/03/Notification/">  
      <Details>  
        <NotificationDetails>  
          <ResourceName>SCOTT.ACCOUNTACTIVITY</ResourceName>   
          <Info>1</Info>   
          <QueryId>0</QueryId>   
        </NotificationDetails>  
      </Details>  
      <Info>Insert</Info>   
      <ResourceNames>  
        <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">SCOTT.ACCOUNTACTIVITY</string>   
      </ResourceNames>  
      <Source>Data</Source>   
      <Type>Change</Type>   
    </Notification>  
    
    

    Observe el valor dentro del <elemento Info> . Este valor proporciona información sobre la operación para la que se recibió el mensaje de notificación. La aplicación debe tener la funcionalidad para extraer el valor dentro del <elemento Info> y, a continuación, en función del valor, realizar tareas posteriores. El tema Procesamiento de mensajes de notificación para completar tareas específicas en Oracle Database tiene instrucciones sobre cómo extraer el valor dentro del <elemento Info> .

  • Idealmente, después de que la aplicación cliente reciba una notificación, debe actualizar el registro para el que ya se ha recibido la notificación para que las notificaciones posteriores no sean para el mismo registro. Por ejemplo, considere una tabla ACCOUNTACTIVITY que tenga una columna Procesada . Para todos los registros nuevos insertados en la tabla ACCOUNTACTIVITY , el valor de la columna Procesado siempre es "n". Por ejemplo, después de una operación de inserción, los registros de la tabla ACCOUNTACTIVITY tendrán un aspecto similar al siguiente:

    Id. de transacción de cuenta Processed (Procesado)
    10001 n

    Para obtener notificaciones para el registro recién insertado, el cliente del adaptador establecerá la propiedad de enlace NotificationStatement como:

    SELECT * FROM SCOTT.ACCOUNTACTIVITY WHERE PROCESSED = ‘n’  
    

    Después de recibir la notificación, la aplicación cliente debe establecer el valor de la columna Procesado en "y" para que la instrucción de notificación no funcione en el registro para el que ya se ha notificado. Por lo tanto, para lograrlo, la aplicación cliente debe realizar una operación de actualización en la tabla ACCOUNTACTIVITY . Después de la operación de actualización, el mismo registro de la tabla ACCOUNTACTIVITY tendrá el siguiente aspecto:

    Id. de transacción de cuenta Processed (Procesado)
    10001 y

    Interesantemente, la operación de actualización enviará de nuevo una notificación al cliente del adaptador y todo el proceso se repetirá de nuevo. Por lo tanto, la aplicación cliente debe tener la lógica necesaria para descartar estas notificaciones no deseadas.

  • Si la propiedad de enlace NotifyOnListenerStart es true, el adaptador enviará una notificación al cliente del adaptador cada vez que se inicie la ubicación de recepción. Para obtener más información sobre cómo usar la propiedad de enlace e interpretar el mensaje de notificación, consulte Recepción de notificaciones de cambio de base de datos de Oracle después de un desglose de ubicación de recepción.

Orquestación típica para recibir notificaciones

En esta sección se describe el flujo de orquestación típico para recibir notificaciones mediante el adaptador de Oracle Database.

  1. Lo primero que debe hacer la orquestación es comprobar el tipo de notificación recibida. Las cosas que se deben comprobar son:

    • Indica si se recibió la notificación para el reinicio de la ubicación de recepción.

    • Si se recibió la notificación para una operación en una tabla de base de datos, como Insertar, Actualizar o Eliminar.

      La orquestación debe incluir una forma expresión y, dentro de ella, una consulta xpath, para decidir qué tipo de mensaje se recibe.

  2. Una vez disponible el tipo de notificación, la orquestación debe incluir un bloque de decisión para realizar acciones específicas en función del tipo de notificación recibida. Para ello, la orquestación debe incluir una forma Decide . La forma Decidir consta de un bloque Regla y un bloque Else . Dentro del bloque Regla , debe especificar la condición y, a continuación, incluir formas de orquestación para realizar determinadas operaciones si se cumple la condición. Dentro del bloque Else , debe incluir formas de orquestación para realizar determinadas operaciones si no se cumple la condición.

    Las recomendaciones anteriores se describen en detalle en Procesamiento de mensajes de notificación para completar tareas específicas en Oracle Database mediante BizTalk Server.

Consulte también

Recepción de notificaciones de cambio de base de datos de Oracle mediante BizTalk Server