CData Software Blog

クラウド連携のCData Software の技術ブログです。

ASTERIA WarpでSalesforceのスケジュール情報をGaroonに同期する

本記事ではASTERIA Warpを利用し、SalesforceのデータをGaroonに同期する方法を紹介します。

Garoon

サイボウズ社のGaroonは中堅・大規模組織向けのグループウェアで、5200社を超える導入実績があります。

garoon.cybozu.co.jp

ASTERIA Warp

ASTERIA Warpは簡単なGUIを用いて作成するフローによって既存のデータベース、ファイルシステム、各種業務システム、各種クラウドサービスと簡単に接続、連携することのできるデータ連携ツールです。

www.asteria.com

シナリオ

今回のシナリオを下図に示します。

f:id:urabe_shintaro:20200420163423p:plain

今回はSalesforceのスケジュールデータをASTERIA Warpを利用してGaroonに登録します。 Salesforceからのデータ取得にはCData Salesforce JDBC Driver、Garoonへの登録にはCData Garoon JDBC Driverを利用します。

Salesforceのスケジュールデータの一覧を以下に示します

f:id:urabe_shintaro:20200313101430p:plain

CData JDBC Driverのインストール

以下のダウンロードページからSalesforce, GaroonのJDBC Driver インストーラをそれぞれダウンロードしてください。

ダウンロードしたフォルダの中にあるsetup.jarをダブルクリックするとインストーラが起動しますので、それぞれウィザードに従ってインストールを行ってください。 途中、ライセンスサーバーへのオンラインアクティベーションが行われるためネットワーク環境に接続されている必要があります。 ライセンスサーバにアクセス出来ないネットワーク環境の場合は、CData Software Japan テクニカルサポートまでお問い合わせください。

フローの作成方法

Warpのフローデザイナーの基本的な利用方法についてはWarpフローデザイナー操作ガイドをご覧ください。

コネクションの追加

ASTERIA WarpでCData JDBC Driverを使用するために接続を追加します。 ここではGaroonへのコネクションの作成方法を紹介しますが、Salesforceについても同様の手順でコネクションを作成してください。

画面左のコネクションペイン上にある[]ボタンをクリックをクリックすると、「コネクションの作成」ダイアログが表示されます。

f:id:urabe_shintaro:20200330175518p:plain

「接続種別」として「RDB」を選択、「名前」に分かりやすい名前を設定し「OK」をクリックします。

f:id:urabe_shintaro:20200420163628p:plain

作成したコネクションをダブルクリックすると、画面右のインスペクタに接続プロパティが表示されます。 「基本」タブでドライバーのパスとURLをそれぞれ設定します。

f:id:urabe_shintaro:20200420163817p:plain

ドライバーのパス

前節でインストールしたGaroon JDBC Driverファイルへの参照。 デフォルトではC:\Program Files\CData\CData JDBC Driver for Garoon 2019J\lib\cdata.jdbc.garoon.jarです。

URL

Garoonに接続するための接続文字列。CData Garoon JDBC Driverのヘルプをご参考ください。

Salesforceの接続情報

Salesforceのコネクションも同様の手順で作成してください。 設定情報は以下の通りです。

ドライバーのパス

前節でインストールしたSalesforce JDBC Driverファイルへの参照。 デフォルトではC:\Program Files\CData\CData JDBC Driver for Salesforce 2019J\lib\cdata.jdbc.salesforce.jarです。

URL

Salesforceに接続するための接続文字列。CData Salesforce JDBC Driverのヘルプ

データの読み込み

はじめにGaroonが保持するデータを読み込んでみます。

下図のようにRDBGetを使用してデータの取得をテストするフローを作成します。

f:id:urabe_shintaro:20200420164447p:plain

画面右のインスペクタで、「コネクション名」として先ほど作成したコネクションを設定してください。

f:id:urabe_shintaro:20200420164530p:plain

RDBGetをクリックすると、SQLビルダーが起動しGaroonのテーブルの一覧が表示されます。

f:id:urabe_shintaro:20200420091205p:plain

ここでスケジュール情報を表示してみます。 テーブル一覧にある「Events」を真ん中の領域にドラッグします。

f:id:urabe_shintaro:20200420091330p:plain

ここでは「EventType」、「Subject」、「StartDateTime」、「EndDateTime」をチェックします。

f:id:urabe_shintaro:20200420091345p:plain

最後に「SELECTテスト」をクリックしてください。 スケジュールデータの一覧が取得できれば成功です。

f:id:urabe_shintaro:20200420091358p:plain

データの追加

続いてRDBPutを使用してSalesforceのスケジュールデータGaroonに同期します。 先ほどの例ではGaroonはデータの取得元でしたが、この例ではデータの同期先として接続します。 Salesforceのスケジュールデータは「Event」テーブルに保存されているので、このデータをGaroonの「Event」テーブルに追加します。

以下に作成したフローを示します。 Salesforceからデータを読み込むRDBGet、フィールドのマッピングを行うMapper、そしてGaroonへのデータ追加を行うRDBPutで構成されています。

f:id:urabe_shintaro:20200420165501p:plain

Salesforceの「Event」テーブルからはSubject, StartDateTime, EndDateTimeの3つの項目を取得します。

f:id:urabe_shintaro:20200420092614p:plain

RDBPutをクリックし、データを設定するテーブルとフィールドを指定します。 今回は「Event」テーブルのSubject, StartDateTime, EndDateTimeにデータを設定します。

f:id:urabe_shintaro:20200420092647p:plain

RDBPutのインスペクタ画面で「実行する処理」が「Insert」になっていることを確認してください。

f:id:urabe_shintaro:20200420175948p:plain

Mapperの設定は以下の通りです。 Garoonの「Event」テーブルに値を設定するためにはSubject, StartDateTime, EndDateTimeのほかにAttendees, StartTimeZone, EndTimeZone, EventTypeが必要です。 そのためMapperの中でこれらの項目に固定値を設定しています。

f:id:urabe_shintaro:20200420120927p:plain

フローを実行します。 Garoonの顧客データを開くと、Salesforceの顧客データが追加されたことを確認できます。

f:id:urabe_shintaro:20200313105055p:plain

データの追加/更新

前章では単純なデータの追加方法を紹介しましたが、これはSalesforceの全データをGaroonに登録するユースケースでのみ使用できます。 しかし、実際の運用ではデータが日々追加されたり更新されたりします。 そのため、下図のように二回目以降の同期では「新規に追加されるレコード」と「既存データの内容が更新されるレコード」とを分けて処理する必要があります。

f:id:urabe_shintaro:20200420111528p:plain

ここでは先ほど作成したデータ追加のフローを、Salesforce側でデータが変更された際にGaroonデータを更新するフローに変更します。 このフローは各レコードごとに以下の処理を行います。

  • Salesforceに存在し、Garoonに存在しないレコードは追加(Insert)する
  • Salesforceに存在し、Garoonにも存在するレコードは更新(Update)する

これを実現するために、RDBPutのUpdate/Insert機能を使います。 これはレコードごとに上で述べた判定基準に従ってInsertとUpdateに振り分ける処理を自動で行います。

この機能を使うには同じレコードがSalesforce、Garoonにそれぞれ存在することを確認するためのキーを定義しなければなりません。 今回はこのキーとしてSalesforceの「Event」テーブルのIdを利用します。

各レコードのIdをGaroon上でも保持するために「Event」テーブルのNotesフィールドに保存します。 (Garoonの「Event」にもIdフィールドが存在しますが、読み取り専用となっているためこれを変更することができないため、今回はNotesを利用することとしました。)

フィールドの追加とMapperの設定

RDBGet(Salesforce)で取得対象フィールドとしてIdを追加、RDBPut(Garoon)では書き込み対象フィールドとしてNotesを追加し、Mapperでこの二つのフィールドをマッピングします。

f:id:urabe_shintaro:20200420170440p:plain

こうすることで、GaroonのNotesフィールドによって上述の判定を行うことができます。 Salesforceから取得したレコードのIdがGaroonのNotesフィールドにあればそのレコードを更新し、なければそのレコードを挿入します。

RDBPutの設定

続いてRDBPutの設定を行います。 RDBPutをクリックし、インスペクタの「基本」タブにある「実行する処理」に「Update/Insert」を設定します。

f:id:urabe_shintaro:20200420171343p:plain

続いて「入力」タブを開き、「Notes」の「キーにする」を「はい」に設定します。

f:id:urabe_shintaro:20200420171628p:plain

フローを実行すると、Garoonに存在するレコードは更新、存在しないレコードは挿入が行われることが確認できます。 このように追加対象、更新対象のレコードを分けて処理することで、日々のデータ更新に追随することが可能になります。

おわりに

今回はASTERIA WarpとCData JDBC Driverを用いてSalesforceのデータをGaroonに同期する方法を紹介しました。 CData JDBC Driverを利用することで、Garoonと200を超えるクラウドサービスとのデータ連携がノーコードで実現できます。

f:id:urabe_shintaro:20200131184240p:plain

CData JDBC Driverは30日間の評価版を無料でご利用頂けます。 Garoonとクラウドサービスとのデータ連携をご検討の方はぜひお試しください。