[OutSystems]Integration BuilderをSalesforce Developer Editionで試してみる

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でレコードが追加できる）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/27e50dcc-1afe-667e-6350-cc8cca4cd32b.png)

# 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を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/f051d0a3-9b72-9d73-bcf1-26e5759d190f.png)
どちらが正しいのかわかりませんが、とりあえずProductionで試してみました。

ここで、Salesforceへのサインインが要求されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/9e372de5-f5ea-b4cb-9f62-4ebc2f621278.png)
許可をクリック。

## 接続するオブジェクトを選択する
Nextで次のステップへ。
デフォルトでSalesforceにあるオブジェクトが画面左にリストアップされるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/b1917f9f-607d-fa47-4e03-4373be8bb0bb.png)

無難そうなのでTODOを選択してみました。すると右側に、TODOのfieldが表示されました。
チェックボックスが表示されているので、そのfieldを選択するように見えます。
とりあえず、デフォルトのまま（全field選択）に。

## OutSystemsの開発環境にアプリケーションを作成する
Nextで次のステップへ。
App name：OutSystems開発環境に作成するコネクタアプリケーションの名前
Integration module name：OutSystems開発環境でアプリケーション開発者が利用するモジュールの名前
Driver module name：Integrationから利用され、直接Salesforceに接続するモジュールの名前
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/38b3d820-9c92-4484-2816-ae5b5552fadb.png)

この画面の右下に、1-Click Publishボタンがあるのでクリックする。
生成されたアプリケーションの情報が表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/e76ad5ec-7bf5-99f8-1632-70a7ef9ead3c.png)

## Connectionの設定
ここで、環境にインストールされた、Integration Managerへリダイレクト。
さらにIM_Salesforceモジュールへリダイレクトされました。

この右でConnectionを選択するようです。Salesforce Development Connectionがデフォルトであったのでとりあえずこれを選択（ただし、このConnectionはテスト目的専用とのこと）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/495136f6-694b-3dd6-1509-206556b8187f.png)

Finishボタンをクリック。これでIntegration Builderでの設定は終了のようです。

# アプリケーション開発
ここからは、Service Studioで作業します。
こんな感じのアプリケーションができていました。設定時に指定した名前通りですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/116ca999-0b6a-249a-ad3a-b53b024243a4.png)

テスト用アプリケーションでManage Dependenciesを開き、_ISモジュールのServer Actionへの参照を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/48b32de5-69d3-1fcf-16e8-3f9c3507895d.png)


DataActionを作成し、以下のように実装してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/4f0aab6e-42ee-3399-e20f-8abbb6bd3d26.png)

CountToDoは、ToDoの中に入っているデータ件数を返すようです。
パラメータは無指定にしておきました。

GetToDoは、指定したIdのレコードを返してくる。
パラメータは、Salesforce上でToDoの1レコードを選択すると、URLの/viewの手前にIdが含まれるようです。

テストなので、それぞれのActionのOutput ParameterのAttributeを適当に文字列として結合してみました。
想定通り、CountToDoはデータ件数の1、GetToDoはSalesforceレコードに含まれていた件名を含む属性データが返ってきました。

ただ、オブジェクト名、field名に日本語が含まれているとOutSystemsにマッピングするときに問題があります。オブジェクト名はEntity名にマッピングされますが、日本語の部分が「_」になり、Attributeは名前が「AttributeN」（Nの部分が連番）にマッピングされてしまいました。
これはちょっと使いにくい。