Compartir vía


Creación de un canal mediante Oracle E-Business Suite

En el modelo de canal WCF, invoca operaciones en Oracle E-Business Suite y recibe los resultados intercambiando mensajes SOAP con el adaptador de Microsoft BizTalk para Oracle E-Business Suite a través de un canal WCF.

  • Se invocan operaciones (operaciones de salida) mediante IRequestChannel o IOutputChannel para enviar mensajes al adaptador.

  • Recibirá mensajes para las operaciones entrantes a través de IInputChannel.

    Los temas de esta sección proporcionan información sobre cómo crear y configurar formas de canal que se usan para las operaciones entrantes y salientes.

Crear canales salientes (cliente)

Puede usar IRequestChannel o IOutputChannel para invocar operaciones en Oracle E-Business Suite. En cualquier caso, primero se crea una clase System.ServiceModel.ChannelFactory mediante la interfaz adecuada. A continuación, use el generador para crear el canal. Después de crear el canal, puede usarlo para invocar operaciones en el adaptador.

Para crear y abrir un canal de salida

  1. Cree e inicialice una instancia de ChannelFactory para la forma de canal deseada mediante un punto de conexión y un enlace. El punto de conexión especifica un URI de conexión de Oracle E-Business Suite y el enlace es una instancia de OracleEBSBinding.

  2. Proporcione las credenciales de Oracle E-Business Suite para el generador de canales mediante la propiedad Credentials .

  3. Abra el generador de canales.

  4. Obtenga una instancia del canal invocando el método CreateChannel en el generador de canales.

  5. Abra el canal.

    Puede especificar la dirección de enlace y punto de conexión en el código o desde la configuración.

Especificar el enlace y la dirección del punto de conexión en el código

En el ejemplo de código siguiente se muestra cómo crear un IRequestChannel especificando el enlace y la dirección del punto de conexión en el código. El código para crear un IOutputChannel es el mismo, excepto que debe especificar una interfaz IOutputChannel para el tipo de canal y ChannelFactory .

// Create binding -- set binding properties before you open the factory.  
OracleEBSBinding binding = new OracleEBSBinding();  
  
// Create address  
EndpointAddress address = new EndpointAddress("oracleebs://<oracleebs_instance_name>/");  
  
// Create channel factory from binding and address.  
ChannelFactory<IRequestChannel> factory =   
    new ChannelFactory<IRequestChannel>(binding, address);  
  
// Specify credentials.   
factory.Credentials.UserName.UserName = "myuser";  
factory.Credentials.UserName.Password = "mypassword";  
  
// Open factory  
factory.Open();  
  
// Get channel and open it.  
IRequestChannel channel = factory.CreateChannel();  
channel.Open();  

Especificar el enlace y la dirección del punto de conexión en la configuración

En el ejemplo de código siguiente se muestra cómo crear un generador de canales a partir de un punto de conexión de cliente especificado en la configuración.

// Create channel factory from configuration.  
ChannelFactory<IRequestChannel> factory =  
new ChannelFactory<IRequestChannel>("MyRequestChannel");  
  
// Specify credentials.  
factory.Credentials.UserName.UserName = "myuser";  
factory.Credentials.UserName.Password = "mypassword";  
  
// Open the factory.  
factory.Open();  
  
// Get a channel and open it.  
IRequestChannel channel = factory.CreateChannel();  
channel.Open();  

Opciones de configuración

En el código siguiente se muestran las opciones de configuración usadas para el ejemplo anterior. El contrato para el punto de conexión de cliente debe ser "System.ServiceModel.Channels.IRequestChannel" o "System.ServiceModel.Channels.IOutputChannel" según el tipo de forma de canal que desee crear.

<?xml version="1.0" encoding="utf-8"?>  
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">  
    <system.serviceModel>  
        <bindings>  
            <oracleEBSBinding>  
                <binding openTimeout="00:05:00" name="OracleEBSBinding" closeTimeout="00:01:00"  
                    receiveTimeout="00:10:00" sendTimeout="00:01:00" clientCredentialType="Database"  
                    inboundOperationType="Polling" metadataPooling="true" statementCachePurge="false"  
                    statementCacheSize="10" pollWhileDataFound="false" pollingInterval="30"  
                    useOracleConnectionPool="true" minPoolSize="1" maxPoolSize="100"  
                    incrPoolSize="5" decrPoolSize="1" connectionLifetime="0" acceptCredentialsInUri="false"  
                    useAmbientTransaction="true" notifyOnListenerStart="true"  
                    notificationPort="-1" dataFetchSize="65536" longDatatypeColumnSize="0"  
                    skipNilNodes="true" maxOutputAssociativeArrayElements="32"  
                    enableSafeTyping="false" insertBatchSize="20" useSchemaInNameSpace="true"  
                    enableBizTalkCompatibilityMode="true" enablePerformanceCounters="false">  
                    <mlsSettings language="" dateFormat="" dateLanguage="" numericCharacters=""  
                        sort="" territory="" comparison="" currency="" dualCurrency=""  
                        iSOCurrency="" calendar="" lengthSemantics="" nCharConversionException="true"  
                        timeStampFormat="" timeStampTZFormat="" timeZone="" />  
                </binding>  
            </oracleEBSBinding>  
        </bindings>  
        <client>  
            <endpoint address="oracleebs://oracle_ebs_instance/" binding="oracleEBSBinding"  
                bindingConfiguration="OracleEBSBinding" contract="System.ServiceModel.Channels.IRequestChannel"  
                name="MyRequestChannel" />  
        </client>  
    </system.serviceModel>  
</configuration>  

Crear canales entrantes (servicio)

Configure el adaptador de Oracle E-Business para sondear las tablas y vistas de base de datos de Oracle estableciendo propiedades de enlace en una instancia de OracleEBSBinding. Después, use este enlace para crear un agente de escucha de canal desde el que puede obtener un canal IInputChannel para recibir operaciones entrantes del adaptador.

Para crear y abrir un IInputChannel para recibir mensajes para las operaciones entrantes
  1. Cree una instancia de OracleEBSBinding.

  2. Establezca las propiedades de enlace necesarias para la operación de entrada. Por ejemplo, para una operación de sondeo, como mínimo debe establecer las propiedades de enlace InboundOperationType, PolledDataAvailableStatement, PollingAction y PollingInput para configurar el adaptador de Oracle E-Business para sondear la base de datos de Oracle.

  3. Cree una colección de parámetros de enlace mediante la clase BindingParameterCollection y establezca las credenciales.

  4. Cree un agente de escucha de canal invocando el método IInputChannel> BuildChannelListener< en OracleEBSBinding. Especifique el URI de conexión de Oracle como uno de los parámetros de este método.

  5. Abra el agente de escucha.

  6. Obtenga un canal IInputChannel invocando el método AcceptChannel en el agente de escucha.

  7. Abra el canal.

    En el código siguiente se muestra cómo crear un agente de escucha de canal y obtener un IInputChannel para recibir mensajes para las operaciones entrantes del adaptador.

Importante

El adaptador de Oracle E-Business solo admite la recepción unidireccional. Por lo tanto, debe usar IInputChannel para recibir mensajes para las operaciones entrantes de Oracle E-Business Suite.

// Create a binding: specify the InboundOperationType, the PolledDataAvailableStatement, the PollingAction, and   
// the PollingInput binding properties.  
OracleEBSBinding binding = new OracleEBSBinding();  
binding.InboundOperationType = InboundOperation.Polling;  
binding.PolledDataAvailableStatement = "SELECT COUNT (*) FROM MS_SAMPLE_EMPLOYEE";  
binding.PollingAction = "InterfaceTables/Poll/FND/APPS/MS_SAMPLE_EMPLOYEE";  
binding.PollingInput = "SELECT * FROM MS_SAMPLE_EMPLOYEE FOR UPDATE";  
  
// Create a binding parameter collection and set the credentials  
ClientCredentials credentials = new ClientCredentials();  
credentials.UserName.UserName = "myuser";  
credentials.UserName.Password = "mypassword";  
  
BindingParameterCollection bindingParams = new BindingParameterCollection();  
bindingParams.Add(credentials);  
  
// Get a listener from the binding and open it.  
Uri connectionUri = new Uri("oracleebs://oracle_ebs_instance/");  
IChannelListener<IInputChannel> listener = binding.BuildChannelListener<IInputChannel>(connectionUri, bindingParams);  
listener.Open();  
  
// Get a channel from the listener and open it.  
IInputChannel channel = listener.AcceptChannel();  
channel.Open();  

Consulte también

Desarrollo de aplicaciones de Oracle E-Business Suite mediante el modelo de canal WCF