Skip to main content

クラウド・ストレージの受信アダプタの使用

プロダクション内には、受信クラウド・アダプタを使用してクラウド・ストレージからデータを取得するカスタム・ビジネス・サービスを組み込むことができます。そのためには、ここで説明するように、1 つ以上のビジネス・サービス・クラスを作成します。それをプロダクションに追加して、構成します。

アダプタの全般的な動作

クラウド受信アダプタ EnsLib.CloudStorage.InboundAdapterOpens in a new tab には、調査するクラウド・ストレージの場所を指定するための設定や、サービス・プロバイダに対して認証するための設定があります。アダプタは、ビジネス・サービスに組み込むと、利用可能なリソースがあるかを定期的にポーリングします。ポーリング間隔ごとの動作は以下のとおりです。

  1. 構成されたデータ・ソースからの入力をアダプタが検出すると、データを保持する入力オブジェクトを作成し、ビジネス・サービスの内部 ProcessInput() メソッドを呼び出してオブジェクトを渡します。入力オブジェクトはアダプタによって異なります。

  2. ビジネス・サービスの内部 ProcessInput() メソッドが入力オブジェクトを受け取ります。次にこのメソッドは、すべてのビジネス・サービスが必要とする内部情報の保持など、基本的なプロダクション・タスクを実行します。このメソッドは、カスタマイズや上書きを行わず、ビジネス・サービス・クラスが継承します。

  3. 次に、ProcessInput() メソッドがカスタム OnProcessInput() メソッドを呼び出して、入力オブジェクトを渡します。このメソッドの要件については、"OnProcessInput() メソッドの実装" で説明します。

  4. カスタムの OnProcessInput() メソッドは、入力オブジェクトを調べ、プロダクション内の他のホストに送信します (または、入力オブジェクトに基づいて新しいメッセージを作成して送信します)。

ビジネス・サービスの作成

クラウド受信アダプタを使用するには、次のようにビジネス・サービス・クラスを作成します。

OnProcessInput() メソッドの実装

ビジネス・サービス・クラス内では、OnProcessInput() メソッドに次のシグニチャを含める必要があります。

Method OnProcessInput(pInput As EnsLib.CloudStorage.InboundInput, 
                     Output pOutput As %RegisteredObject) As %Status {
}

以下はその説明です。

  • pInput は、クラウド・ストレージから取得したデータを使用して、アダプタが作成した入力オブジェクトです。

  • pOutput は、メソッド・シグニチャに必要な汎用出力引数です。メソッド・シグニチャでは、より具体的なメッセージ・クラスを使用できます。

OnProcessInput() メソッドは、以下を実行します。

  1. 入力オブジェクト (pInput) を調べて、その使用方法を決定します。このオブジェクトの Content プロパティは、クラウド・ストレージから取得したデータを含むストリームです。

  2. ビジネス・サービスから送信されることになる要求メッセージのインスタンスを作成します。

    メッセージ・クラスの作成方法は、"メッセージの定義" を参照してください。

  3. 要求メッセージの場合は、必要に応じて、入力内の値を使用してそのプロパティを設定します。

  4. ビジネス・サービスの適切なメソッドを呼び出して、要求をプロダクション内の宛先に送信します。具体的には、SendRequestSync()SendRequestAsync()、または (あまり一般的ではない) SendDeferredResponse() を呼び出します。詳細は、"要求メッセージの送信" を参照してください。

    これらの各メソッドは、ステータス (具体的には、%StatusOpens in a new tab のインスタンス) を返します。

  5. 必ず出力引数 (pOutput) を設定します。通常、受信した応答メッセージと同じように設定します。この手順は必須です。

  6. 適切なステータスを返します。この手順は必須です。

入力オブジェクトのプロパティ

入力オブジェクトは EnsLib.CloudStorage.InboundInputOpens in a new tab のインスタンスであり、以下のプロパティがあります。

  • Name は、クラウド・ストレージ BLOB の名前です。

  • Meta には、クラウド・ストレージ BLOB に関連するメタデータが含まれます。

  • Content は、クラウド・ストレージからのデータを含むストリームです。

OnProcessInput() メソッドは、これらのプロパティを調べ、必要に応じてビジネス・ケースに使用します。

BLOB の再処理

通常、既に処理された BLOB は、以降の処理では無視されます。プロダクションに対して BLOB の再処理を強制する必要がある場合は、BLOB が処理済みであることをシステムに伝えるグローバル・ノードを削除できます。

^Ens.AppData(..BusinessHost.%ConfigName, BucketName, BlobName)

例えば、ビジネス・ホスト MyProduction.MyService が BLOB を処理し、その構成名が BucketProcessor であるとします。また、このビジネス・ホストが Bucket1 というバケットで mysample/data1 という BLOB を処理したとします。このビジネス・ホストに BLOB を再処理させるには、ObjectScript シェルを使用して、プロダクションが実行されているネームスペースに移動し、以下のコマンドを実行します。

 kill ^Ens.AppData("BucketProcessor", "Bucket1", "mysample/data1")
FeedbackOpens in a new tab