はじめに
以前に ArcGIS とSalesforce の連携例として、「Salesforce で SSO を実現! - OpenID Connect で ArcGIS 連携」という ArcGIS と Salesforce との SSO 連携の記事を紹介しました。今回は Salesforce でデータが更新・追加された際に、ArcGIS Online のフィーチャ レイヤーも自動で更新・追加される仕組みを構築しました。連携の構築には、Microsoft 社の Power Automate を使用しましたので、その方法について紹介します。
Power Automate とは
Microsoft 社が提供するサービスで、日々の業務で行っている単純な繰り返し作業を自動化できるツールです。直感的なインタフェースと多くのコネクターにより、コーディングの知識がなくてもワークフローを作成できます。
コネクターには、ArcGIS と連携できる ArcGIS Connectors for Power Automate が提供されています。住所情報のジオ―ディングやフィーチャ レイヤーの更新などのコネクターが提供されています。今回のワークフローの作成で幾つか使用しました。
連携シナリオ
① デモデータと事前準備
デモデータには、東京都 都市整備局が公開しているオープン データの東京都総合設計制度許可実績一覧表のデータを使用して、Salesforce 上に東京都総合設計制度許可実績一覧表のカスタム オブジェクトを作成しました。また、ArcGIS Online 側にも同様なデータ構成で、フィーチャ レイヤーを作成します。
Salesforce : 東京都総合設計制度許可実績一覧表
ArcGIS Online : 東京都総合設計制度許可実績一覧表
② シナリオの例
Salesforce 上で東京都総合設計制度許可実績から建物(例:土屋ビル)の属性情報(例:用途地域)を変更すると、ArcGIS Online 上のフィーチャ レイヤーの属性情報(例:用途地域)も自動で更新されます。また、Salesforce 上で東京都総合設計制度許可実績のデータが登録されると、ArcGIS Online 上のフィーチャ レイヤーに自動でデータが追加され、地図上に表示されます。
Salesforce – ArcGIS Online 連携構成
Power Automate フローの構築手順
Power Automate の使用条件や詳しい使用方法については、Microsoft 社の Power Automate のドキュメントをご確認下さい。
ここでは、ポイントを絞って簡潔に紹介します。
今回は、Salesforce上の「レコードが変更されたとき」、「レコードが作成されたとき」の2つのクラウド フローを作成します。
Power Automate の画面から新しいフローの自動化したクラウド フローを選択します。
フロー名は、任意の名前を入力します。フローのトリガーは、Salesforce 上のデータが更新・追加された場合のトリガーになるため、Salesforce 上の「レコードが変更されたとき」、もしくは、「レコードが作成されたとき」を選択します。2つのパターンで、自動化したクラウド フローを作成する必要があります。
Salesforce のレコードが変更されたとき
Salesforceの「レコードが変更されたとき」と ArcGISの「機能レイヤーのレコードを更新する」コネクターを使用して、クラウド フローを作成します。
はじめに Salesforce への接続を作成します。認証の種類やログイン URI (環境) 等を選択し、サインインして Salesforce への接続を作成します。
Salesforce との接続ができたら、パラメーターの Salesforce オブジェクトの種類から東京都総合設計制度許可実績一覧表を選択します。ここでは、詳細パラメーターは設定していません。
次に「機能レイヤー のレコードを更新する」コネクターで、はじめに ArcGIS Online への接続を作成します。サイン インして ArcGIS Online への接続を作成します。
ArcGIS Online との接続ができたら、機能レイヤーは、東京都総合設計制度許可実績一覧表/ cpproject_intro_list_sogo を選択します。一意の ID フィールドは、ArcGIS Online 上の通番号、通番号は、Salesforce 上の通番号を指定します。更新対象となる各フィールド(年度、番号、名称等)は、Salesforce 上の該当するフィールドを指定します。
ArcGIS Online 上のポップアップなどの画面からリンクをクリックした際に Salesforce 上の東京都総合設計制度許可実績の詳細画面を表示するため、以下のように、文字列関数を使用して、Salesforce の URL にオブジェクト ID を含めるように指定します。
設定は完了です。設定を保存して、テストで動作しているかを確認します。Salesforce 上で東京都総合設計制度許可実績一覧の該当のレコードを更新して、ArcGIS Online 上のフィーチャ レイヤーの該当データが更新されているかを確認します。更新されていれば成功です。もし、失敗している場合は、Power Automate でエラー メッセージなどが出力されるので、確認して対応します。
Salesforce のレコードが作成されたとき
Salesforceの「レコードが作成されたとき」コネクターを使用します。ArcGIS では、追加したレコードの住所からジオコーディングを行い、緯度経度を取得するため、「住所の候補を検索する」コネクターを使用します。最後にフィーチャ レイヤーにデータを追加するため、「機能レイヤーにレコードを作成する」コネクターを使用して、クラウド フローを作成します。
Salesforce のレコードが更新されたときと同様に、Salesforce と ArcGIS Online への接続を作成します。「レコードが作成されたとき」のコネクターでも、パラメーターの Salesforce オブジェクトの種類は、東京都総合設計制度許可実績一覧表を選択します。
「住所の候補を検索する」コネクターのパラメーターの、結果を保存しますか?では、はいを選択します。住所には、Salesforce 上の住所フィールドを指定します。他の項目は使用しないため、今回は設定していません。
次に「機能レイヤーにレコードを作成する」コネクターで、機能レイヤーには、東京都総合設計制度許可実績一覧表/ cpproject_intro_list_sogo を選択します。
Geometry には、Geometry objects を設定する必要があり、「住所の候補を検索する」コネクターで取得した x、y の値を指定し、以下のように Point を設定します。
{
"x":@{outputs('住所の候補を検索する')?['body/Geometry/x']} ,
"y":@{outputs('住所の候補を検索する')?['body/Geometry/y']} ,
"spatialReference": { "wkid": 4326 }
}そして、レコードの作成対象となる各フィールド(年度、番号、名称等)は、Salesforce 上の該当するフィールドを指定します。東京都総合設計制度許可実績(カスタム オブジェクト ID)には、文字列関数を使用して、Salesforce の URL にオブジェクト ID を含めるように指定します。
設定は完了です。設定を保存して、テストで動作しているかを確認します。Salesforce 上で東京都総合設計制度許可実績のレコードを作成して、ArcGIS Online 上でフィーチャ レイヤーに追加されているかを確認します。
まとめ
Power Automate を使用することで、開発することなく、ArcGIS Online と Salesforce の連携を実現することができました。コネクターの各設定も直感的なインタフェースのため、簡単にフローを構築することができました。
ただ、実運用の場合は、エラー処理や大量のデータ更新なども考慮する必要があるかと思います。
また、ArcGIS Connectors for Power Automate では、今回紹介した以外にも多くの操作を行うことが可能です。詳細については、ArcGIS Connectors for Power Automate のアクションをご確認ください。
今回は、Power Automateによる連携方法を紹介しましたが、ArcGIS には、多くの API/SDK が用意されていますので、次回は API/SDK を活用して、開発に踏み込んだ連携方法も紹介できたらと思います。
■関連リンク