PEX 受信アダプタ
ビジネス・サービスは受信アダプタを使用して特定のタイプの入力データを受信します。ObjectScript ビジネス・サービスで使用されるカスタムの受信アダプタを記述できます。PEX 対応言語で記述されたビジネス・サービスで、これを使用することもできます。外部言語で記述されたすべてのプロダクション・コンポーネントに関する一般情報は、"ビジネス・ホストおよびアダプタの概要" を参照してください。
カスタム・アダプタの開発
外部言語でカスタム受信アダプタを記述する処理を開始するには、以下のいずれかのクラスを拡張します。
言語 | クラス |
---|---|
Java | com.intersystems.enslib.pex.InboundAdapter |
.NET | InterSystems.EnsLib.PEX.InboundAdapter |
Python | iris.pex.InboundAdapter |
抽象メソッドの実装
通常、受信アダプタの OnTask() メソッドが、そのアダプタの主要機能を実行します。実行時、OnTask() メソッドは、アダプタを使用しているビジネス・ホストの設定で指定された間隔で呼び出されます。OnTask() から BusinessHost.ProcessInput() を呼び出し、関連付けられたビジネス・サービスの ProcessInput メソッドにオブジェクトをディスパッチします。例えば、簡単なアダプタには、以下のようなコードを含めます。
public void OnTask() throws Exception {
SimpleObject request = new SimpleObject("message #"+(++runningCount));
// send object to business service's ProcessInput() method
String response = (String) BusinessHost.ProcessInput(request);
return;
}
public override void OnTask()
{
SimpleObject request = new SimpleObject("message #" + (++runningCount));
// send object to business service's ProcessInput() method
string response = (string)BusinessHost.ProcessInput(request);
return;
}
def OnTask(self):
msg = "this is message # %d" %self.runningCount
request = demo.SimpleObject(msg)
# send object to business service's ProcessInput() method
response = self.BusinessHost.ProcessInput(request)
return
アダプタの BusinessHost.ProcessInput 呼び出しからビジネス・サービスの ProcessInput メソッドに送信されるオブジェクトは任意であり、InterSystems IRIS 内で永続的である必要はありません。このことは、ビジネス・サービスの ProcessInput メソッドからアダプタに返されるオブジェクトにも当てはまります。
既定では、アダプタからビジネス・サービスに送信されるオブジェクトは、JSON にシリアル化され、ビジネス・サービスはそれを IRISObject タイプとして受け取ります。ただし、アダプタとビジネス・サービスが接続を共有している場合は、ビジネス・サービスは同じオブジェクト・タイプを受信して返すことができます。これは有利な点です。詳細は、"接続の共有" を参照してください。
少なくとも、アダプタにはスーパークラスの OnInit メソッド、OnTearDown メソッド、および OnTask メソッドを実装する必要があります。受信アダプタのこれらのメソッドと他のメソッドの詳細は、"PEX API リファレンス" を参照してください。
アダプタの登録
PEX アダプタのコードの記述が完了したら、次はその登録です。アダプタを登録することにより、ObjectScript プロキシ・クラスが生成され、ビジネス・サービスはこのクラスを使用してアダプタを識別できるようになります。また、プロダクションがアダプタへの接続に使用する外部言語サーバが定義されます。アダプタの登録の詳細は、"PEX コンポーネントの登録" を参照してください。
ビジネス・サービスへのアダプタの追加
PEX アダプタは、PEX ビジネス・サービスまたはネイティブ ObjectScript ビジネス・サービスで使用できます。PEX アダプタを使用するようビジネス・サービスを構成する手順は、ビジネス・サービスのタイプによって異なります。どちらのシナリオでも、アダプタを PEX コンポーネントとして登録する必要があります。
PEX ビジネス・サービスで PEX アダプタを使用する場合、そのビジネス・サービスのリモート・クラスはメソッドを使用してそのアダプタを識別します。詳細は、"受信アダプタの使用法" を参照してください。
すべてのネイティブ ObjectScript ビジネス・サービスと同様に、PEX アダプタを使用するネイティブ・ビジネス・サービスも ADAPTER パラメータを使用してアダプタを識別します。この場合、ADAPTER パラメータは、PEX アダプタの ObjectScript プロキシ・クラスの名前に設定されます。既定では、このプロキシ・クラスの名前はアダプタのリモート・クラスの名前と同じですが、アダプタの登録時にカスタムのプロキシ名が定義されている場合があります。