Skip to main content

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

プロダクションでは、クラウド送信アダプタを使用してクラウド・ストレージ内のデータにアクセスできます。そのためには、ここで説明するようにカスタムのビジネス・オペレーションを作成します。ビジネス・オペレーションを作成したら、プロダクションに追加して、構成します。

アダプタを使用するビジネス・オペレーションの作成

クラウド送信アダプタを使用するには、次のようにビジネス・オペレーション・クラスを作成します。

  • ビジネス・オペレーション・クラスは、Ens.BusinessOperationOpens in a new tab を拡張するものでなければなりません。

  • クラスの ADAPTER パラメータは EnsLib.CloudStorage.OutboundAdapterOpens in a new tab である必要があります。

  • クラスの INVOCATION パラメータは、使用する呼び出しスタイルを指定する必要があります。以下のいずれかを使用します。

    • Queue は、メッセージが 1 つのバックグラウンド・ジョブ内で作成され、元のジョブが解放された段階でキューに配置されることを意味します。その後、このメッセージが処理されると、別のバックグラウンド・ジョブがこのタスクに割り当てられます。これは最も一般的な設定です。

    • InProc は、メッセージが、作成されたジョブと同じジョブで生成、送信、および配信されることを意味します。このジョブは、メッセージが対象に配信されるまで送信者のプールに解放されません。これは特殊なケースのみに該当します。

  • クラスでは、少なくとも 1 つのエントリを含むメッセージ・マップを定義します。メッセージ・マップは、以下の構造を持つ XData ブロック・エントリです。

    XData MessageMap
    {
    <MapItems>
      <MapItem MessageType="messageclass">
        <Method>methodname</Method>
      </MapItem>
      ...
    </MapItems>
    }
    
    
  • クラスでは、メッセージ・マップ内で名前が付けられたすべてのメソッドを定義します。これらのメソッドは、メッセージ・ハンドラと呼ばれます。各メッセージ・ハンドラは、以下のシグニチャを持っている必要があります。

    Method Sample(pReq As RequestClass, Output pResp As ResponseClass) As %Status {
    }

    ここで、Sample はメソッド名、RequestClass は要求メッセージ・クラスの名前、ResponseClass は応答メッセージ・クラスの名前です。"メッセージの定義" を参照してください。

    アダプタを使用するには、メソッド・コードでビジネス・オペレーションの Adapter プロパティのメソッドを呼び出す必要があります。"BLOB の削除" と "BLOB のアップロード" を参照してください。

  • その他のオプションと一般情報は、"ビジネス・オペレーション・クラスの定義" を参照してください。

以下の例は、必要となる一般的な構造を示しています。

Class ECLOUD.NewOperation1 Extends Ens.BusinessOperation
{
Parameter ADAPTER = "EnsLib.CloudStorage.OutboundAdapter";

Parameter INVOCATION = "Queue";

Method Sample(pReq As RequestClass, Output pResp As ResponseClass) As %Status
{
  Quit $$$ERROR($$$NotImplemented)
}

XData MessageMap
{
<MapItems>
  <MapItem MessageType="RequestClass">
    <Method>Sample</Method>
  </MapItem>
</MapItems>
}
}

BLOB の削除

ビジネス・オペレーションは、送信アダプタの DeleteBlob() メソッドを呼び出すことにより、クラウド・ストレージから BLOB を削除します。このメソッドのシグニチャは、以下のとおりです。

method DeleteBlob(bucketName as %String, blobName as %String) as %Status {
}

以下はその説明です。

  • bucketName は、BLOB が格納されるバケットの名前です。

  • blobName は、BLOB の名前です。

例えば、カスタム・メソッドには次のようなものが含まれます。

 Set tSC = ..Adapter.DeleteBlob(..BucketName, request.BlobName)

このコードでは、BucketName プロパティを使用してクラウド・ストレージのバケットを参照しています。削除する BLOB の名前は要求メッセージから取得されます。

BLOB のアップロード

送信アダプタは、データのソースまたはデータ型に応じて、BLOB をアップロードするための 3 つの異なるメソッドを提供しています。これらのメソッドのシグニチャは以下のとおりです。

method UploadBlobFromFile(bucketName as %String, blobName as %String, filePath as %String) as %Status {
}
method UploadBlobFromStream(bucketName as %String, blobName as %String, content as %Stream.Object) as %Status {
}
method UploadBlobFromString(bucketName as %String, blobName as %String, content as %String) as %Status {
}

以下はその説明です。

  • bucketName は、BLOB が格納されるバケットの名前です。

  • blobName は、BLOB の名前です。

  • UploadBlobFromFile() で使用される filePath は、読み込まれてアップロードされるファイルのフル・パス名です。

  • 他のメソッドで使用される content は、アップロードされるデータです。UploadBlobFromStream() の場合、これは %Stream.ObjectOpens in a new tab のインスタンスでなければなりません。UploadBlobFromString() の場合は文字列になります。

例えば、カスタム・メソッドには次のようなものが含まれます。

 Set tSC = ..Adapter.UploadBlobFromStream(..BucketName, 
            request.BlobName, request.Content)

事前構築されたクラウド・ビジネス・アプリケーション

利便性のため、インターシステムズでは、簡単なビジネス・オペレーション、EnsLib.CloudStorage.BusinessOperationOpens in a new tab を提供しています。これは、BLOB を削除し、ストリームから BLOB をアップロードする方法を示しています。サンプルのビジネス・オペレーションでは、2 つの簡単なメッセージ・クラス、EnsLib.CloudStorage.DeleteRequestOpens in a new tabEnsLib.CloudStorage.UploadRequestOpens in a new tab を使用して、BLOB の削除とアップロードを行います。EnsLib.CloudStorage.BusinessOperationOpens in a new tab には、前述のとおり、プロパティ BucketName が含まれます。送信アダプタにはこのプロパティは含まれないため、カスタム・ビジネス・オペレーションにこのプロパティを含める必要があります。

FeedbackOpens in a new tab