PEX ビジネス・オペレーション
ビジネス・オペレーションは、外部システムと接続し、送信アダプタを経由してこれらにメッセージを送信します、
PEX 対応言語で記述されたすべてのプロダクション・コンポーネントに関する一般情報は、"ビジネス・ホストおよびアダプタの概要" を参照してください。
ビジネス・オペレーションの開発
外部言語でビジネス・オペレーションを記述するには、以下のいずれかのクラスを拡張します。
言語 | クラス |
---|---|
Java | com.intersystems.enslib.BusinessOperation |
.NET | InterSystems.EnsLib.PEX.BusinessOperation |
Python | iris.pex.BusinessOperation |
抽象メソッドの実装
実行時、ビジネス・オペレーションが別のビジネス・ホストからのメッセージを受信すると、OnMessage() メソッドが呼び出されます。ビジネス・オペレーションは、このメソッドから、このビジネス・オペレーションに関連付けられた送信アダプタで定義された任意のメソッドを呼び出すことができます。ビジネス・オペレーションから送信アダプタへの呼び出しのパラメータは、永続的である必要はありません。
実装する必要のある他の抽象メソッドの詳細は、"PEX API リファレンス" を参照してください。
送信アダプタの使用法
プロダクション内では、ビジネス・オペレーションは、送信アダプタを使用してプロダクションの外部のシステムと通信します。PEX ビジネス・オペレーションの開発時に、リモート・クラスに特殊なメソッドを組み込んで、ビジネス・オペレーションでどの送信アダプタを使用するかを定義できます。この送信アダプタとしては、PEX アダプタまたはネイティブ ObjectScript アダプタのいずれかを使用できます。
PEX ビジネス・オペレーションの送信アダプタを指定するために使用するメソッドは、getAdapterType() です。例えば、PEX ビジネス・オペレーションでカスタム PEX 送信アダプタを使用する場合、リモート・クラスに以下のようなコードを含めます。
public String getAdapterType() {
return "com.demo.pex.MyOutboundAdapter";
}
public override string getAdapterType() {
return "Demo.PEX.MyOutboundAdapter";
}
def getAdapterType():
return "demo.PEX.MyOutboundAdapter"
PEX アダプタを使用する場合、getAdapterType メソッドで、アダプタの登録時に指定された ObjectScript プロキシ・クラスの名前を返す必要があります。既定では、このプロキシ名はリモート・クラスの名前と同じですが、カスタム名が定義されている場合があります。
アダプタ・メソッドの呼び出し
ビジネス・オペレーションは、そのアダプタのコードに定義されているメソッドを呼び出して、送信アダプタを使用します。このメソッドを呼び出すための構文は、ビジネス・オペレーションが PEX コンポーネントであるか、それともネイティブ ObjectScript クラスであるかによって異なります。ネイティブのビジネス・オペレーションから PEX アダプタ・メソッドを呼び出す方法の詳細は、"ビジネス・ホストからのプロパティとメソッドへのアクセス" を参照してください。
ビジネス・オペレーションが PEX コンポーネントの場合は、Adapter.invoke() を使用してアダプタのメソッドを呼び出します。そのシグニチャは、以下のとおりです。
Adapter.invoke("methodName", arguments)
説明 :
-
methodName は、送信アダプタに定義されている実行対象のメソッドの名前を指定します。
-
arguments には、指定したメソッドの引数が含まれます。
例えば、アダプタの printString メソッドを呼び出すには、ビジネス・オペレーションに以下のコードを追加します。
public Object OnMessage(Object request) throws Exception {
MyRequest myReq = (MyRequest)request;
Adapter.invoke("printString", myReq.requestString);
}
public override object OnMessage(object request)
{
MyRequest myReq = (MyRequest)request;
Adapter.invoke("printString", myReq.RequestString);
}
def OnMessage(self, messageInput):
self.Adapter.invoke("printString", messageInput.requestString)
return
ビジネス・オペレーションがプリミティブをアダプタに渡した場合、アダプタは同じプリミティブを受け取ります。ただし、既定では、ビジネス・オペレーションがオブジェクトをアダプタに渡した場合、そのオブジェクトは JSON にシリアル化され、アダプタはそれを IRISObject タイプとして受け取ります。この動作を変更して、アダプタが同じオブジェクト・タイプを受け取って返すようにするには、"接続の共有" を参照してください。
ビジネス・オペレーションの使用法
PEX ビジネス・オペレーションのリモート・クラスの開発が完了したら、以下の手順に従って、ビジネス・オペレーションを相互運用プロダクションに統合できます。
-
[相互運用性] > [構成] > [Production EXtensions Components] に移動して、PEX ビジネス・オペレーションを登録します。詳細は、"PEX コンポーネントの登録" を参照してください。
-
プロダクションを開き、標準のウィザードを使用して、ビジネス・オペレーションを追加します。[オペレーションクラス] フィールドで、PEX コンポーネントの ObjectScript プロキシ・クラスを選択します。既定では、このプロキシ・クラスの名前はリモート・クラスの名前と同じですが、コンポーネントの登録時にカスタム名が定義されている場合があります。