Oracle E-Business Suite を使用してチャネルを作成する
WCF チャネル モデルでは、Oracle E-Business Suite に対する操作を呼び出し、WCF チャネル経由で Microsoft BizTalk Adapter for Oracle E-Business Suite と SOAP メッセージを交換することで結果を受け取ります。
操作 (送信操作) を呼び出すには、 IRequestChannel または IOutputChannel を使用してアダプターにメッセージを送信します。
IInputChannel を介した受信操作のメッセージを受信します。
このセクションのトピックでは、受信および送信操作に使用されるチャネル図形を作成および構成する方法について説明します。
送信 (クライアント) チャネルの作成
IRequestChannel または IOutputChannel を使用して、Oracle E-Business Suite に対する操作を呼び出すことができます。 どちらの場合も、最初に適切なインターフェイスを使用して System.ServiceModel.ChannelFactory を作成します。 次に、ファクトリを使用してチャネルを作成します。 チャネルを作成したら、それを使用してアダプターに対する操作を呼び出すことができます。
送信チャネルを作成して開くには
エンドポイントとバインドを使用して、目的のチャネル図形の ChannelFactory のインスタンスを作成して初期化します。 エンドポイントは Oracle E-Business Suite 接続 URI を指定し、バインドは OracleEBSBinding のインスタンスです。
Credentials プロパティを使用して、チャネル ファクトリの Oracle E-Business Suite 資格情報を指定します。
チャネル ファクトリを開きます。
チャネル ファクトリで CreateChannel メソッドを呼び出して、チャネルのインスタンスを取得します。
チャネルを開きます。
コードまたは構成からバインディングとエンドポイント アドレスを指定できます。
コードでのバインディングアドレスとエンドポイントアドレスの指定
次のコード例は、コードでバインドとエンドポイント アドレスを指定して IRequestChannel を作成する方法を示しています。 IOutputChannel を作成するコードは同じですが、ChannelFactory とチャネルの種類に IOutputChannel インターフェイスを指定する必要があります。
// 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();
構成でのバインディングとエンドポイント アドレスの指定
次のコード例は、構成で指定されたクライアント エンドポイントからチャネル ファクトリを作成する方法を示しています。
// 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();
構成設定
次のコードは、前の例で使用した構成設定を示しています。 クライアント エンドポイントのコントラクトは、作成するチャネル図形の種類に応じて、"System.ServiceModel.Channels.IRequestChannel" または "System.ServiceModel.Channels.IOutputChannel" である必要があります。
<?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>
受信 (サービス) チャネルの作成
Oracle E-Business アダプターを構成して Oracle データベースのテーブルとビューをポーリングするには、 OracleEBSBinding のインスタンスにバインド プロパティを設定します。 次に、このバインディングを使用して、アダプターから受信操作を受信する IInputChannel チャネルを取得できるチャネル リスナーを構築します。
受信操作のメッセージを受信する IInputChannel を作成して開くには
OracleEBSBinding のインスタンスを作成します。
受信操作に必要なバインド プロパティを設定します。 たとえば、ポーリング操作の場合、Oracle データベースをポーリングするように Oracle E-Business アダプターを構成するには、少なくとも InboundOperationType、 PolledDataAvailableStatement、 PollingAction、 および PollingInput バインド プロパティを設定する必要があります。
BindingParameterCollection クラスを使用してバインド パラメーター コレクションを作成し、資格情報を設定します。
OracleEBSBinding で BuildChannelListener<IInputChannel メソッドを呼び出して、>チャネル リスナーを作成します。 Oracle 接続 URI は、このメソッドのパラメーターの 1 つとして指定します。
リスナーを開きます。
リスナーで AcceptChannel メソッドを呼び出して、IInputChannel チャネルを取得します。
チャネルを開きます。
次のコードは、チャネル リスナーを作成し、アダプターからの受信操作のメッセージを受信する IInputChannel を取得する方法を示しています。
重要
Oracle E-Business アダプターは、一方向の受信のみをサポートします。 そのため、 IInputChannel を 使用して、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();