OutSystems開発において、これから外部システム接続の中心になりそうなIntegration Builder。
以前は、Personal Environmentでは試せなかったのですが、いつのまにか可能に。
SalesforceのDevelopler Editionを使って、動作確認が行えました。
この記事は、Personal Environmentによる動作確認の手順のメモです。
確認環境
Personal Environment(Version 11.13.0 (Build 31107))
Service Studio (Version 11.11.12)
Integration BuilderはSaaS:https://integrationbuilder.outsystems.com/
Salesforce Developer Editionを用意
Developer Editionは、https://developer.salesforce.com/ja/
にアクセス。
右上のサインアップを選択し、フォームに必要な情報を入力します。
入力したメールアドレスに確認のメールが来るので、「アカウントを確認」ボタンをクリック。
確認後ログインできるようになるので、後で動作確認に使うTODOに1レコード追加しておきます。
(画面上部のToDoのリンク → 新規ToDoでレコードが追加できる)
Integration Builderにログイン
未ログインの状態でアクセスすると、ログインフォームにリダイレクトされます。
EnvironmentにPersonal EnvironmentのURLを設定。
(https://www.outsystems.com/Portal/Trial_Portal
のYour Infrastructure)。
UsernameとPasswordはOutSystemsアカウントのものを利用する。
Integration BuilderでSalesforceとのIntegrationを作成
Salesforceへ接続
まず、Create Integrationボタンをクリックして開始。
Choose a providerでSalesforceを選択します。
どちらが正しいのかわかりませんが、とりあえずProductionで試してみました。
ここで、Salesforceへのサインインが要求されます。
許可をクリック。
接続するオブジェクトを選択する
Nextで次のステップへ。
デフォルトでSalesforceにあるオブジェクトが画面左にリストアップされるようです。
無難そうなのでTODOを選択してみました。すると右側に、TODOのfieldが表示されました。
チェックボックスが表示されているので、そのfieldを選択するように見えます。
とりあえず、デフォルトのまま(全field選択)に。
OutSystemsの開発環境にアプリケーションを作成する
Nextで次のステップへ。
App name:OutSystems開発環境に作成するコネクタアプリケーションの名前
Integration module name:OutSystems開発環境でアプリケーション開発者が利用するモジュールの名前
Driver module name:Integrationから利用され、直接Salesforceに接続するモジュールの名前
この画面の右下に、1-Click Publishボタンがあるのでクリックする。
生成されたアプリケーションの情報が表示されました。
Connectionの設定
ここで、環境にインストールされた、Integration Managerへリダイレクト。
さらにIM_Salesforceモジュールへリダイレクトされました。
この右でConnectionを選択するようです。Salesforce Development Connectionがデフォルトであったのでとりあえずこれを選択(ただし、このConnectionはテスト目的専用とのこと)。
Finishボタンをクリック。これでIntegration Builderでの設定は終了のようです。
アプリケーション開発
ここからは、Service Studioで作業します。
こんな感じのアプリケーションができていました。設定時に指定した名前通りですね。
テスト用アプリケーションでManage Dependenciesを開き、_ISモジュールのServer Actionへの参照を追加します。
DataActionを作成し、以下のように実装してみました。
CountToDoは、ToDoの中に入っているデータ件数を返すようです。
パラメータは無指定にしておきました。
GetToDoは、指定したIdのレコードを返してくる。
パラメータは、Salesforce上でToDoの1レコードを選択すると、URLの/viewの手前にIdが含まれるようです。
テストなので、それぞれのActionのOutput ParameterのAttributeを適当に文字列として結合してみました。
想定通り、CountToDoはデータ件数の1、GetToDoはSalesforceレコードに含まれていた件名を含む属性データが返ってきました。
ただ、オブジェクト名、field名に日本語が含まれているとOutSystemsにマッピングするときに問題があります。オブジェクト名はEntity名にマッピングされますが、日本語の部分が「_」になり、Attributeは名前が「AttributeN」(Nの部分が連番)にマッピングされてしまいました。
これはちょっと使いにくい。