PowerBuilder で JSON OData フィードを利用

Jerod Johnson
Jerod Johnson
Senior Technology Evangelist
この記事では、API Server を使用して PowerBuilder からJSON servicesを OData フィードとして利用する方法を説明します。

CData API Server は、PowerBuilder DataWindow で利用できるセキュアなJSON servicesフィードを生成します。API Server は、OData、Atom、JSON、HTML、CSV、TSV、RSS などの主要な Web サービスをサポートしています。また、主要な認証スキームと SSL もサポートしています。

この記事では、CData API Server を使用して読み取りと書き込みを実行する DataWindow を作成する方法を説明します。

API Server のセットアップ

以下の手順に従って、セキュアな JSON OData サービスの作成を開始します。

デプロイ

API Server は独自のサーバー上で実行されます。Windows では、スタンドアロンサーバーまたは IIS を使用してデプロイできます。Java サーブレットコンテナでは、API Server WAR ファイルをドロップします。詳細と手順については、ヘルプドキュメントを参照してください。

API Server は、Microsoft AzureAmazon EC2Heroku へのデプロイも簡単です。

JSON への接続

API Server をデプロイしたら、API Server 管理コンソールで Settings -> Connections をクリックして新しい接続を追加し、JSON に接続するために必要な認証値やその他の接続プロパティを指定します。

データソースへの認証については、ヘルプドキュメントの「はじめに」を参照してください。CData 製品は、JSON API を双方向データベーステーブルとして、JSON ファイルを読み取り専用ビュー(ローカル ファイル、一般的なクラウドサービスに保存されているファイル、FTP サーバー)としてモデル化します。HTTP Basic、Digest、NTLM、OAuth、FTP などの主要な認証スキームがサポートされています。詳細はヘルプドキュメントの「はじめに」を参照してください。

URI を設定して認証値を入力したら、DataModel を設定してデータ表現とデータ構造をより厳密に一致させます。

DataModel プロパティは、データをどのようにテーブルに表現するかを制御するプロパティで、次の基本設定を切り替えます。

  • Document(デフォルト):JSON データのトップレベルのドキュメントビューをモデル化します。CData 製品 は、ネストされたオブジェクト配列を集約されたJSON オブジェクトとして返します。
  • FlattenedDocuments:ネストされた配列オブジェクトと親オブジェクトを、単一テーブルに暗黙的に結合します。
  • Relational:階層データから個々の関連テーブルを返します。テーブルには、親ドキュメントにリンクする主キーと外部キーが含まれています。

リレーショナル表現の設定についての詳細は、ヘルプドキュメントの「JSON データのモデリング」を参照してください。また、以下の例で使用されているサンプルデータも確認できます。データには人や所有する車、それらの車に行われたさまざまなメンテナンスサービスのエントリが含まれています。

Amazon S3 内のJSON への接続

URI をバケット内のJSON ドキュメントに設定します。さらに、次のプロパティを設定して認証します。

  • AWSAccessKey:AWS アクセスキー(username)に設定。
  • AWSSecretKey:AWS シークレットキーに設定。

Box 内のJSON への接続

URI をJSON ファイルへのパスに設定します。Box へ認証するには、OAuth 認証標準を使います。 認証方法については、Box への接続 を参照してください。

Dropbox 内のJSON への接続

URI をJSON ファイルへのパスに設定します。Dropbox へ認証するには、OAuth 認証標準を使います。 認証方法については、Dropbox への接続 を参照してください。ユーザーアカウントまたはサービスアカウントで認証できます。ユーザーアカウントフローでは、以下の接続文字列で示すように、ユーザー資格情報の接続プロパティを設定する必要はありません。 URI=dropbox://folder1/file.json; InitiateOAuth=GETANDREFRESH; OAuthClientId=oauthclientid1; OAuthClientSecret=oauthcliensecret1; CallbackUrl=http://localhost:12345;

SharePoint Online SOAP 内のJSON への接続

URI をJSON ファイルを含むドキュメントライブラリに設定します。認証するには、User、Password、およびStorageBaseURL を設定します。

SharePoint Online REST 内のJSON への接続

URI をJSON ファイルを含むドキュメントライブラリに設定します。StorageBaseURL は任意です。指定しない場合、ドライバーはルートドライブで動作します。 認証するには、OAuth 認証標準を使用します。

FTP 内のJSON への接続

URI をJSON ファイルへのパスが付いたサーバーのアドレスに設定します。認証するには、User およびPassword を設定します。

Google Drive 内のJSON への接続

デスクトップアプリケーションからのGoogle への認証には、InitiateOAuth をGETANDREFRESH に設定して、接続してください。詳細はドキュメントの「Google Drive への接続」を参照してください。

次に、Settings -> Resources をクリックして、API Server からアクセスを許可する JSON エンティティを選択できます。

また、Settings -> Server をクリックし、PowerBuilder との互換性のために以下の設定を変更します:

  • Default Format:メニューから XML (Atom) を選択。
  • Default Version:メニューから 2.0 を選択。

API Server ユーザーの認可

生成する OData サービスを決定したら、Settings -> Users をクリックしてユーザーを認可します。API Server は Authtoken ベースの認証を使用し、主要な認証スキームをサポートしています。アクセスは IP アドレスに基づいて制限することもできます。デフォルトでは、ローカルマシンへの接続のみが許可されています。SSL で認証と接続の暗号化も可能です。

JSON 用のプロファイルを作成

以下の手順に従って、Database Painter ツールを使用して API Server の OData API 用のデータベースプロファイルを作成します。Database Painter では、データをグラフィカルに操作したり、SQL クエリを実行したりできます。

  1. Tools -> Database Painter をクリックします。
  2. OData ノードを右クリックし、New Profile をクリックします。
  3. Database Profile Setup ダイアログで、以下を入力します:
    • Profile Name:プロファイルのわかりやすい名前を入力します。
    • URI:API Server の OData エンドポイントへの URL を入力します。この URL は以下のような形式になります:
      http://MyServer:8080/api.rsc
    • Supply User Id and Password:HTTP Basic 認証を使用する場合は、このオプションをクリックします。なお、API Server は Windows 認証もサポートしています。
    • User Id:API Server のユーザー名を入力します。
    • Password:API Server のユーザーの Authtoken を入力します。
  4. テーブルを表示・変更するには、テーブルを右クリックして Edit Data -> Grid をクリックします。

PowerBuilder コントロールで JSON Services を使用

標準的な PowerBuilder オブジェクトを使用して OData フィードに接続し、クエリを実行できます。以下の例は、JSON services を DataWindow に取得する方法を示しています。

open メソッドに以下のコードを追加できます:

SQLCA.DBMS = "ODT"
SQLCA.DBParm = "ConnectString='URI=http://MyServer:8080/api.rsc;UID=MyAPIUser;PWD=MyAuthtoken'";
CONNECT USING SQLCA;
dw_people.SetTransObject(SQLCA);
dw_people.Retrieve();

はじめる準備はできましたか?

詳細はこちら、または無料トライアルにお申し込みください:

CData API Server お問い合わせ