Creare un canale con Oracle E-Business Suite
Nel modello di canale WCF richiamare le operazioni in Oracle E-Business Suite e ricevere i risultati scambiando messaggi SOAP con l'adapter Microsoft BizTalk per Oracle E-Business Suite tramite un canale WCF.
È possibile richiamare le operazioni (operazioni in uscita) usando IRequestChannel o IOutputChannel per inviare messaggi all'adapter.
Si ricevono messaggi per le operazioni in ingresso su un IInputChannel.
Negli argomenti di questa sezione vengono fornite informazioni su come creare e configurare forme di canale usate per le operazioni in ingresso e in uscita.
Creazione di canali in uscita (client)
È possibile usare IRequestChannel o IOutputChannel per richiamare le operazioni in Oracle E-Business Suite. In entrambi i casi, creare prima di tutto system.ServiceModel.ChannelFactory usando l'interfaccia appropriata. Usare quindi la factory per creare il canale. Dopo aver creato il canale, è possibile usarlo per richiamare le operazioni sull'adapter.
Per creare e aprire un canale in uscita
Creare e inizializzare un'istanza di ChannelFactory per la forma del canale desiderata usando un endpoint e un'associazione. L'endpoint specifica un URI di connessione Oracle E-Business Suite e l'associazione è un'istanza di OracleEBSBinding.
Specificare le credenziali di Oracle E-Business Suite per la channel factory usando la proprietà Credentials .
Aprire la channel factory.
Ottenere un'istanza del canale richiamando il metodo CreateChannel nella channel factory.
Aprire il canale.
È possibile specificare l'associazione e l'indirizzo dell'endpoint nel codice o dalla configurazione.
Specifica dell'associazione e dell'indirizzo dell'endpoint nel codice
Nell'esempio di codice seguente viene illustrato come creare un IRequestChannel specificando l'associazione e l'indirizzo dell'endpoint nel codice. Il codice per creare un IOutputChannel è lo stesso, ad eccezione del fatto che è necessario specificare un'interfaccia IOutputChannel per ChannelFactory e il tipo di canale.
// 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();
Specifica dell'associazione e dell'indirizzo dell'endpoint nella configurazione
Nell'esempio di codice seguente viene illustrato come creare una channel factory da un endpoint client specificato nella configurazione.
// 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();
Impostazioni di configurazione
Il codice seguente illustra le impostazioni di configurazione usate per l'esempio precedente. Il contratto per l'endpoint client deve essere "System.ServiceModel.Channels.IRequestChannel" o "System.ServiceModel.Channels.IOutputChannel" a seconda del tipo di forma del canale che si desidera creare.
<?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>
Creazione di canali in ingresso (servizio)
Configurare l'adattatore Oracle E-Business per eseguire il polling delle tabelle e delle viste del database Oracle impostando le proprietà di associazione in un'istanza di OracleEBSBinding. Usare quindi questa associazione per creare un listener del canale da cui è possibile ottenere un canale IInputChannel per ricevere le operazioni in ingresso dall'adapter.
Per creare e aprire un IInputChannel per ricevere messaggi per le operazioni in ingresso
Creare un'istanza di OracleEBSBinding.
Impostare le proprietà di associazione necessarie per l'operazione in ingresso. Ad esempio, per un'operazione di polling, è necessario impostare almeno le proprietà di associazione InboundOperationType, PolledDataAvailableStatement, PollingAction e PollingInput per configurare l'adapter Oracle E-Business per eseguire il polling del database Oracle.
Creare una raccolta di parametri di associazione usando la classe BindingParameterCollection e impostare le credenziali.
Creare un listener di canale richiamando il metodo IInputChannelListener<> inOracleEBSBinding. Specificare l'URI di connessione Oracle come uno dei parametri per questo metodo.
Aprire il listener.
Ottenere un canale IInputChannel richiamando il metodo AcceptChannel nel listener.
Aprire il canale.
Il codice seguente illustra come creare un listener del canale e ottenere un IInputChannel per ricevere messaggi per le operazioni in ingresso dall'adapter.
Importante
L'adapter Oracle E-Business supporta solo la ricezione unidirezionale. È quindi necessario usare IInputChannel per ricevere messaggi per le operazioni in ingresso da 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();
Vedere anche
Sviluppare applicazioni Oracle E-Business Suite usando il modello di canale WCF