Freigeben über


Erstellen eines Kanals mit Oracle E-Business Suite

Im WCF-Kanalmodell rufen Sie Vorgänge für die Oracle E-Business Suite auf und empfangen die Ergebnisse, indem Sie SOAP-Nachrichten mit dem Microsoft BizTalk-Adapter für Oracle E-Business Suite über einen WCF-Kanal austauschen.

  • Sie rufen Vorgänge (ausgehende Vorgänge) auf, indem Sie entweder einen IRequestChannel oder einen IOutputChannel verwenden, um Nachrichten an den Adapter zu senden.

  • Sie erhalten Nachrichten für eingehende Vorgänge über einen IInputChannel.

    Die Themen in diesem Abschnitt enthalten Informationen zum Erstellen und Konfigurieren von Kanalformen, die für eingehende und ausgehende Vorgänge verwendet werden.

Erstellen ausgehender Kanäle (Clientkanäle)

Sie können entweder einen IRequestChannel oder einen IOutputChannel verwenden, um Vorgänge für die Oracle E-Business Suite aufzurufen. In beiden Fällen erstellen Sie zunächst eine System.ServiceModel.ChannelFactory mithilfe der entsprechenden Schnittstelle. Anschließend verwenden Sie die Factory, um den Kanal zu erstellen. Nachdem Sie den Kanal erstellt haben, können Sie ihn verwenden, um Vorgänge für den Adapter aufzurufen.

So erstellen und öffnen Sie einen ausgehenden Kanal

  1. Erstellen und initialisieren Sie eine instance von ChannelFactory für die gewünschte Kanalform, indem Sie einen Endpunkt und eine Bindung verwenden. Der Endpunkt gibt einen Oracle E-Business Suite-Verbindungs-URI an, und die Bindung ist ein instance von OracleEBSBinding.

  2. Geben Sie mithilfe der Credentials-Eigenschaft Oracle E-Business Suite-Anmeldeinformationen für die Kanalfactory an.

  3. Öffnen Sie die Kanalfactory.

  4. Rufen Sie eine instance des Kanals ab, indem Sie die CreateChannel-Methode in der Kanalfactory aufrufen.

  5. Öffnen Sie den Kanal.

    Sie können die Bindungs- und Endpunktadresse in Ihrem Code oder aus der Konfiguration angeben.

Angeben der Bindungs- und Endpunktadresse im Code

Im folgenden Codebeispiel wird gezeigt, wie Sie einen IRequestChannel erstellen, indem Sie die Bindungs- und Endpunktadresse im Code angeben. Der Code zum Erstellen eines IOutputChannel ist identisch, mit dem Unterschied, dass Sie eine IOutputChannel-Schnittstelle für die ChannelFactory und den Kanaltyp angeben müssen.

// 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();  

Angeben der Bindungs- und Endpunktadresse in der Konfiguration

Im folgenden Codebeispiel wird gezeigt, wie sie eine Kanalfactory aus einem Clientendpunkt erstellen, der in der Konfiguration angegeben ist.

// 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();  

Die Konfigurationseinstellungen

Der folgende Code zeigt die Konfigurationseinstellungen, die für das vorherige Beispiel verwendet wurden. Der Vertrag für den Clientendpunkt muss "System.ServiceModel.Channels.IRequestChannel" oder "System.ServiceModel.Channels.IOutputChannel" lauten, je nachdem, welche Kanalform Sie erstellen möchten.

<?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>  

Erstellen eingehender Kanäle (Dienst)

Sie konfigurieren den Oracle E-Business-Adapter zum Abfragen der Oracle-Datenbanktabellen und -ansichten, indem Sie Bindungseigenschaften für eine instance von OracleEBSBinding festlegen. Anschließend verwenden Sie diese Bindung, um einen Kanallistener zu erstellen, über den Sie einen IInputChannel-Kanal abrufen können, um eingehende Vorgänge vom Adapter zu empfangen.

So erstellen und öffnen Sie einen IInputChannel zum Empfangen von Nachrichten für eingehende Vorgänge
  1. Erstellen Sie eine instance von OracleEBSBinding.

  2. Legen Sie die bindungseigenschaften fest, die für den eingehenden Vorgang erforderlich sind. Für einen Abrufvorgang müssen Sie beispielsweise mindestens die Eigenschaften InboundOperationType, PolledDataAvailableStatement, PollingAction und PollingInput festlegen, um den Oracle E-Business-Adapter für die Abfrage der Oracle-Datenbank zu konfigurieren.

  3. Erstellen Sie eine Bindungsparameterauflistung mithilfe der BindingParameterCollection-Klasse , und legen Sie die Anmeldeinformationen fest.

  4. Erstellen Sie einen Kanallistener, indem Sie die BuildChannelListener<IInputChannel-Methode> für OracleEBSBinding aufrufen. Sie geben den Oracle-Verbindungs-URI als einen der Parameter für diese Methode an.

  5. Öffnen Sie den Listener.

  6. Rufen Sie einen IInputChannel-Kanal ab, indem Sie die AcceptChannel-Methode im Listener aufrufen.

  7. Öffnen Sie den Kanal.

    Der folgende Code zeigt, wie Sie einen Kanallistener erstellen und einen IInputChannel abrufen, um Nachrichten für eingehende Vorgänge vom Adapter zu empfangen.

Wichtig

Der Oracle E-Business-Adapter unterstützt nur den unidirektionalen Empfang. Daher müssen Sie IInputChannel verwenden, um Nachrichten für eingehende Vorgänge von Oracle E-Business Suite zu empfangen.

// 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();  

Weitere Informationen

Entwickeln von Oracle E-Business Suite-Anwendungen mithilfe des WCF-Kanalmodells