CData Software Blog

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

ローコード開発・運用プラットフォーム Mendix で Salesforceに連携したアプリを作成する:CData JDBC Salesforce Driver

f:id:sugimomoto:20220211113906p:plain

こんにちは。CData Sfotware Japan リードエンジニアの杉本です。

今回の記事ではローコード開発・運用プラットフォーム Mendixで Salesforce 連携のアプリを作成する方法を紹介したいと思います

Mendix とは?

Mendix はシーメンス社が提供するローコード開発・運用プラットフォームです。

www.mendix.com

f:id:sugimomoto:20220211112948p:plain

Gartner の市場調査レポートでも高い評価を受けていることで有名ですね。

www.mendix.com

f:id:sugimomoto:20220211112955p:plain

日本市場でもNECやTISなどのインテグレーターが開発基盤として活用しており、盛り上がりを見せていますね。

jpn.nec.com

www.tis.jp

以下のようなMendix Studio Proというデスクトップベースの開発ツールが提供されており、ローコードでUI開発ができます。

f:id:sugimomoto:20220211113001p:plain

また、ログラミングが得意ではないユーザーでも、Micoflowという仕組みでフロー図を描くような形でビジネスロジックを実装できるのがポイントですね。

f:id:sugimomoto:20220211113007p:plain

Mendix から Salesforce API に接続する際の課題

さて、今回の記事ではこのMendixからSalesforce APIに接続するアプリを作成します。

Salesforce でも REST APIが提供されているので、一見連携しやすいように見えますが、SOQLを発行するインターフェースがベースになっていたりと、Menidx から直接クエリするにはインターフェース処理が難しい部分が実際問題として存在します。

developer.salesforce.com

そこで今回の記事ではこのボトルネックを「CData JDBC Driver」を活用することで解消します。

www.cdata.com

f:id:sugimomoto:20220211113013p:plain

Mendix では Database Connectorという仕組みが標準提供されており、このコネクターを介してSQL ServerMySQLなどにアクセスできるようになっています。

marketplace.mendix.com

f:id:sugimomoto:20220211113022p:plain

そして、実はこのDatabase Connector、内部ではJDBCが利用されているため、このコネクターとCDataが提供されているJDBC Driverラインナップを通じて、各種クラウドサービスのAPIにアクセスすることができるようになります。

docs.mendix.com

f:id:sugimomoto:20220211113027p:plain

とは言っても、説明だけではイメージできない部分もあると思うので、実際にアプリを作成してみましょう。

シナリオ

今回作成するアプリケーションは Salesforce から取得したデータを表示する一覧画面です。

f:id:sugimomoto:20220211113146p:plain

対象となるSalesforceのデータは「Account(取引先)」です。ここからデータを取得してアプリで一覧を表示します。

手順

Mendix側の環境準備

今回は上記で紹介している Mendix Studio Proを用いてアプリを開発します。なので事前にMendix Studio Proをインストールしておきます。

marketplace.mendix.com

CData JDBC Driverのインストール

Mendix側の環境構成と併せて、CData Salesforce JDBC Driver もセットアップします。トライアルは以下のURLから入手できます。

www.cdata.com

f:id:sugimomoto:20200116122206p:plain

ダウンロード後、exeファイルを実行し、セットアップを進めます。

f:id:sugimomoto:20200116122213p:plain

インストール完了後、「C:\Program Files\CData」にCData JDBC Driverのフォルダが作成され、JDBCのjarファイルがSalesforceのフォルダのlib配下に作成されます。

アプリの作成

それではアプリの作成を始めていきます。まず、Database Connectorが利用できる状態のアプリを作成しましょう。

Mendix Studio Proを立ち上げて「Create New App」をクリックします。

f:id:sugimomoto:20220211113212p:plain

「Blank Web App」で公開は作成してみます。

f:id:sugimomoto:20220211113217p:plain

「Use this starting point」をクリックして進めます。

f:id:sugimomoto:20220211113223p:plain

任意のApp nameを指定して作成しましょう。また、後ほどJDBC Driverを配置するため、「Disk location」の情報を控えておきます。

f:id:sugimomoto:20220211113229p:plain

これでまっさらなアプリが作成できました。

f:id:sugimomoto:20220211113238p:plain

アプリにDatabase Connectorを追加

続いて作成したアプリにDatabase Connector のモジュールを追加します。

f:id:sugimomoto:20220211113307p:plain

以下のURLからDatabase Connector がダウンロードできるので、ここでダウンロードされた「mpk」ファイルをインポートします。

marketplace.mendix.com

「mpk」ファイルを選んだら「Import」をクリックします。

f:id:sugimomoto:20220211113340p:plain

これでアプリの画面に Database Connector が表示されればOKです。

f:id:sugimomoto:20220211113401p:plain

Mendix Studio ProにJDBC Driverを追加

併せてこの Database Connector でCData JDBC Driverを利用できるようにするために、JDBC Driver の jarファイルをプロジェクトに配置します。

事前に控えておいた Medix のプロジェクトフォルダに「userlib」というフォルダがあるので、「cdata.jdbc.salesforce.jar」と「cdata.jdbc.salesforce.lic」の2つのファイルを配置します。

f:id:sugimomoto:20220211113430p:plain

これで、Database Connector で CData JDBC Driverが使えるようになります。

データモデルを作成

それでは実際にアプリを作り込んでいきましょう。

Database Connectorからデータを読み込ませて一覧画面に表示するためには、その読み込ませるデータのデータモデルを予め定義しておく必要があるので、作成していきます。

今回は「MyFirstModule」の「Domain model」にEntityを追加します。

f:id:sugimomoto:20220211113445p:plain

ここでEntityの名前、項目の定義を追加していきます。

f:id:sugimomoto:20220211113450p:plain

CData JDBC Driverを通じたテーブル定義の情報はDbVisualizerなどのツールで確認しておくとスムーズに構成できると思います。

f:id:sugimomoto:20220211113454p:plain

今回は以下のようなEntityを定義しました。

f:id:sugimomoto:20220211113459p:plain

JDBC URLの定数を作成

続いて、Database Connectorで使うためのJDBC URLの定数を作成しておきましょう。

MyFirstModuleに「Constant」を追加し

f:id:sugimomoto:20220211113504p:plain

任意の名称で作成します。

f:id:sugimomoto:20220211113509p:plain

Default valueに接続文字列を「jdbc:salesforce:User=myUser;Password=myPassword;Security Token=myToken;」のように指定して作成します。

Salesforceの接続情報 設定項目 備考
ユーザID User
パスワード Password
セキュリティートーク Security Token 取得方法はこちら

f:id:sugimomoto:20220211113513p:plain

Salesforceのデータを取得する Micoflow を作成

それでは作成したEntityを元に、Database Connector からデータを取得する Micoflow を作成しましょう。

今回のMicoflowは最終的に Account Entity の Listを返すような処理になります。最終的な作成イメージは以下のようになります。

f:id:sugimomoto:20220211113518p:plain

「MyFirstModule」から「Add microflow」をクリックし

f:id:sugimomoto:20220211113521p:plain

任意の名称でMicoflowを作成します。

f:id:sugimomoto:20220211113526p:plain

最初に予め定義しておいたEntityのObjectを作成します。

「Creat Object」を Micoflow に配置し

f:id:sugimomoto:20220211113531p:plain

「Entity」の「Select」ボタンから

f:id:sugimomoto:20220211113535p:plain

事前に定義した Entity を選択します。

f:id:sugimomoto:20220211113539p:plain

任意のObject nameを入力して、「OK」をクリックします。

f:id:sugimomoto:20220211113544p:plain

続いてDatabase Connectorからデータを取得するための「Execute Query」をMicoflowに配置します。

f:id:sugimomoto:20220211113549p:plain

以下のような画面が表示されるので、まずInputをそれぞれ定義していきます。

f:id:sugimomoto:20220211113553p:plain

jdbc url」では予め定義しておいた定数を指定しておきます。

f:id:sugimomoto:20220211113558p:plain

SQLSalesforce からデータを取得するためのクエリを記述しておきます。

f:id:sugimomoto:20220211113602p:plain

「User name」や「Password」は今回不要なので「empty」を設定し、Result objectに前のフローで作成したObjectを指定します。

あとは任意のList nameを指定すればOKです。

f:id:sugimomoto:20220211113606p:plain

最後にMicoflowの出力結果を定義します。

f:id:sugimomoto:20220211113610p:plain

「End Event」をダブルクリックで開いて「Type」から「List」を選択し、事前に定義したEntityを紐付けます。

そして、Return valueに「Execute Query」の出力結果を指定しましょう。

f:id:sugimomoto:20220211113614p:plain

これで、Salesforce からデータを取得する Micoflow の完成です。

f:id:sugimomoto:20220211113619p:plain

List を作成・Micoflowと紐付け

では Micoflow から取得した結果を表示する画面を作成しましょう。「Home_web」をダブルクリックで開いて

f:id:sugimomoto:20220211113624p:plain

一覧画面用として今回は「Data grid」を配置します。

f:id:sugimomoto:20220211113629p:plain

「Data grid」を配置したら設定画面を表示し、「Data source」でMicoflowを紐付けていきます。

f:id:sugimomoto:20220211113635p:plain

先程作成したMicoflowを選択しましょう。

f:id:sugimomoto:20220211113639p:plain

これで「OK」をクリックします。

f:id:sugimomoto:20220211113644p:plain

OKをクリックすると、最初にカラムの自動検出について確認されるので「Yes」をクリックします。

f:id:sugimomoto:20220211113648p:plain

続いて各種Data gridのコントローラーを生成するかの確認がありますが、今回はそれぞれのロジックを構成しないので、「No」をクリックします。

f:id:sugimomoto:20220211113652p:plain

すると、以下のようにシンプルなデータグリッド画面が作成されます。

f:id:sugimomoto:20220211113656p:plain

これで完成です。

実行

それでは実際に正常に動作するか確認してみましょう。

「Publish」ボタンをクリックすることで、作成したアプリが動作する状態が整います。

完了したら「View App」をクリックして、アプリを開いてみましょう。

f:id:sugimomoto:20220211113702p:plain

以下のようにSalesforce のデータ一覧が表示されていればOKです! このようにSalesforceAPIを意識することなく、ローコードでSalesforce 連携アプリが作成できました。

f:id:sugimomoto:20220211113706p:plain

おわりに

とても手軽に Mendix で Salesforce のデータを扱えることがイメージできたのではないかと思います。

今回はデータの読み取りだけでしたが、INSERT/UPDATE/DELETEなども行うことができますし、CData では Salesforce 以外にも数多くの JDBC Driver を提供しています。

kintone や Sansan といった日本のクラウドサービスにも対応しているので、是非お好みのデータソースで試してみてください。

https://www.cdata.com/jp/jdbc/

f:id:sugimomoto:20200116122333p:plain