Sondear Oracle E-Business Suite mediante procedimientos almacenados
Puede configurar el adaptador de Oracle E-Business para recibir mensajes periódicos de cambio de datos mediante procedimientos almacenados para sondear continuamente la base de datos de Oracle. Puede especificar un procedimiento almacenado como una instrucción de sondeo que el adaptador ejecuta periódicamente para sondear la base de datos de Oracle.
Para habilitar el sondeo, debe especificar ciertas propiedades de enlace en el puerto de recepción WCF-Custom o WCF-OracleEBS. Para obtener más información sobre cómo el adaptador admite el sondeo, consulte Compatibilidad con llamadas entrantes mediante sondeo. Para obtener información sobre la estructura del mensaje SOAP para las operaciones de sondeo, vea Esquemas de mensaje para las operaciones de sondeo.
Configuración de una operación de sondeo con propiedades de enlace del adaptador de E-Business de Oracle
En la tabla siguiente se resumen las propiedades de enlace del adaptador de Oracle E-Business que se usan para configurar el adaptador para recibir mensajes de cambio de datos. Debe especificar estas propiedades de enlace al configurar el WCF-Custom o WCF-OracleEBS puerto de recepción en la consola de administración de BizTalk Server.
Binding (propiedad) | Descripción |
---|---|
InboundOperationType | Especifica si desea realizar una operación de entrada de sondeo o notificación . El valor predeterminado es Sondeo. |
PolledDataAvailableStatement | Especifica la instrucción SQL que ejecuta el adaptador para determinar si hay datos disponibles para el sondeo. Solo si hay un registro disponible, se ejecutará el procedimiento almacenado especificado para la propiedad de enlace PollingInput . |
PollingInterval | Especifica el intervalo, en segundos, en el que el adaptador de Oracle E-Business ejecuta la instrucción especificada para la propiedad de enlace PolledDataAvailableStatement . El valor predeterminado es 30 segundos. El intervalo de sondeo determina el intervalo de tiempo entre sondeos sucesivos. Si la instrucción se ejecuta dentro del intervalo especificado, el adaptador se suspende durante el tiempo restante en el intervalo. |
PollingInput | Especifica la instrucción de sondeo. Para sondear mediante un procedimiento almacenado, debe especificar todo el mensaje de solicitud para esta propiedad de enlace. El mensaje de solicitud debe ser el mismo que se envía al adaptador para invocar el procedimiento almacenado como una operación de salida. El valor predeterminado es null. Debe especificar un valor para la propiedad de enlace PollingInput para habilitar el sondeo. La instrucción de sondeo solo se ejecuta si hay datos disponibles para el sondeo, que viene determinado por la propiedad de enlace PolledDataAvailableStatement . |
PollingAction | Especifica la acción de la operación de sondeo. Puede determinar la acción de sondeo de una operación específica a partir de los metadatos que genere para la operación mediante el complemento Consumir servicio de adaptador. |
PostPollStatement | Especifica un bloque de instrucciones que se ejecuta después de ejecutar la instrucción especificada por la propiedad de enlace PollingInput . |
PollWhileDataFound | Especifica si el adaptador de Oracle E-Business omite el intervalo de sondeo y ejecuta continuamente la instrucción de sondeo, si los datos están disponibles en la tabla que se están sondeando. Si no hay datos disponibles en la tabla, el adaptador revierte para ejecutar la instrucción de sondeo en el intervalo de sondeo especificado. El valor predeterminado es False. |
Para obtener una descripción más completa de estas propiedades, vea Leer sobre las propiedades de enlace del adaptador de BizTalk para Oracle E-Business Suite. Para obtener una descripción completa de cómo usar el adaptador de Oracle E-Business para sondear la base de datos de Oracle, lea las secciones siguientes.
Cómo muestra este tema el sondeo
En este tema, para demostrar cómo el adaptador de Oracle E-Business admite la recepción de mensajes de cambio de datos mediante procedimientos almacenados, cree un proyecto de BizTalk y genere un esquema para el procedimiento almacenado que desea usar para sondear la base de datos de Oracle. En este tema, usamos el procedimiento almacenado GET_ACTIVITYS para sondear la tabla ACCOUNTACTIVITY. Este procedimiento almacenado está disponible con el paquete ACCOUNT_PKG. Puede ejecutar los scripts SQL proporcionados con los ejemplos para crear estos objetos en la base de datos.
Nota
La orquestación de este tema sondea la tabla ACCOUNTACTIVITY, que es una tabla de base de datos creada mediante la ejecución de los scripts proporcionados con los ejemplos. Debe realizar procedimientos similares como se describe en este tema para sondear cualquier otra tabla, incluidas las tablas de interfaz.
Para demostrar una operación de sondeo, hacemos lo siguiente:
Especifique una instrucción SELECT para la propiedad de enlace PolledDataAvailableStatement para determinar dónde se sondea la tabla (ACCOUNTACTIVITY) tiene datos. En este ejemplo, puede establecer esta propiedad de enlace como:
SELECT COUNT (*) FROM ACCOUNTACTIVITY
Esto garantiza que el adaptador ejecuta la instrucción de sondeo solo cuando la tabla ACCOUNTACTIVITY tiene algunos registros.
Ejecute un procedimiento almacenado, GET_ACTIVITYS, proporcionando el mensaje de solicitud como parte de la propiedad de enlace PollingInput . Este procedimiento almacenado recuperará todas las filas de la tabla ACCOUNTACTIVITY y obtendrá un mensaje de respuesta del adaptador.
EJECUTE un bloque PL/SQL como parte de la propiedad de enlace PostPollStatement . Esta instrucción moverá todos los datos de la tabla ACCOUNTACTIVITY a otra tabla de la base de datos. Una vez que esto suceda, la próxima vez que se ejecute PollingInput , no capturará ningún dato y, por lo tanto, el procedimiento almacenado GET_ACTIVITYS devolverá un mensaje de respuesta vacío.
Hasta que se agreguen más datos a la tabla ACCOUNTACTIVITY, seguirá recibiendo mensajes de respuesta vacíos. Por lo tanto, debe volver a rellenar la tabla ACCOUNTACTIVITY con nuevos registros. Para ello, ejecute el script more_activity_data.sql proporcionado con los ejemplos. Después de ejecutar este script, la siguiente operación de sondeo capturará los nuevos registros insertados en la tabla.
Cómo recibir mensajes de cambio de datos de Oracle
Realizar una operación en una base de datos de Oracle mediante el adaptador de E-Business de Oracle con BizTalk Server implica las siguientes tareas de procedimientos descritas en Bloques de creación para crear aplicaciones de Oracle E-Business Suite. Para configurar el adaptador para sondear la base de datos de Oracle mediante un procedimiento almacenado, estas tareas son:
Cree un proyecto de BizTalk y genere el esquema para el procedimiento almacenado que desea usar para el sondeo.
Cree un mensaje en el proyecto de BizTalk para recibir mensajes de la base de datos de Oracle.
Cree una orquestación para recibir mensajes de la base de datos de Oracle y guárdelas en una carpeta.
Compile e implemente el proyecto de BizTalk.
Configure la aplicación de BizTalk mediante la creación de puertos físicos de envío y recepción.
Importante
Para escenarios de sondeo de entrada, siempre debe configurar un puerto de recepción unidireccional. No se admiten puertos de recepción 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
También se proporciona un ejemplo pollingUsingStoredProc basado en este tema con el paquete de adaptadores de BizTalk. Para obtener más información, consulta Ejemplos.
Generación de esquema
Debe generar el esquema para la operación de GET_ACTIVITYS. Realice las siguientes tareas al generar el esquema mediante el complemento consumir servicio adaptador.
Seleccione el tipo de contrato como Servicio (operación de entrada).
Generar esquema para el procedimiento GET_ACTIVITYS .
Para obtener más información sobre cómo generar esquema, vea Examinar, Buscar y obtener metadatos para operaciones de E-Business de Oracle.
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 un mensaje para recibir mensajes de Oracle.
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:
Use Para hacer esto Identificador Escriba Receive. Tipo de mensaje En la lista desplegable, expanda Esquemas y seleccione Polling.OracleEBSBindingSchema, donde Polling es el nombre del proyecto de BizTalk. OracleEBSBindingSchema es el esquema de respuesta generado para el procedimiento almacenado GET_ACTIVITYS .
Importante: Dado que el sondeo es una operación unidireccional, el esquema generado por el adaptador no contiene un nodo de respuesta y, por tanto, solo hay un nodo raíz en el esquema. Si usa estos esquemas para un tipo de mensaje, debe identificar el esquema por el nombre de archivo del esquema generado.
Por ejemplo, si crea un esquema para una operación bidireccional, los nodos del archivo de esquema con un nombreOracleEBSBindingSchema
pueden tener un aspecto similar a "Request" y "Response". Si desea crear un mensaje en la orquestación que se asigna al esquema de solicitud, puede identificar el esquema en la lista buscandoOracleEBSBindingSchema.Request
. Sin embargo, en el caso de la operación de sondeo, porque el único nodo es "Poll", no es fácil identificar el esquema al que desea asignar porque los esquemas con nodos únicos no aparecen como <schemafilename>.<rootnodename>. En su lugar, estos esquemas se enumeran solo por el nombre de archivo. En tal caso, la única manera de identificar el esquema es mediante el nombre de archivo del esquema, por ejemplo, OracleEBSBindingSchema.El complemento Consumir servicio de adaptador genera un esquema para las operaciones entrantes y salientes para el procedimiento almacenado GET_ACTIVITYS. Debe usar el esquema para la operación de entrada para:
Asigne el mensaje creado como parte de la orquestación.
Para recuperar la acción, debe especificar para la propiedad de enlace PollingAction en tiempo de ejecución.
Debe usar el esquema de la operación de salida para obtener el mensaje de solicitud que debe especificar como parte de la propiedad de enlace PollingInput .
Configuración de la orquestación
Debe crear una orquestación de BizTalk para usar BizTalk Server para recibir mensajes de cambio de datos basados en sondeos de Oracle. En esta orquestación, el adaptador recibe la respuesta ejecutando el procedimiento almacenado para el que especificó el mensaje de solicitud como parte de la propiedad de enlace PollingInput . El mensaje de respuesta del procedimiento almacenado se guarda en una ubicación FILE. Una orquestación típica para el sondeo de la base de datos de Oracle contendrá:
Recibir y enviar formas para recibir mensajes de Oracle y enviarlos a un puerto FILE, respectivamente.
Un puerto de recepción unidireccional para recibir mensajes de la base de datos de Oracle.
Importante
Para escenarios de sondeo entrante, siempre debe configurar un puerto de recepción unidireccional. No se admiten puertos de recepción bidireccionales para las operaciones entrantes.
Un puerto de envío unidireccional para enviar respuestas de sondeo desde la base de datos de Oracle.
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 que se muestran en la orquestación mencionada.
Forma | Tipo de forma | Propiedades |
---|---|---|
ReceiveMessage | Recepción | - Establecer el nombre en ReceiveMessage - Establecer Activar enTrue |
SaveMessage | Envío | - Establecer el nombre en SaveMessage |
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 |
---|---|
OracleReceivePort | - Establecer identificadoren OracleReceivePort - Establecer tipoen OracleReceivePortType - 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 |
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 |
---|---|
ReceiveMessage | - Establecer el mensaje en recibir - Establecer operación en OracleReceivePort.Polling.Request |
SaveMessage | - Establecer el mensaje en recibir - Establecer operación en SaveMessagePort.Polling.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 ubicación en el disco duro y un puerto FILE correspondiente donde la orquestación de BizTalk quitará los mensajes de Oracle. Estos mensajes serán en respuesta a la instrucción de sondeo que especifique para el puerto de recepción.
Defina una WCF-Custom física o WCF-OracleEBS puerto de recepción unidireccional. Este puerto sondea 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 E-Business de Oracle. Asegúrese de especificar las siguientes propiedades de enlace para el puerto de recepción.
Binding (propiedad) Value InboundOperationType Establézcalo en Sondeo. PolledDataAvailableStatement En este ejemplo, establezca esta propiedad de enlace en:
SELECT COUNT (*) FROM ACCOUNTACTIVITY
Esto garantiza que el adaptador ejecute la instrucción de sondeo solo cuando la tabla ACCOUNTACTIVITY tenga algunos registros.PollingAction Recupere la acción de sondeo del esquema generado para el mensaje entrante para el procedimiento GET_ACTIVITYS. En este ejemplo, establezca esta propiedad de enlace en PollingPackageApis/APPS/ACCOUNT_PKG/GET_ACTIVITYS. PollingInput Para esta propiedad de enlace, especifique el mensaje de solicitud para invocar el procedimiento almacenado GET_ACTIVITYS. Puede obtener el mensaje de solicitud del esquema para la operación de salida generada por el complemento Consumir servicio adaptador. Debe proporcionar todo el mensaje XML como entrada para esta propiedad de enlace. En este ejemplo, establezca esta propiedad de enlace en:
<GET_ACTIVITYS xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/PackageApis/APPS/ACCOUNT_PKG"> <INRECS>OPEN ? FOR SELECT * FROM ACCOUNTACTIVITY</INRECS> </GET_ACTIVITYS>
El procedimiento almacenado GET_ACTIVITYS toma un CURSOR REF de entrada como parámetro.PostPollStatement Especifique la instrucción posterior al sondeo para mover todos los datos de la tabla ACCOUNTACTIVITY a otra tabla. En este ejemplo, establezca esta propiedad de enlace en:
BEGIN ACCOUNT_PKG.PROCESS_ACTIVITY(); END;
Para obtener más información sobre las distintas propiedades de enlace, vea Leer sobre las propiedades de enlace del adaptador de BizTalk para Oracle E-Business Suite.
Importante
Si va a sondear una tabla de interfaz, debe establecer el contexto de la aplicación especificando las propiedades de enlace necesarias. Para obtener más información sobre cómo establecer el contexto de la aplicación, consulte Establecer contexto de aplicación.
Nota
Se recomienda configurar el nivel de aislamiento de transacción y el tiempo de espera de la transacción al realizar operaciones entrantes mediante el adaptador de Oracle E-Business. Para ello, agregue el comportamiento del servicio al configurar el WCF-Custom o WCF-OracleEBS 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 transacción con Oracle E-Business Suite.
Iniciar la aplicación
Debe iniciar la aplicación de BizTalk para sondear 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 WCF-Custom o WCF-OracleEBS puerto de recepción unidireccional, que sondea Oracle mediante el procedimiento almacenado especificado para la propiedad de enlace PollingInput , 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
Después de ejecutar la aplicación, se realiza el siguiente conjunto de acciones, en la misma secuencia:
El adaptador ejecuta polledDataAvailableStatement , que devuelve un valor positivo que indica el adaptador para ejecutar la instrucción especificada para la propiedad de enlace PollingInput .
El adaptador ejecuta el GET_ACTIVITYS procedimiento almacenado especificado para la propiedad de enlace PollingInput y devuelve todas las filas de la tabla ACCOUNTACTIVITY. La respuesta de la base de datos de Oracle es similar a la siguiente:
<?xml version="1.0" encoding="utf-8" ?> <GET_ACTIVITYS xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/PollingPackageApis/APPS/ACCOUNT_PKG"> <OUTRECS> <OUTRECSRecord xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/ReferencedRecordTypes/APPS/ACCOUNT_PKG/GET_ACTIVITYS/APPS/GET_ACTIVITYS"> <TID>1</TID> <ACCOUNT>100001</ACCOUNT> <AMOUNT>500</AMOUNT> <DESCRIPTION /> <TRANSDATE>2008-06-21T15:52:19</TRANSDATE> <PROCESSED>n</PROCESSED> </OUTRECSRecord> <OUTRECSRecord xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/ReferencedRecordTypes/APPS/ACCOUNT_PKG/GET_ACTIVITYS/APPS/GET_ACTIVITYS"> ...... ...... </OUTRECSRecord> ...... ...... </OUTRECS> </GET_ACTIVITYS>
El adaptador ejecuta la instrucción posterior al sondeo, que mueve todos los datos de la tabla ACCOUNTACTIVITY a otra tabla.
Después del intervalo de sondeo, el adaptador vuelve a ejecutar PolledDataAvailableStatement. Dado que la tabla ACCOUNTACTIVITY no tiene registros ahora, PolledDataAvailableStatement no devuelve un valor positivo y, por tanto, el adaptador no ejecuta la instrucción especificada para la propiedad de enlace PollingInput . Como resultado, el cliente del adaptador no recibe ningún mensaje de sondeo.
El cliente del adaptador no obtendrá más mensajes de sondeo hasta que algunos registros se inserte explícitamente en la tabla ACCOUNTACTIVITY. Para insertar más registros, puede ejecutar el script more_activity_data.sql proporcionado con los ejemplos. Después de ejecutar este script, la próxima vez que se ejecute PolledDataAvailableStatement , devuelve un valor positivo. Como resultado, el adaptador ejecuta la instrucción de sondeo y los clientes del adaptador reciben de nuevo un mensaje de sondeo.
Nota
El adaptador de Oracle E-Business seguirá sondeando hasta que deshabilite explícitamente el puerto de recepción de la consola de administración de BizTalk Server.
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 y recibir puertos para la misma orquestación. Para obtener más información sobre los archivos de enlace, consulte Reutilización de enlaces de adaptador de SQL.