Heroku ハンズオン Heroku ConnectでForce.comの取引先データを表示してみる

こんにちは。mp_hskです。

昨日の続き。今日は前作ったForce.comの取引先オブジェクトを

Herokuのアプリ上で表示でしてみる実験。

(やり直しが効かなかった部分があるため今回スクリーンショットが少し不親切ですがご容赦ください)

準備

作ったHeroku アカウントにログインして、Heroku Connect のアドオンを入れておく

下の画像の Find more addons から探してDemo版をインストールすればOK

f:id:mp_hsk:20170705172859p:plain

Heroku Connect側の設定

アドオンを入れたらHeroku Connect のリンクをクリックする。

そうすると新しい設定を追加するボタンが出てくるのでクリック。

したらば、DBのスキーマ名を選ばせる画面が出てくるので

自分で作ったHerokuアプリのDBスキーマ名を入れる。

スキーマ名はローカルのコマンドラインで以下のコマンドを打てば調べられる

heroku config

このコマンドで出てきたDATABASE_URLのけつの部分がスキーマ名。

 

スキーマ名を入れたら次はSales Foceへの認証画面が出てくるので自分のアカウントでログインする。

 

次にMappingの作成をする。

Mapping の設定は下の画面のCreate Mappingからできる。

f:id:mp_hsk:20170705174052p:plain

開くとSales Force側のオブジェクトを選ぶ画面が出てくるので取引先オブジェクトを選ぶ。(下のスクショだとすでに作成済みなのでハイライトされてるが、最初に作る場合はクイック検索の窓から絞り込みが可能)

f:id:mp_hsk:20170705174339p:plain

 

オブジェクトを選ぶと細かい設定画面が出てくるので、とりあえずデフォルトの設定にプラスしてName Jusho__cを同期するように設定してSave。

これでHeroku Connect側の設定は完了。

f:id:mp_hsk:20170705174800p:plain

アプリケーション側のソース追加

次にアプリ側を作る。

以下のソースをサンプルアプリのsrc/main/java/com/example/Main.java に追加。

@RequestMapping("/torihikisakilist")
String torihikisakilist(Map<String, Object> model){
try (Connection connection = dataSource.getConnection()) {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM スキーマ名.Torihikisaki__c");

ArrayList<String> output = new ArrayList<String>();
while (rs.next()) {
output.add(rs.getString("Name") + "," + rs.getString("Jusho__c"));
}

model.put("records", output);
return "torihikisakilist";
} catch (Exception e) {
model.put("message", e.getMessage());
return "error";
}
}

また、src/main/resource/templatesにtorihikisakilist.htmlを新規作成

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" th:replace="~{fragments/layout :: layout (~{::body},'torihikisakilist')}">

<body>
<div class="container">
<h1>Database Output</h1>
<ul th:each="record : ${records}">
<li th:text="${record}"/>
</ul>
</div>
</body>
</html> 

 追加した後は下記コマンドでデプロイすればOK

git add .

git commit -m "Heroku Connect Test"

git push heroku master 

結果

以下のForce.com側の取引先データが

f:id:mp_hsk:20170705175613p:plain

無事Heroku側のアプリ http://アプリケーションのID.herokuapp.com/torihikisakilist

に取引先オブジェクトの内容が表示されました。

f:id:mp_hsk:20170705175929p:plain

まとめ

今回はHeroku Connectを使ってForce.comとHerokuのアプリを連携させましたが

思った以上に簡単に行うことができました。

もう少し凝ったことをやるときは調査が必要ですが、ハンズオンとしては簡単なので

皆さんも試してみてはどうでしょうか?

 

ツッコミあればお待ちしてます。