Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 SQL mediante BizTalk Server.
En este tema se muestra cómo configurar el adaptador de SQL para recibir mensajes de notificación de consultas incrementales de una base de datos de SQL Server. Para mostrar las notificaciones incrementales, considere una tabla, Employee, con una columna "Status". Cuando se inserta un nuevo registro en esta tabla, el valor de la columna Estado se establece en 0. Puede configurar el adaptador para recibir notificaciones incrementales haciendo lo siguiente:
Regístrese para recibir notificaciones mediante una instrucción SQL que recupere todos los registros que tienen la columna Estado como 0. Para ello, especifique la instrucción SQL para la propiedad de enlace NotificationStatement.
Para las filas para las que se han recibido mensajes de notificación, actualice la columna Estado a 1.
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 SQL
En la tabla siguiente se resumen las propiedades de enlace del adaptador de SQL que se usan para configurar la recepción de notificaciones de SQL Server. 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 puertos que el Complemento de Servicio para Consumir Adaptadores genera como parte de la generación de metadatos también contiene los valores que especifique para las propiedades de enlace. Más adelante 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-SQL con las propiedades de enlace ya establecidas. Para obtener más información sobre cómo crear un puerto mediante el archivo de enlace, consulte Configuración de un enlace de puerto físico mediante un archivo de enlace de puertos para usar el adaptador de SQL.
| Propiedad de enlace | Descripción |
|---|---|
| InboundOperationType | Especifica la operación de entrada que desea realizar. Para recibir mensajes de notificación, establézcalo en Notificación. |
| NotificationStatement | Especifica la instrucción SQL (SELECT o EXEC <procedimiento almacenado>) que se usa para registrarse para las notificaciones de consulta. El adaptador obtiene un mensaje de notificación de SQL Server solo cuando cambia el conjunto de resultados de la instrucción SQL 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 Leer acerca del adaptador de BizTalk para las propiedades de enlace del adaptador de SQL Server. Para obtener una descripción completa de cómo usar el adaptador de SQL para recibir notificaciones de SQL Server, lea más adelante.
Cómo muestra este tema la recepción de mensajes de notificación
Para demostrar cómo el adaptador de SQL admite la recepción de mensajes de notificación de SQL Server, en este tema se muestra cómo configurar el adaptador para recibir notificaciones de cambios en una tabla Employee. Supongamos que la tabla Employee tiene columnas Employee_ID, Name y Status. Cada vez que se agrega un nuevo empleado, el valor de la columna Estado se establece en 0.
Para demostrar la recepción de notificaciones, haga lo siguiente:
Genere el esquema para la notificación (operación de entrada) y seleccione (operación de salida) en la tabla Employee.
Cree una orquestación que tenga lo siguiente:
Ubicación de recepción para recibir mensajes de notificación. Puede configurar para la notificación especificando la instrucción SELECT como:
SELECT Employee_ID, Name FROM dbo.Employee WHERE Status=0Nota:
Debe especificar específicamente los nombres de columna en la instrucción tal como se muestra en esta instrucción SELECT. Además, siempre debe especificar el nombre de la tabla junto con el nombre del esquema. Por ejemplo:
dbo.Employee.Un puerto de envío para actualizar las filas para las que ya se han enviado notificaciones. Para ello, establezca el valor en la columna Estado en 1. Puede hacerlo como parte de la operación Select enviando el siguiente mensaje al adaptador.
<Select xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee"> <Columns>Employee_ID,Name,Status</Columns> <Query>where Status=0;UPDATE Employee SET Status=1 WHERE Status=0</Query> </Select>En este mensaje, como parte del
<Query>elemento, se especifica la instrucción UPDATE para actualizar la columna Estado. 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 eliminar la sobrecarga de esperar a recibir la respuesta de notificación y luego tener que eliminar manualmente un mensaje de solicitud para actualizar las filas, generará el mensaje de solicitud para actualizar las filas directamente dentro de la 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 SQL Server
Realizar una operación en la base de datos de SQL Server mediante el adaptador de SQL con BizTalk Server implica las tareas de procedimientos descritas en Bloques de creación para desarrollar aplicaciones de BizTalk con el adaptador de SQL. Para configurar el adaptador para recibir mensajes de notificación, estas tareas son:
Cree un proyecto de BizTalk y, a continuación, genere el esquema para la notificación (operación de entrada) y Seleccione (operación de salida) en la tabla Employee. Opcionalmente, puede especificar valores para las propiedades de enlace InboundOperationType y NotificationStatement .
Cree un mensaje en el proyecto de BizTalk para recibir notificaciones de la base de datos de SQL Server.
Cree mensajes en el proyecto de BizTalk para realizar la selección de información en la base de datos de SQL Server y recibir mensajes de respuesta.
Cree una orquestación que haga lo siguiente:
Recibe el mensaje de notificación de SQL Server.
Crea un mensaje para seleccionar y actualizar las filas para las que se recibe la notificación.
Envía este mensaje a SQL Server para actualizar las filas y recibe una respuesta.
Compile e implemente el proyecto de BizTalk.
Configure la aplicación de BizTalk mediante la creación de puertos de envío y recepción físicos.
Nota:
Para las operaciones entrantes, como la recepción de mensajes de notificación, solo debe configurar un puerto de recepción unidireccional WCF-Custom o WCF-SQL. No se admiten puertos de recepción WCF-Custom o WCF-SQL bidireccionales para las operaciones entrantes.
Inicie la aplicación de BizTalk.
En este tema se proporcionan instrucciones para realizar estas tareas.
Ejemplo basado en este tema
Se proporciona un ejemplo, IncrementalNotification, basado en este tema con el paquete de adaptadores de BizTalk. Para obtener más información, vea Ejemplos para el adaptador de SQL.
Generar esquema
Debe generar el esquema para las operaciones Notificación y Selección en la tabla de Empleados. Vea Obtener metadatos para las operaciones de SQL Server en Visual Studio mediante el adaptador de SQL para obtener más información sobre cómo generar el esquema. Realice las siguientes tareas al generar el esquema. Omita el primer paso si no desea especificar las propiedades de enlace en tiempo de diseño.
Especifique un valor para las propiedades de enlace InboundOperationType y NotificationStatement al generar el esquema. Para obtener más información sobre esta propiedad de enlace, vea Leer sobre las propiedades de enlace del adaptador de BizTalk para SQL Server. Para obtener instrucciones sobre cómo especificar propiedades de enlace, consulte Configuración de las propiedades de enlace para el adaptador de SQL.
Seleccione el tipo de contrato como Servicio (operaciones de entrada).
Generar esquema para la operación de notificación .
Seleccione el tipo de contrato como Cliente (operaciones salientes).
Generar esquema para la operación Select en la tabla Employee .
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 SQL Server, una para realizar la operación Seleccionar y otra para recibir la respuesta de la operación Select.
Realice los pasos siguientes para crear mensajes y vincularlos al esquema.
Para crear mensajes y vincular al esquema
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.
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.
En la vista Orquestación, haga clic con el botón derecho en Mensajes y, a continuación, haga clic en Nuevo mensaje.
Haga clic con el botón derecho en el mensaje recién creado y, a continuación, seleccione Ventana Propiedades.
En el panel Propiedades de Message_1, haga lo siguiente:
Usa esto Para Identificador Escriba NotifyReceive.Tipo de mensaje En la lista desplegable, expanda Esquemas y seleccione SQLNotify.Notification, donde SQLNotify es el nombre del proyecto de BizTalk. Notificación es el esquema generado para la operación Notificación. Repita el paso 3 para crear dos mensajes nuevos. En el panel Propiedades del nuevo mensaje, haga lo siguiente:
Establece el identificador en Establecer el tipo de mensaje en Seleccionar SQLNotify.TableOperation_dbo_Employee.Select, donde TableOperation_dbo_Employee es el esquema generado para la operación Select . SeleccionarRespuesta SQLNotify.TableOperation_dbo_Employee.SelectResponse
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 SQL Server 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 en función de 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 crea un mensaje que se usará para actualizar las filas para las que se recibe la notificación. La respuesta de este mensaje también se recibe en la misma ubicación del archivo.
Por lo tanto, la orquestación debe contener lo siguiente:
Puerto de recepción unidireccional para recibir mensajes de notificación.
Puerto de envío bidireccional para enviar mensajes que actualicen filas y recibir una respuesta correspondiente.
Un componente Construir mensaje para construir mensajes y ejecutar la operación de actualización dentro de la orquestación.
Un puerto de envío file para guardar la respuesta de la operación de actualización.
Recibir y enviar formas.
Una orquestación de ejemplo es similar a la siguiente.
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.
| Forma | Tipo de forma | Propiedades |
|---|---|---|
| RecibirNotificación | Recibir | - Establecer nombre en ReceiveNotification - Establecer Activar en True |
| GuardarNotificación | Enviar | - Establecer nombre en SaveNotification |
| EnviarMensajeDeSeleccion | Enviar | - Establecer nombre en SendSelectMessage |
| ReceiveSelectResponse | Recibir | - Establecer Nombre en ReceiveSelectResponse |
| GuardarSeleccionarRespuesta | Enviar | - Establecer Nombre en SaveSelectResponse |
Agregar forma de construcción de mensaje
Puede usar la forma Construir mensaje para generar un mensaje de solicitud dentro de la operación y realizar la acción Seleccionar. Para ello, debe agregar un Elemento Construir Mensaje y, dentro de ese, un Elemento Asignación de Mensaje a su orquestación. En este ejemplo, la forma Asignación de mensajes invoca código que genera un mensaje que se envía a SQL Server para realizar la operación Select. La forma Asignación de Mensajes también establece la acción para que el mensaje se envíe a SQL Server.
Para la forma del mensaje construido, establezca la propiedad Mensaje Construido en Seleccionar.
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\\CreateMessage";
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 la operación Select en la tabla Employee) en la ubicación especificada para la XmlFileLocation variable.
Nota:
Después de compilar el proyecto, SampleMessageCreator.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 SampleMessageCreator.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.
Select = SampleMessageCreator.SampleMessageCreator.XMLMessageCreator();
Select(WCF.Action) = "TableOp/Select/dbo/Employee";
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 |
|---|---|
| SQLNotifyPort | - Establecer identificador en SQLNotifyPort - Configura Tipo como SQLNotifyPortType - Establecer el patrón de comunicación en unidireccional - Establecer la dirección de comunicación para recibir |
| SaveMessagePort | - Establecer identificador en SaveMessagePort - Establecer el 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 Notify. Esta operación se usa para los mensajes de notificación. - Crear una operación Seleccionar. Esta operación se usa para seleccionar mensajes de respuesta. |
| SQLOutboundPort | - Establecer identificador en SQLOutboundPort - Establecer el tipo en SQLOutboundPortType - Establecer el patrón de comunicación en Request-Response - 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 |
|---|---|
| RecibirNotificación | - Establecer Mensaje en NotifyReceive - Establecer Operación en SQLNotifyPort.Notify.Request |
| GuardarNotificación | - Establecer Mensaje en NotifyReceive - Establecer Operación en SaveMessagePort.Notify.Request |
| EnviarMensajeDeSeleccion | - Establecer mensaje en Seleccionar - Establecer Operación en SQLOutboundPort.Select.Request |
| ReceiveSelectResponse | - Establecer mensaje en SelectResponse Configurar Operación como SQLOutboundPort.Select.Response |
| GuardarSeleccionarRespuesta | - Establecer mensaje en SelectResponse - Establecer Operación en SaveMessagePort.Select.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 un puerto de recepción unidireccional físico WCF-Custom o WCF-SQL. Este puerto escucha las notificaciones procedentes de la base de datos de SQL Server. Para obtener información sobre cómo crear puertos, consulte Configuración manual de un enlace de puerto físico al adaptador de SQL. 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 personalizado de WCF o WCF-SQL, con las propiedades de enlace necesarias establecidas, mediante la importación del archivo de enlace creado por el complemento Consumir servicio de adaptador. Para obtener más información, consulte Configuración de un enlace de puerto físico mediante un archivo de enlace de puertos para usar el adaptador de SQL.
Propiedad de enlace Importancia InboundOperationType Establézcalo en Notificación. NotificationStatement Establézcalo en:
SELECT Employee_ID, Name FROM dbo.Employee WHERE Status=0
Nota: Debe especificar específicamente los nombres de columna en la instrucción tal como se muestra en esta instrucción SELECT. Además, siempre debe especificar el nombre de la tabla junto con el nombre del esquema. Por ejemplo:dbo.Employee.NotifyOnListenerStart Establézcalo en True. Para obtener más información sobre las distintas propiedades de enlace, vea Leer sobre las propiedades de enlace del adaptador de BizTalk para SQL Server.
Nota:
Se recomienda configurar el nivel de aislamiento de transacciones y el tiempo de espera de la transacción mientras se realizan operaciones de entrada mediante el adaptador de SQL. Para ello, agregue el comportamiento del servicio al configurar el puerto de recepción WCF-Custom o WCF-SQL. Para obtener instrucciones sobre cómo agregar el comportamiento del servicio, vea Configurar el nivel de aislamiento de transacción y el tiempo de espera de transacción con SQL.
Defina una WCF-Custom física o WCF-SQL puerto de envío para enviar mensajes a la base de datos de SQL Server. 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 SQL Server. Estos serán los mensajes de notificación recibidos de SQL Server y los mensajes de la operación seleccionar y actualizar que realice a través del puerto de envío WCF-Custom o WCF-SQL.
Iniciar la aplicación
Debe iniciar la aplicación de BizTalk para recibir mensajes de notificación de la base de datos de SQL Server y para realizar las operaciones De selección y actualización posteriores. 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 unidireccional WCF-Custom o WCF-SQL, que recibe los mensajes de notificación de la base de datos SQL Server, se está ejecutando.
El puerto de envío WCF-Custom o WCF-SQL para realizar operaciones de selección y actualización en la tabla de Empleado está ejecutándose.
El puerto de envío FILE, que recibe mensajes de "SQL Server", está en funcionamiento.
La orquestación de BizTalk para la operación se está ejecutando.
Ejecución de la operación
Para ejecutar esta operación, debe insertar un registro en la tabla Employee. Supongamos que inserta un registro con los siguientes detalles:
Name = John Smith
Designation = Manager
Salary = 100000
Además, asegúrese de que el mensaje XML para realizar las operaciones Seleccionar y Actualizar está disponible en C:\TestLocation\MessageIn. El archivo XML debe ser similar al siguiente:
<Select xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee">
<Columns>Employee_ID,Name,Status</Columns>
<Query>where Status=0;UPDATE Employee SET Status=1 WHERE Status=0</Query>
</Select>
Una vez insertado el registro, 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://schemas.microsoft.com/Sql/2008/05/Notification/"> <Info>Insert</Info> <Source>Data</Source> <Type>Change</Type> </Notification>Este mensaje notifica que se insertó un registro en la tabla Employee. Tenga en cuenta que el valor del
<Info>elemento es "Insert".El adaptador ejecuta la operación Select. Dado que el XML de la operación Select también incluye una instrucción Update, también se ejecuta la instrucción Update. La siguiente respuesta de SQL Server es para la instrucción Select.
<?xml version="1.0" encoding="utf-8" ?> <SelectResponse xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee"> <SelectResult> <Employee xmlns="http://schemas.microsoft.com/Sql/2008/05/Types/Tables/dbo"> <Employee_ID>10006</Employee_ID> <Name>John</Name> <Status>0</Status> </Employee> </SelectResult> </SelectResponse>Esta respuesta muestra que se insertó un registro en la tabla Employee y el estado de ese registro es 0.
Como parte de la instrucción Select, la instrucción Update también se ejecuta y la columna Estado del nuevo registro cambia a 1. De nuevo, se desencadena otra notificación de SQL Server y el adaptador recibe un mensaje de notificación correspondiente, similar al siguiente:
<?xml version="1.0" encoding="utf-8" ?> <Notification xmlns="http://schemas.microsoft.com/Sql/2008/05/Notification/"> <Info>Update</Info> <Source>Data</Source> <Type>Change</Type> </Notification>Este mensaje notifica que se actualizó un registro en la tabla Employee. Tenga en cuenta que el valor del
<Info>elemento es "Update".Después de la segunda notificación, el adaptador ejecuta la instrucción Select. Sin embargo, dado que no hay registros ahora que tienen Estado como 0, el adaptador obtiene una respuesta vacía similar a la siguiente.
<?xml version="1.0" encoding="utf-8" ?> <SelectResponse xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee"> <SelectResult /> </SelectResponse>
Procedimientos recomendados
Después de implementar y configurar 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 los archivos de vínculos, consulte Reutilizar las vinculaciones del adaptador SQL.
Véase también
Recibir notificaciones de consulta SQL mediante BizTalk Server