Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

ASTERIA WARP の CData アダプターを使って Salesforce とつないでみた

More than 3 years have passed since last update.

はじめに

ASTERIA WARP 1610リリースに伴い、CDataの Salesforce アダプターが新たに公開されています。

Salesforce へのアクセスは CData Software Inc. 社の提供する技術を利用して RDB のように SQL でアクセスする手段を提供します。
従って、ASTERIA 側で基本的な操作方法は一般的な RDB 系コンポーネントと同じですが、CData 固有の SQL ステートメントや利用できるデータモデルについて詳細は下記の CData 社のオンラインヘルプも参考にしてください。

・CData JDBC Driver for Salesforce のオンラインヘルプ
 http://cdn.cdata.com/help/GFB/jdbc/

今回は Salesforce 側で登録されているドキュメントを SalesforceGet コンポーネント、SalesforceSQLCall コンポーネントを利用してローカルにダウンロードしてみたいと思います。

事前準備

セキュリティトークンの取得

Salesforce への接続するためにはセキュリティトークンが必要となります。
下記の手順でセキュリティトークンを取得することができます。

1.Salesforce.com の[私の設定]→[個人用]→[私のセキュリティトークンのリセット]を開きます。
2.[セキュリティトークンのリセット]をクリックします。トークンが E メールで送られます。

コネクションの作成

CData オプションのコネクションはデザイナー側で作成します。

connection_01.png

インスペクタで接続設定情報を入力する際に、Salesforce アダプターでは最低限、下記のようなプロパティを設定することを推奨します。

connection_02.png

  • 接続名:コネクション名を設定します。
  • ユーザー:ユーザー名を設定します。
  • パスワード:パスワードを設定します。
  • セキュリティトークン:事前準備で取得したセキュリティトークンを設定します。
  • サンドボックスを使用:サンドボックスアカウントに接続するには「はい」と設定します。デフォルトは「いいえ」と設定されています。

コネクションのテスト

Salesforce アダプターのコネクションが作成されたら、コネクションの接続テストを実行してみましょう。

connection_03.png

コネクションの接続テストが成功していることが確認できます。

フローの作成

Salesforce 側で登録されているドキュメント

先ずは、Salesforce 画面から登録されているドキュメントを確認してみましょう。

  1. 「Infoteria」フォルダのドキュメント
    salesforce_01.png

  2. 「CData」フォルダのドキュメント
    saleforce_02.png

ご覧の通り、「Infoteria」フォルダに2つ、「CData」フォルダに2つのドキュメントがあります。

フローの構成

上記の4つのドキュメントを指定したローカルパスにフォルダーごとダウンロードするフローを作成してみましょう。

flow_01.png

ダウンロード対象のドキュメント情報を SalesforceGet コンポーネントから取得し、SalesforceSQLCall コンポーネントを利用してローカルフォルダーにダウンロードした後に、そのリスト(ファイル名、ファイルの完全パス)を CSV ファイルに出力するフローとなります。

コンポーネントの設定内容

主に、SalesforceGet → マッパー → SalesforceSQLCall コンポーネントについて設定内容を確認してみます。

  1. SalesforceGet コンポーネントの SQL ビルダー
    flow_02.png

    • テーブルの結合:Document テーブル、Folder テーブル
    • 表示項目:
      • Document.Id:ドキュメントの一意の識別子
      • Document.FolderId:ドキュメントのフォルダID
      • Document.Name:ドキュメントの名前
      • Folder.Name:ドキュメントのフォルダ名
    • 条件:フォルダ名が「Infoteria」又は「CData」
  2. マッパー1コンポーネント
    flow_03.png
    SalesforceGet コンポーネントと SalesforceSQLCall コンポーネントの間に配置したマッパーコンポーネントの設定内容です。SalesforceGet コンポーネントから取得した情報を SalesforceSQLCall コンポーネントの SQL パラメーターにマッピングしています。
    また、フォルダ名情報を利用し、Salesforce の各フォルダ名ごと保存されるように保存先のローカルパスを設定しています。ここでは、「C:¥Salesforce¥Infoteria」と「C:¥Salesforce¥CData」が保存先のパスになると思います。

  3. SalesForceSQLCall コンポーネント

    • 基本タブ                flow_04.png
      • 実行する処理:ストアド実行(結果なし)
      • SQL文:「{ call DownloadDocument( ?Id?, ?Name?, ?Folderid?, ?LocalPath?, ?FileName?, ?FullPath?)}」
    • SQLパラメータータブ
      flow_05.png

      • Id:入力用。ダウンロードするドキュメントのID。
      • Name:入力用。ダウンロードするドキュメントの名前
      • FolderId:入力用。ダウンロードするドキュメントのフォルダID。
      • LocalPath:入力用。ファイルの保存先のローカルパス。
      • FileName:出力用。ダウンロードされたファイルの名前。
      • FullPath:出力用。ダウンロードされたファイルの完全パス(名前を含む)。

フローの実行結果

  1. ダウンロードされたドキュメント
    result_01.png
    フローの実行で Salesforce の「Infoteria」と「CData」のドキュメントが指定したローカルの保存先にダウンロードされていることがわかります。

  2. ダウンロードされたドキュメントのリスト
    result_02.png
    DownloadDocument ストアードプロシージャの実行でダウンロードされたファイルの名前と完全パス情報が出力用のパラメーターに格納されたので、その情報を利用してダウンロードされたドキュメントのリストを CSV 形式で作成することができました。

asteria
データ連携ソフトのASTERIA Warp、コンテンツ管理システムのHandbook、モバイルアプリ作成サービスPlatio、AI/IoTのエッジウェアGravioなどを開発しています
https://asteria.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away