Recepción de mensajes modificados por datos basados en sondeos de Oracle E-Business Suite
El adaptador de Microsoft BizTalk para Oracle E-Business Suite admite la recepción de mensajes modificados por datos basados en sondeo mediante el sondeo de las tablas de interfaz, las vistas de interfaz, las tablas y las vistas. El adaptador entrega los mensajes a la aplicación mediante:
Ejecutar una consulta SELECT de SQL para determinar si los datos están disponibles para el sondeo. Puede configurar el adaptador para ejecutar la consulta SELECT de SQL de forma periódica o continua.
Ejecutar una consulta SELECT de SQL en una tabla o vista de Oracle o ejecutar procedimientos almacenados, funciones o procedimientos empaquetados y funciones.
Ejecutar un bloque de código PL/SQL posterior al sondeo opcional en Oracle E-Business Suite. Este bloque de código se usa a menudo para actualizar un campo en los registros consultados en el destino o para mover los registros consultados a otra tabla o vista.
Devolver la consulta da como resultado un conjunto de resultados invocando la operación POLL o los procedimientos almacenados, funciones o procedimientos empaquetados y funciones que se exponen como operaciones de sondeo.
El adaptador ejecuta todas estas operaciones dentro de una transacción de Oracle.
¿Cómo se configura el adaptador de oracle E-Business para recibir mensajes modificados mediante propiedades de enlace?
Configure el adaptador de Oracle E-Business para recibir mensajes modificados por datos estableciendo algunas o todas las siguientes propiedades de enlace.
Binding (propiedad) | Value | Valor predeterminado | Obligatorio/opcional |
---|---|---|---|
InboundOperationType | Asegúrese de que el valor está establecido en Sondeo. | Sondeo | Necesario. Si no se establece explícitamente, se aplicará el valor predeterminado. |
PolledDataAvailableStatement | Especifique la instrucción SELECT ejecutada para determinar si hay datos disponibles para sondear una tabla específica. La instrucción especificada debe devolver un conjunto de resultados que consta de filas y columnas. El valor de la primera celda del conjunto de resultados indica si el adaptador ejecuta el valor especificado para la propiedad de enlace PollingInput . Si la primera celda del resultado contiene un valor positivo, el adaptador ejecuta la instrucción de sondeo. Por ejemplo, una instrucción válida para esta propiedad de enlace será:Select * from <table_name> Nota: No debe especificar procedimientos almacenados para esta propiedad de enlace. Además, esta instrucción no debe modificar los datos de Oracle E-Business Suite ni de la base de datos de Oracle subyacente. |
null | Necesario. |
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. | null | Opcional para las operaciones de sondeo en tablas y vistas mediante la instrucción SELECT. |
PollingInput | Especifique cualquiera de las siguientes opciones: - Instrucción SELECT de SQL que se debe ejecutar en Oracle E-Business Suite. Esta instrucción debe incluir una cláusula FOR UPDATE. Para obtener información sobre la cláusula FOR UPDATE, vea Especificar una cláusula FOR UPDATE en la instrucción polling más adelante en este tema. - Solicitar un mensaje para un procedimiento almacenado, función o procedimiento o función dentro de un paquete que desea sondear. |
null | Necesario. Al establecer PollingInput en un valor distinto de NULL, se habilita el sondeo. |
PollingInterval | Establézcalo en el intervalo, en segundos, en el que desea que el adaptador consulte Oracle E-Business Suite. Esta propiedad especifica el intervalo de sondeo y el tiempo de espera de la transacción de sondeo. El valor debe ser mayor que la cantidad de tiempo que se tarda en ejecutar la instrucción de consulta y posterior al sondeo (si se especifica una) en Oracle E-Business Suite más la cantidad de tiempo que tarda el cliente en procesar los datos de consulta y devolver el mensaje de respuesta de sondeo. | 30 | Necesario. Si no se establece explícitamente, se aplicará el valor predeterminado. |
PollWhileDataFound | Especifica si el adaptador de Oracle E-Business omite el intervalo de sondeo y sondea continuamente Oracle E-Business Suite, 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 SQL en el intervalo de sondeo especificado. | False | Necesario. Si no se establece explícitamente, se aplicará el valor predeterminado. |
PostPollStatement | Establézcalo en un bloque de código PL/SQL opcional ejecutado por el adaptador después de realizar la consulta, pero antes de que se devuelvan los datos de consulta al cliente. | null | Opcional. Si no se especifica ningún valor, no se ejecuta una instrucción post poll. |
Nota
Si usa el modelo de servicio WCF o el modelo de canal WCF, también debe establecer la propiedad de enlace AcceptCredentialsInUri .
Especificar una cláusula FOR UPDATE en la instrucción polling
Si usa una instrucción SELECT como instrucción de sondeo y ejecuta una instrucción posterior al sondeo que afecta a las filas especificadas en la instrucción SELECT, debe usar la cláusula FOR UPDATE en la instrucción polling. Especificar una cláusula FOR UPDATE garantiza que los registros seleccionados por la instrucción de sondeo estén bloqueados durante la transacción y que la instrucción posterior al sondeo pueda realizar las actualizaciones necesarias en ellas.
Precaución
Puede tener escenarios en los que, en el período de tiempo entre las instrucciones de sondeo y posteriores al sondeo, se agregan más registros a la tabla que cumplen la condición de la instrucción posterior al sondeo. En tales situaciones, la instrucción posterior al sondeo actualizaría todos los registros que cumplen la condición y no solo los registros seleccionados como parte de la instrucción de sondeo.
Si se especifica una instrucción posterior al sondeo y la instrucción de sondeo no contiene una cláusula FOR UPDATE, experimentará una de las dos condiciones siguientes:
Si TransactionIsolationLevel está establecido en ReadCommitted, la consulta posterior al sondeo no actualizará las filas seleccionadas.
Si TransactionIsolationLevel se establece en Serializable, se producirá la siguiente excepción del sistema de destino (Microsoft.ServiceModel.Channels.Common.TargetSystemException) cuando se ejecute la instrucción posterior al sondeo: "ORA-08177 no puede serializar el acceso para esta transacción". En tal caso, debe establecer la propiedad de enlace PollingRetryCount para definir el número de veces que desea que el adaptador vuelva a intentar la misma transacción.
Para obtener instrucciones sobre cómo establecer el nivel de aislamiento de transacción, consulte Configuración del nivel de aislamiento de transacción y el tiempo de espera de transacción con Oracle E-Business Suite.
Las instrucciones de sondeo y posteriores al sondeo se ejecutan en una transacción si los clientes del adaptador han configurado para usar transacciones y el valor de la propiedad de enlace UseAmbientTransaction se establece en True en el adaptador.
Un ejemplo de una consulta de sondeo con la opción FOR UPDATE es:
SELECT * from EMP WHERE FLAG = 'Y' FOR UPDATE
Especificar una cláusula NOWAIT en la instrucción polling
Es posible que tenga escenarios en los que los subprocesos simultáneos accedan a la tabla que se están sondeando, lo que provoca demasiadas contenciones en la tabla. Esto puede hacer que la consulta de sondeo se bloquee para obtener un bloqueo en las filas de la tabla. Si usa una instrucción SELECT como instrucción de sondeo, puede especificar una palabra clave NOWAIT junto con la palabra clave FOR UPDATE en la instrucción SELECT. Esto hará que la ejecución de la consulta de sondeo dentro del adaptador devuelva inmediatamente si hay bloqueos en las filas que la consulta de sondeo está intentando seleccionar. Normalmente, Oracle produce una excepción en estas condiciones. De nuevo, los clientes de adaptador pueden usar la propiedad de enlace PollingInterval para especificar el intervalo de tiempo después del cual los clientes del adaptador deben reintentar para sondear los datos.
Un ejemplo de una consulta de sondeo con la opción NOWAIT es:
SELECT * from EMP WHERE FLAG = 'Y' FOR UPDATE NOWAIT
Especificar una cláusula SKIP LOCKED en la instrucción polling
Es posible que tenga escenarios en los que debido a subprocesos simultáneos que acceden a la tabla que se están sondeando, algunas filas del conjunto de resultados de la cláusula WHERE especificada en la consulta de sondeo están bloqueadas. Por ejemplo, la consulta de sondeo devuelve 6 filas de una tabla; 4 de estas 6 filas ya están bloqueadas debido a alguna otra transacción. En este caso, es posible que desee especificar una palabra clave SKIP LOCKED junto con la palabra clave FOR UPDATE que indica a la base de datos que intente bloquear las filas especificadas por la cláusula WHERE y omitir las filas que se encuentren que ya están bloqueadas. Las filas desbloqueadas de la cláusula WHERE se bloquean durante la transacción y la instrucción posterior al sondeo puede realizar las actualizaciones necesarias en ellas para que estas filas no se vuelvan a sondear. Esto garantiza que no tiene que esperar para recibir los mensajes de sondeo hasta que se desbloquean todas las filas especificadas por la cláusula WHERE.
La palabra clave SKIP LOCKED es útil en un escenario en el que tiene clientes de adaptador en varios equipos que sondean la misma tabla en una base de datos. Puede equilibrar la carga entre los clientes del adaptador mediante la configuración de la operación de sondeo de forma que reciba mensajes de cambio de datos basados en sondeo para las filas especificadas por la cláusula WHERE que se desbloquean en ese momento y, a continuación, actualice la fila para asegurarse de que si un cliente de adaptador recibe un mensaje de cambio de datos basado en sondeo, los demás clientes no reciben el mismo mensaje.
Un ejemplo de una consulta de sondeo con la opción SKIP LOCKED es:
SELECT * from EMP WHERE FLAG = 'Y' FOR UPDATE SKIP LOCKED
Compatibilidad con la entrega ordenada (FIFO)
En un entorno de producción, el sondeo se puede usar para supervisar los cambios de datos en Oracle E-Business Suite. El cliente del adaptador recibe estos mensajes modificados por datos mediante el adaptador de Oracle E-Business. En función de los escenarios empresariales, puede ser fundamental que el cliente del adaptador reciba los mensajes modificados por los datos en el orden correcto.
El adaptador de Oracle E-Business admite la entrega ordenada o la primera en salir (FIFO) para mantener el orden en el que se reciben mensajes de Oracle E-Business Suite. Estas son algunas consideraciones relacionadas con la compatibilidad con escenarios de entrada fiFO para el adaptador de E-Business de Oracle.
Si una orquestación consume el mensaje, la orquestación debe tener establecida la entrega ordenada para los mensajes procedentes del puerto de recepción del adaptador de E-Business de Oracle.
Si un puerto de envío (en un enrutamiento basado en contenido) consume el mensaje, el puerto de envío debe haber establecido la entrega ordenada para los mensajes procedentes del puerto de recepción del adaptador de Oracle E-Business.
El adaptador de WCF-Custom o WCF-OracleEBS tiene una propiedad Suspend request message on failure (Suspender solicitud en caso de error ) que especifica si se debe suspender el mensaje de solicitud que produce un error en el procesamiento entrante. Esta propiedad se puede establecer en la pestaña Mensajes del WCF-Custom o WCF-OracleEBS puerto de recepción en la sección Control de errores . En la tabla siguiente se enumeran los escenarios que describen cómo se procesan los mensajes entrantes en función de si esta propiedad está establecida y el estado del suscriptor del mensaje (orquestación o puerto).
propiedad de puerto de WCF-Custom | Suscriptor en estado no registrado | Suscriptor en estado inscrito pero detenido |
---|---|---|
Suspender mensaje de solicitud en la propiedad NOT set | - El informe de errores de enrutamiento se genera como un mensaje suspendido (mensaje no reanudable) - El mensaje real no está suspendido - La consulta posterior al sondeo no se ejecuta a medida que se anula la transacción. Por lo tanto, el sondeo se repite y recupera las filas de nuevo. - Errores notificados en el registro de eventos para describir lo que ha ocurrido. |
- No se considera un "Error". No hay ningún mensaje de error en el registro de eventos. - El mensaje real se coloca en la cola suspendida (reanudable). - Cuando se inicia el puerto de suscripción o la orquestación, los mensajes se reanudan automáticamente. Si la entrega ordenada se establece en el suscriptor, se respetará. - Los mensajes también se pueden reanudar manualmente. |
Suspender el mensaje de solicitud en la propiedad de error is set | - El informe de errores de enrutamiento se genera como un mensaje suspendido (mensaje no reanudable) - El mensaje real también está suspendido - La consulta posterior al sondeo no se ejecuta a medida que se anula la transacción. Por lo tanto, el sondeo se repite y recupera las filas de nuevo. - Errores notificados en el registro de eventos para describir lo que ha ocurrido. |
- No se considera un "Error". No hay ningún mensaje de error en el registro de eventos. - El mensaje real se coloca en la cola suspendida (reanudable). - Cuando se inicia el puerto de suscripción o la orquestación, los mensajes se reanudan automáticamente. Si la entrega ordenada se establece en el suscriptor, se respetará. - Los mensajes también se pueden reanudar manualmente. |
Consulte también
Actividades de desarrollo
Sondear Oracle E-Business Suite con BizTalk Server