Créer un canal à l’aide d’Oracle E-Business Suite
Dans le modèle de canal WCF, vous appelez des opérations sur Oracle E-Business Suite et recevez les résultats en échangeant des messages SOAP avec l’adaptateur Microsoft BizTalk pour Oracle E-Business Suite sur un canal WCF.
Vous appelez des opérations (opérations sortantes) à l’aide d’un IRequestChannel ou d’un IOutputChannel pour envoyer des messages à l’adaptateur.
Vous recevez des messages pour les opérations entrantes sur un IInputChannel.
Les rubriques de cette section fournissent des informations sur la création et la configuration des formes de canal utilisées pour les opérations entrantes et sortantes.
Création de canaux sortants (client)
Vous pouvez utiliser un IRequestChannel ou un IOutputChannel pour appeler des opérations sur Oracle E-Business Suite. Dans les deux cas, vous créez d’abord un System.ServiceModel.ChannelFactory à l’aide de l’interface appropriée. Vous utilisez ensuite la fabrique pour créer le canal. Une fois que vous avez créé le canal, vous pouvez l’utiliser pour appeler des opérations sur l’adaptateur.
Pour créer et ouvrir un canal sortant
Créez et initialisez un instance de ChannelFactory pour la forme de canal souhaitée à l’aide d’un point de terminaison et d’une liaison. Le point de terminaison spécifie un URI de connexion Oracle E-Business Suite et la liaison est une instance d’OracleEBSBinding.
Fournissez les informations d’identification Oracle E-Business Suite pour la fabrique de canaux à l’aide de la propriété Credentials .
Ouvrez la fabrique de canal.
Obtenez une instance du canal en appelant la méthode CreateChannel sur la fabrique de canal.
Ouvrez le canal.
Vous pouvez spécifier la liaison et l’adresse de point de terminaison dans votre code ou à partir de la configuration.
Spécification de la liaison et de l’adresse de point de terminaison dans le code
L’exemple de code suivant montre comment créer un IRequestChannel en spécifiant la liaison et l’adresse de point de terminaison dans le code. Le code permettant de créer un IOutputChannel est le même, sauf que vous devez spécifier une interface IOutputChannel pour le channelFactory et le type de canal.
// 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();
Spécification de la liaison et de l’adresse de point de terminaison dans la configuration
L’exemple de code suivant montre comment créer une fabrique de canaux à partir d’un point de terminaison client spécifié dans la configuration.
// 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();
Paramètres de configuration
Le code suivant montre les paramètres de configuration utilisés pour l’exemple précédent. Le contrat du point de terminaison client doit être « System.ServiceModel.Channels.IRequestChannel » ou « System.ServiceModel.Channels.IOutputChannel » en fonction du type de forme de canal que vous souhaitez créer.
<?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>
Création de canaux entrants (de service)
Vous configurez l’adaptateur Oracle E-Business pour interroger les tables et vues de base de données Oracle en définissant des propriétés de liaison sur un instance d’OracleEBSBinding. Vous utilisez ensuite cette liaison pour créer un écouteur de canal à partir duquel vous pouvez obtenir un canal IInputChannel pour recevoir des opérations entrantes de l’adaptateur.
Pour créer et ouvrir un IInputChannel afin de recevoir des messages pour les opérations entrantes
Créez une instance d’OracleEBSBinding.
Définissez les propriétés de liaison requises pour l’opération entrante. Par exemple, pour une opération d’interrogation, vous devez au minimum définir les propriétés InboundOperationType, PolledDataAvailableStatement, PollingAction et PollingInput pour configurer l’adaptateur Oracle E-Business pour interroger la base de données Oracle.
Créez une collection de paramètres de liaison à l’aide de la classe BindingParameterCollection et définissez les informations d’identification.
Créez un écouteur de canal en appelant la méthode BuildChannelListener<IInputChannel> sur OracleEBSBinding. Vous spécifiez l’URI de connexion Oracle comme l’un des paramètres de cette méthode.
Ouvrez l’écouteur.
Obtenez un canal IInputChannel en appelant la méthode AcceptChannel sur l’écouteur.
Ouvrez le canal.
Le code suivant montre comment créer un écouteur de canal et obtenir un IInputChannel pour recevoir des messages pour les opérations entrantes de l’adaptateur.
Important
L’adaptateur Oracle E-Business prend uniquement en charge la réception unidirectionnel. Par conséquent, vous devez utiliser IInputChannel pour recevoir des messages pour les opérations entrantes à partir d’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();
Voir aussi
Développer des applications Oracle E-Business Suite à l’aide du modèle de canal WCF