Compartir a través de


Recepción de notificaciones de cambios de Oracle Database de forma incremental mediante BizTalk Server

Importante

Por motivos de brevedad, en este tema solo se describe cómo recibir notificaciones de forma incremental. En escenarios empresariales, la orquestación debe incluir idealmente la lógica para extraer el tipo de mensaje de notificación recibido y, a continuación, realizar las operaciones posteriores. En otras palabras, la orquestación descrita en este tema debe basarse en la orquestación descrita en Procesar mensajes de notificación para completar tareas específicas en Oracle Database mediante BizTalk Server.

En este tema se muestra cómo configurar el adaptador de Oracle Database para recibir mensajes de notificación de consultas incrementales de Oracle. Para demostrar las notificaciones incrementales, consideramos una tabla, ACCOUNTACTIVITY, con una columna "Procesada". Cuando se inserta un nuevo registro en esta tabla, el valor de la columna "Procesado" se establece en 'n'. Puede configurar el adaptador para recibir notificaciones incrementales haciendo lo siguiente:

  • Regístrese para recibir notificaciones mediante una instrucción SELECT que recupere todos los registros que tienen la columna "Procesado" como "n". Para ello, especifique la instrucción SELECT para la propiedad de enlace NotificationStatement .

  • Para las filas a las que se ha notificado, actualice la columna "Procesado" a "y".

    En este tema se muestra cómo crear una orquestación de BizTalk y configurar una aplicación de BizTalk para lograrlo.

Configuración de notificaciones con las propiedades de enlace del adaptador de base de datos de Oracle

En la tabla siguiente se resumen las propiedades de enlace del adaptador de Oracle Database que se usan para configurar la recepción de notificaciones de la base de datos de Oracle. Debe especificar estas propiedades de enlace al configurar el puerto de recepción en la consola de administración de BizTalk Server.

Nota

Puede especificar estas propiedades de enlace al generar el esquema para la operación de notificación , aunque no sea obligatorio. Si lo hace, el archivo de enlace de puerto que genera el complemento consumir servicio de adaptador como parte de la generación de metadatos también contiene los valores que especifique para las propiedades de enlace. Posteriormente, puede importar este archivo de enlace en la consola de administración de BizTalk Server para crear el puerto de recepción personalizado de WCF o WCF-OracleDB con las propiedades de enlace ya establecidas. Para obtener más información sobre cómo crear un puerto de recepción mediante el archivo de enlace, consulte Configuración de un enlace de puerto físico mediante un archivo de enlace de puertos a Oracle Database.

Binding (propiedad) Descripción
InboundOperationType Especifica la operación de entrada que desea realizar. Para recibir mensajes de notificación, establezca esta opción en Notificación.
NotificationPort Especifica el número de puerto que ODP.NET debe abrir para escuchar la notificación de cambio de base de datos de Oracle.
NotificationStatement Especifica la instrucción SELECT usada para registrarse para las notificaciones de consulta. El adaptador obtiene un mensaje de notificación solo cuando cambia el conjunto de resultados de la instrucción SELECT especificada.
NotifyOnListenerStart Especifica si el adaptador envía una notificación a los clientes del adaptador cuando se inicia el agente de escucha.

Para obtener una descripción más completa de estas propiedades, vea Trabajar con el adaptador de BizTalk para propiedades de enlace de base de datos de Oracle. Para obtener una descripción completa de cómo usar el adaptador de Oracle Database para recibir notificaciones de la base de datos de Oracle, lea más.

Cómo muestra este tema la recepción de mensajes de notificación

En este tema, para demostrar cómo el adaptador de Base de datos de Oracle admite la recepción de mensajes de notificación de cambios incrementales de la base de datos de Oracle, configuraremos el adaptador para recibir notificaciones de cambios en la tabla ACCOUNTACTIVTY. Supongamos que la tabla ACCOUNTACTIVITY tiene columnas "TID", "Account" y "Processed". Cada vez que se agrega un nuevo registro, el valor de la columna "Procesado" se establece en 'n'. Por lo tanto, para obtener notificaciones incrementales, tendrá que realizar las siguientes tareas como parte de la orquestación de BizTalk:

  • Obtener notificación para todos los registros en los que "Procesado" es 'n'. Para ello, especifique una instrucción SELECT como una instrucción de notificación.

  • Después de recibir la notificación para un registro determinado, establezca "Procesado" en "y". Para ello, ejecute un procedimiento almacenado, PROCESS_RECORDS, que actualiza la columna "Procesado".

    Para demostrar la recepción de notificaciones incrementales, hacemos lo siguiente:

  • Genere el esquema para la notificación (operación de entrada) y PROCESS_RECORDS (operación de salida) en la tabla ACCOUNTACTIVITY.

  • Cree una orquestación que tenga lo siguiente:

    • Una ubicación de recepción para recibir mensajes de notificación. Puede configurar para la notificación especificando la instrucción SELECT como:

      SELECT TID,ACCOUNT,PROCESSED FROM SCOTT.ACCOUNTACTIVITY WHERE PROCESSED = ‘n’
      

      Nota

      Debe especificar el nombre de la tabla junto con el nombre del esquema. Por ejemplo, SCOTT.ACCOUNTACTIVITY.

    • Puerto de envío para actualizar las filas para las que ya se ha enviado la notificación. Ejecutará el PROCESS_RECORDS procedimiento almacenado en este puerto para establecer el valor de la columna "Procesado" en "y" para los registros para los que se recibe la notificación.

      Tenga en cuenta que esta operación debe ejecutarse después de recibir los mensajes de notificación para que se actualicen las filas procesadas. Para evitar la sobrecarga de esperar a obtener la respuesta de notificación y, a continuación, quitar manualmente un mensaje de solicitud para ejecutar el procedimiento PROCESS_RECORDS, generará el mensaje de solicitud para PROCESS_RECORDS procedimiento dentro de la propia orquestación. Puede hacerlo mediante la forma Construir mensaje dentro de una orquestación.

Recepción de mensajes de notificación de la base de datos de Oracle

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

  1. Cree un proyecto de BizTalk y, a continuación, genere el esquema para la notificación (operación de entrada) y PROCESS_RECORDS procedimiento (operación de salida) en la tabla ACCOUNTACTIVITY. Opcionalmente, puede especificar valores para las propiedades de enlace InboundOperationType, NotificationPort y NotificationStatement .

  2. Cree un mensaje en el proyecto de BizTalk para recibir notificaciones de la base de datos de Oracle.

  3. Cree mensajes en el proyecto de BizTalk para ejecutar el procedimiento almacenado PROCESS_RECORDS y recibir mensajes de respuesta.

  4. Cree una orquestación que haga lo siguiente:

    • Recibe el mensaje de notificación de la base de datos de Oracle.

    • Crea un mensaje para ejecutar el procedimiento PROCESS_RECORDS.

    • Envía este mensaje a la base de datos de Oracle para seleccionar y actualizar los registros y recibir una respuesta.

  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.

    Nota

    Para las operaciones entrantes, como recibir mensajes de notificación, solo debe configurar un puerto de recepción de WCF-Custom unidireccional o WCF-OracleDB. No se admiten puertos de recepción bidireccionales para las operaciones entrantes.

  7. Inicie la aplicación de BizTalk.

    En este tema se proporcionan instrucciones para realizar estas tareas.

Generar esquema

Debe generar el esquema para la operación de notificación y PROCESS_RECORDS procedimiento. Consulte Recuperación de metadatos para operaciones de Oracle en Visual Studio para obtener más información sobre cómo generar el esquema. Realice las tareas siguientes al generar el esquema. Omita el primer paso si no desea especificar las propiedades de enlace en tiempo de diseño.

  1. Especifique un valor para las propiedades de enlace InboundOperationType, NotificationPort y NotificationStatement al generar el esquema. Para obtener más información sobre esta propiedad de enlace, vea Trabajar con el adaptador de BizTalk para propiedades de enlace de base de datos de Oracle. Para obtener instrucciones sobre cómo especificar propiedades de enlace, vea Especificar propiedades de enlace.

  2. Seleccione el tipo de contrato como Servicio (operaciones de entrada).

  3. Generar esquema para la operación de notificación .

  4. Seleccione el tipo de contrato como Cliente (operaciones salientes).

  5. Generar esquema para el procedimiento PROCESS_RECORDS . Este procedimiento está disponible en el paquete ACCOUNT_PKG .

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. Una vez generado el esquema, debe vincularlo a los mensajes de la vista Orquestación del proyecto de BizTalk.

Para este tema, debe crear tres mensajes: uno para recibir notificaciones de la base de datos de Oracle, una para ejecutar el procedimiento PROCESS_RECORDS y otra para recibir la respuesta del procedimiento.

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

  1. Agregue una orquestación al proyecto de BizTalk. En el 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 de vista de orquestación del proyecto de BizTalk, si aún no está abierta. 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 de Message_1, haga lo siguiente:

    Use Para hacer esto
    Identificador Escriba NotifyReceive.
    Tipo de mensaje En la lista desplegable, expanda Esquemas y seleccione OracleNotifyIncremental.OracleDBBinding.Notification, donde OracleNotifyIncremental es el nombre del proyecto de BizTalk. OracleDBBinding es el esquema generado para la operación de notificación .
  6. Repita el paso 3 para crear dos nuevos mensajes. En el panel Propiedades del nuevo mensaje, haga lo siguiente:

    Establecer identificador en Establecer el tipo de mensaje en
    Procedimiento OracleNotifyIncremental.OracleDBBinding1.PROCESS_RECORDS, donde OracleDBBinding1 es el esquema generado para el procedimiento PROCESS_RECORDS .
    ProcedureResponse OracleNotifyIncremental.OracleDBBinding1.PROCESS_RECORDSResponse

Configuración de la orquestación

Debe crear una orquestación de BizTalk para usar BizTalk Server para recibir mensajes de notificación de la base de datos de Oracle y, a continuación, actualizar las filas para las que se recibió la notificación. En esta orquestación, el adaptador recibe el mensaje de notificación basado en la instrucción SELECT especificada para la propiedad de enlace NotificationStatement . El mensaje de notificación se recibe en una ubicación FILE. Una vez recibida la respuesta, la orquestación construye un mensaje para invocar el procedimiento PROCESS_RECORDS, que actualiza las filas para las que se recibe la notificación. La respuesta de este mensaje también se recibe en la misma ubicación file.

Por lo tanto, la orquestación debe contener lo siguiente:

  • Un WCF-Custom unidireccional o WCF-OracleDB puerto de recepción para recibir mensajes de notificación.

  • Un WCF-Custom bidireccional o WCF-OracleDB puerto de envío para enviar mensajes para ejecutar el procedimiento PROCESS_RECORDS.

  • Forma Construir mensaje para construir mensajes, para ejecutar PROCESS_RECORDS procedimiento, dentro de la orquestación.

  • Un puerto de envío FILE para guardar el mensaje de notificación y la respuesta del procedimiento PROCESS_RECORDS.

  • Recibir y enviar formas.

    Una orquestación de ejemplo es similar a la siguiente.

    Orquestación para recibir notificaciones de Oracle

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
ReceiveNotification Recepción - Establecer nombre en ReceiveNotification

- Establecer Activar enTrue
SaveNotification Envío - Establecer nombre en SaveNotification
SendProcMessage Envío - Establecer nombre en SendProcMessage
ReceiveProcResponse Recepción - Establecer el nombre en ReceiveProcResponse
SaveProcResponse Envío - Establecer nombre en SaveProcResponse

Agregar forma de mensaje de construcción

Puede usar la forma Construir mensaje para generar un mensaje de solicitud dentro de la orquestación para ejecutar el procedimiento PROCESS_RECORDS. Para ello, debe agregar una forma Construir mensaje y dentro de esa forma asignación de mensajes a la orquestación. En este ejemplo, la forma Asignación de mensajes invoca código que genera un mensaje que se envía a la base de datos de Oracle para ejecutar el procedimiento. La forma Asignación de mensajes también establece la acción para que el mensaje se envíe a la base de datos de Oracle.

Para la forma del mensaje de construcción, establezca la propiedad Message Con construct enProcedure.

El código para generar la respuesta podría formar parte de la misma solución de Visual Studio que el proyecto de BizTalk. Un código de ejemplo para generar un mensaje de respuesta tiene este aspecto.

namespace SampleMessageCreator
{
    public class SampleMessageCreator
    {
        private static XmlDocument Message;
        private static string XmlFileLocation;
        private static string ResponseDoc;

        public static XmlDocument XMLMessageCreator()
        {
            XmlFileLocation = "C:\\TestLocation\\MessageIn";
            try
            {
                ResponseDoc = (Directory.GetFiles(XmlFileLocation, "*.xml", SearchOption.TopDirectoryOnly))[0];
            }
            catch (Exception ex)
            {
                Console.WriteLine("Trying to get XML from: " + XmlFileLocation);
                Console.WriteLine("EXCEPTION: " + ex.ToString());
                throw ex;
            }
            //Create Message From XML
            Message = new XmlDocument();
            Message.PreserveWhitespace = true;
            Message.Load(ResponseDoc);
            return Message;
        }
    }
}

Para que el fragmento de código anterior pueda generar un mensaje de solicitud, debe tener un mensaje de solicitud XML (para el procedimiento PROCESS_RECORDS) en la ubicación especificada para la XmlFileLocation variable.

Nota

Después de compilar el proyecto, MessageCreator.dll se creará en el directorio del proyecto. Debe agregar este archivo DLL a la caché global de ensamblados (GAC). Además, debe agregar el MessageCreator.dll como referencia en el proyecto de BizTalk.

Agregue la siguiente expresión para invocar este código desde la forma Asignación de mensajes y para establecer la acción para el mensaje. Para agregar una expresión, haga doble clic en la forma Asignación de mensajes para abrir el Editor de expresiones.

Procedure = SampleMessageCreator.SampleMessageCreator.XMLMessageCreator();
Procedure(WCF.Action) = "http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/PROCESS_RECORDS";

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
OracleNotifyPort - Establecer identificador enOracleNotifyPort

- Establecer tipo en OracleNotifyPortType

- Establecer el patrón de comunicación en unidireccional

- Establecer la dirección de comunicación para recibir
SaveMessagePort - Establecer identificador en SaveMessagePort

- Establecer tipo en SaveMessagePortType

- Establecer el patrón de comunicación en unidireccional

- Establecer la dirección de comunicación en Enviar

- Crear una operación Notificar. Esta operación se usa para los mensajes de notificación.

- Crear un procedimiento de operación. Esta operación se usa para seleccionar mensajes de respuesta.
OracleOutboundPort - Establecer identificador en OracleOutboundPort

- Establecer tipo en OracleOutboundPortType

- Establecer el patrón de comunicación en Solicitud-respuesta

- Establecer la dirección de comunicación en enviar y recibir

Especificar mensajes para formas de acción y conectarse 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
ReceiveNotification - Establecer mensaje en NotifyReceive

- Establecer la operación en OracleNotifyPort.Notify.Request
SaveNotification - Establecer mensaje en NotifyReceive

- Establecer la operación en SaveMessagePort.Notify.Request
SendProcMessage - Establecer mensaje en procedimiento

- Establecer la operación en OracleOutboundPort.Procedure.Request
ReceiveProcResponse - Establecer mensaje en ProcedureResponse

- Establecer la operación en OracleOutboundPort.Procedure.Response
SaveProcResponse - Establecer mensaje en ProedureResponse

- Establecer la operación en SaveMessagePort.Procedure.Request

Después de especificar estas propiedades, las formas y los puertos de mensaje están conectados 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 obtener un tutorial, vea 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 WCF-Custom física o WCF-OracleDB puerto de recepción unidireccional. Este puerto escucha las notificaciones procedentes de la base de datos de Oracle. Para obtener información sobre cómo crear puertos de recepción, consulte Configuración manual de un enlace de puerto físico al adaptador de base de datos de Oracle. Asegúrese de especificar las siguientes propiedades de enlace para el puerto de recepción.

      Importante

      No es necesario realizar este paso si especificó las propiedades de enlace en tiempo de diseño. En tal caso, puede crear un puerto de recepción, con las propiedades de enlace necesarias establecidas, importando el archivo de enlace creado por el Complemento consumir servicio adaptador. Para obtener más información, consulte Configuración de un enlace de puerto físico mediante un archivo de enlace de puerto a Oracle Database.

      Binding (propiedad) Value
      InboundOperationType Establézcalo en Notificación.
      NotificationPort Especifica el número de puerto que ODP.NET debe abrir para escuchar la notificación de cambio de base de datos de Oracle. Establézcalo en el mismo número de puerto que debe haber agregado a la lista de excepciones del Firewall de Windows. Para obtener instrucciones sobre cómo agregar puertos a la lista de excepciones del Firewall de Windows, consulte https://go.microsoft.com/fwlink/?LinkID=196959.

      Importante: Si estableces esto en el valor predeterminado de -1, tendrás que deshabilitar completamente firewall de Windows para recibir mensajes de notificación.
      NotificationStatement Establézcalo en:

      SELECT TID,ACCOUNT,PROCESSED FROM SCOTT.ACCOUNTACTIVITY WHERE PROCESSED = ‘n’

      Nota: Debe especificar el nombre de la tabla junto con el nombre del esquema. Por ejemplo, SCOTT.ACCOUNTACTIVITY.
      NotifyOnListenerStart Establezca esta opción en True.

      Para obtener más información sobre las distintas propiedades de enlace, vea Trabajar con el adaptador de BizTalk para propiedades de enlace de base de datos de Oracle.

      Nota

      Se recomienda configurar el nivel de aislamiento de transacción y el tiempo de espera de la transacción mientras se realizan operaciones entrantes mediante el adaptador de Oracle Database. Para ello, agregue el comportamiento del servicio al configurar el WCF-Custom o WCF-OracleDB puerto de recepción. Para obtener instrucciones sobre cómo agregar el comportamiento del servicio, consulte Configurar el nivel de aislamiento de transacción y el tiempo de espera de la transacción.

    • Defina una WCF-Custom física o WCF-OracleDB puerto de envío para enviar mensajes a la base de datos de Oracle para ejecutar el procedimiento PROCESS_REOCRDS. También debe especificar la acción en el puerto de envío.

    • Defina una ubicación en el disco duro y un puerto de archivo correspondiente donde la orquestación de BizTalk quitará los mensajes de la base de datos de Oracle. Estos serán los mensajes de notificación recibidos de la base de datos de Oracle y los mensajes del procedimiento de PROCESS_RECORDS que ejecute a través del puerto de envío WCF-Custom o WCF-OracleDB.

Iniciar la aplicación

Debe iniciar la aplicación de BizTalk para recibir mensajes de notificación de la base de datos de Oracle y para ejecutar el procedimiento PROCESS_RECORDS. 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 que:

  • El WCF-Custom o WCF-OracleDB puerto de recepción unidireccional, que recibe los mensajes de notificación de la base de datos de Oracle se está ejecutando.

  • El puerto de envío WCF-Custom o WCF-OracleDB para ejecutar el procedimiento de PROCESS_RECORDS se está ejecutando.

  • El puerto de envío FILE, que recibe mensajes de 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

Supongamos que la tabla ACCOUNTACTIVITY ya tiene algunos registros. Además, asegúrese de que el mensaje XML para ejecutar PROCESS_RECORDS procedimiento está disponible en C:\TestLocation\MessageIn. El archivo XML debe ser similar al siguiente:

<PROCESS_RECORDS xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG"/>

Una vez iniciada la orquestación de BizTalk, se realiza el siguiente conjunto de acciones, en la misma secuencia:

  • El adaptador recibe un mensaje de notificación similar al siguiente:

    \<?xml version="1.0" encoding="utf-8" ?\>
    <Notification xmlns="http://Microsoft.LobServices.OracleDB/2007/03/Notification/">
      <Info>ListenerStarted</Info>
      <Source>OracleDBBinding</Source>
      <Type>Startup</Type>
    </Notification>
    

    Este mensaje notifica que se inicia el puerto de recepción para recibir los mensajes de notificación. Tenga en cuenta que el valor del <Info> elemento es "ListnerStarted".

  • El adaptador ejecuta el procedimiento PROCESS_RECORDS. La siguiente respuesta de la base de datos de Oracle es para el procedimiento .

    <?xml version="1.0" encoding="utf-8" ?>
    <PROCESS_RECORDSResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG">
      <TABLE_DATA>
        <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="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>
            <TID>1</TID>
            <ACCOUNT>100001</ACCOUNT>
            <PROCESSED>n</PROCESSED>
          </NewTable>
          <NewTable>
            ......
            ......
          </NewTable>
          ......
          ......
        </NewDataSet>
        </diffgr:diffgram>
      </TABLE_DATA>
    </PROCESS_RECORDSResponse>
    

    Esta es la respuesta de la instrucción SELECT que se ejecuta como parte del procedimiento PROCESS_RECORDS.

  • El procedimiento PROCESS_RECORDS también actualiza las filas para establecer PROCESSED en "y". Por lo tanto, el adaptador recibe otra notificación para la operación de actualización.

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

    Tenga en cuenta que el Info elemento contiene "Update".

  • Después de la segunda notificación, el adaptador vuelve a ejecutar el procedimiento PROCESS_RECORDS. Sin embargo, ahora, dado que no hay registros en los que la columna PROCESSED está establecida en "n", el procedimiento devuelve una respuesta vacía similar a la siguiente.

    <?xml version="1.0" encoding="utf-8" ?>
    <PROCESS_RECORDSResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG">
      <TABLE_DATA>
        <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="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="" />
        </diffgr:diffgram>
      </TABLE_DATA>
    </PROCESS_RECORDSResponse>
    

Prácticas recomendadas

Una vez implementado y configurado el proyecto de BizTalk, puede exportar los valores 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 sea necesario crear los puertos de envío y recibir puertos para la misma orquestación. Para obtener más información sobre el enlace de archivos, consulte Reutilización de enlaces del adaptador de base de datos de Oracle.

Consulte también

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