こんにちは。CData Sfotware Japan リードエンジニアの杉本です。
今回の記事ではローコード開発・運用プラットフォーム Mendixで Salesforce 連携のアプリを作成する方法を紹介したいと思います
Mendix とは?
Mendix はシーメンス社が提供するローコード開発・運用プラットフォームです。
Gartner の市場調査レポートでも高い評価を受けていることで有名ですね。
日本市場でもNECやTISなどのインテグレーターが開発基盤として活用しており、盛り上がりを見せていますね。
以下のようなMendix Studio Proというデスクトップベースの開発ツールが提供されており、ローコードでUI開発ができます。
また、ログラミングが得意ではないユーザーでも、Micoflowという仕組みでフロー図を描くような形でビジネスロジックを実装できるのがポイントですね。
Mendix から Salesforce API に接続する際の課題
さて、今回の記事ではこのMendixからSalesforce APIに接続するアプリを作成します。
Salesforce でも REST APIが提供されているので、一見連携しやすいように見えますが、SOQLを発行するインターフェースがベースになっていたりと、Menidx から直接クエリするにはインターフェース処理が難しい部分が実際問題として存在します。
そこで今回の記事ではこのボトルネックを「CData JDBC Driver」を活用することで解消します。
Mendix では Database Connectorという仕組みが標準提供されており、このコネクターを介してSQL ServerやMySQLなどにアクセスできるようになっています。
そして、実はこのDatabase Connector、内部ではJDBCが利用されているため、このコネクターとCDataが提供されているJDBC Driverラインナップを通じて、各種クラウドサービスのAPIにアクセスすることができるようになります。
とは言っても、説明だけではイメージできない部分もあると思うので、実際にアプリを作成してみましょう。
シナリオ
今回作成するアプリケーションは Salesforce から取得したデータを表示する一覧画面です。
対象となるSalesforceのデータは「Account(取引先)」です。ここからデータを取得してアプリで一覧を表示します。
手順
Mendix側の環境準備
今回は上記で紹介している Mendix Studio Proを用いてアプリを開発します。なので事前にMendix Studio Proをインストールしておきます。
CData JDBC Driverのインストール
Mendix側の環境構成と併せて、CData Salesforce JDBC Driver もセットアップします。トライアルは以下のURLから入手できます。
ダウンロード後、exeファイルを実行し、セットアップを進めます。
インストール完了後、「C:\Program Files\CData」にCData JDBC Driverのフォルダが作成され、JDBCのjarファイルがSalesforceのフォルダのlib配下に作成されます。
アプリの作成
それではアプリの作成を始めていきます。まず、Database Connectorが利用できる状態のアプリを作成しましょう。
Mendix Studio Proを立ち上げて「Create New App」をクリックします。
「Blank Web App」で公開は作成してみます。
「Use this starting point」をクリックして進めます。
任意のApp nameを指定して作成しましょう。また、後ほどJDBC Driverを配置するため、「Disk location」の情報を控えておきます。
これでまっさらなアプリが作成できました。
アプリにDatabase Connectorを追加
続いて作成したアプリにDatabase Connector のモジュールを追加します。
以下のURLからDatabase Connector がダウンロードできるので、ここでダウンロードされた「mpk」ファイルをインポートします。
「mpk」ファイルを選んだら「Import」をクリックします。
これでアプリの画面に Database Connector が表示されればOKです。
Mendix Studio ProにJDBC Driverを追加
併せてこの Database Connector でCData JDBC Driverを利用できるようにするために、JDBC Driver の jarファイルをプロジェクトに配置します。
事前に控えておいた Medix のプロジェクトフォルダに「userlib」というフォルダがあるので、「cdata.jdbc.salesforce.jar」と「cdata.jdbc.salesforce.lic」の2つのファイルを配置します。
これで、Database Connector で CData JDBC Driverが使えるようになります。
データモデルを作成
それでは実際にアプリを作り込んでいきましょう。
Database Connectorからデータを読み込ませて一覧画面に表示するためには、その読み込ませるデータのデータモデルを予め定義しておく必要があるので、作成していきます。
今回は「MyFirstModule」の「Domain model」にEntityを追加します。
ここでEntityの名前、項目の定義を追加していきます。
CData JDBC Driverを通じたテーブル定義の情報はDbVisualizerなどのツールで確認しておくとスムーズに構成できると思います。
今回は以下のようなEntityを定義しました。
JDBC URLの定数を作成
続いて、Database Connectorで使うためのJDBC URLの定数を作成しておきましょう。
MyFirstModuleに「Constant」を追加し
任意の名称で作成します。
Default valueに接続文字列を「jdbc:salesforce:User=myUser;Password=myPassword;Security Token=myToken;」のように指定して作成します。
Salesforceの接続情報 | 設定項目 | 備考 |
---|---|---|
ユーザID | User | |
パスワード | Password | |
セキュリティートークン | Security Token | 取得方法はこちら |
Salesforceのデータを取得する Micoflow を作成
それでは作成したEntityを元に、Database Connector からデータを取得する Micoflow を作成しましょう。
今回のMicoflowは最終的に Account Entity の Listを返すような処理になります。最終的な作成イメージは以下のようになります。
「MyFirstModule」から「Add microflow」をクリックし
任意の名称でMicoflowを作成します。
最初に予め定義しておいたEntityのObjectを作成します。
「Creat Object」を Micoflow に配置し
「Entity」の「Select」ボタンから
事前に定義した Entity を選択します。
任意のObject nameを入力して、「OK」をクリックします。
続いてDatabase Connectorからデータを取得するための「Execute Query」をMicoflowに配置します。
以下のような画面が表示されるので、まずInputをそれぞれ定義していきます。
「jdbc url」では予め定義しておいた定数を指定しておきます。
SQL は Salesforce からデータを取得するためのクエリを記述しておきます。
「User name」や「Password」は今回不要なので「empty」を設定し、Result objectに前のフローで作成したObjectを指定します。
あとは任意のList nameを指定すればOKです。
最後にMicoflowの出力結果を定義します。
「End Event」をダブルクリックで開いて「Type」から「List」を選択し、事前に定義したEntityを紐付けます。
そして、Return valueに「Execute Query」の出力結果を指定しましょう。
これで、Salesforce からデータを取得する Micoflow の完成です。
List を作成・Micoflowと紐付け
では Micoflow から取得した結果を表示する画面を作成しましょう。「Home_web」をダブルクリックで開いて
一覧画面用として今回は「Data grid」を配置します。
「Data grid」を配置したら設定画面を表示し、「Data source」でMicoflowを紐付けていきます。
先程作成したMicoflowを選択しましょう。
これで「OK」をクリックします。
OKをクリックすると、最初にカラムの自動検出について確認されるので「Yes」をクリックします。
続いて各種Data gridのコントローラーを生成するかの確認がありますが、今回はそれぞれのロジックを構成しないので、「No」をクリックします。
すると、以下のようにシンプルなデータグリッド画面が作成されます。
これで完成です。
実行
それでは実際に正常に動作するか確認してみましょう。
「Publish」ボタンをクリックすることで、作成したアプリが動作する状態が整います。
完了したら「View App」をクリックして、アプリを開いてみましょう。
以下のようにSalesforce のデータ一覧が表示されていればOKです! このようにSalesforce のAPIを意識することなく、ローコードでSalesforce 連携アプリが作成できました。
おわりに
とても手軽に Mendix で Salesforce のデータを扱えることがイメージできたのではないかと思います。
今回はデータの読み取りだけでしたが、INSERT/UPDATE/DELETEなども行うことができますし、CData では Salesforce 以外にも数多くの JDBC Driver を提供しています。
kintone や Sansan といった日本のクラウドサービスにも対応しているので、是非お好みのデータソースで試してみてください。
https://www.cdata.com/jp/jdbc/