ノーコードでクラウド上のデータとの連携を実現。
詳細はこちら →JRuby を使って Salesforce のデータを操作する:CData JDBC Driver
こんにちは。CData Software Japan リードエンジニアの杉本です。
最近 JRuby というJVM上で動かすことができる Rubyインタプリタ の Java実装を知りました。
以下のWikiでも書かれている通り、JRuby は Javaプラットフォームのクラスを参照して、利用することが可能になっています。面白いですね。
include Java frame = javax.swing.JFrame.new() frame.getContentPane().add(javax.swing.JLabel.new('Hello, World!')) frame.setDefaultCloseOperation(javax.swing.JFrame::EXIT_ON_CLOSE) frame.pack() frame.set_visible(true)
そこで今回はJRuby から CData JDBC Driver を使って、Salesforceに接続するというのをやってみました。
手順
必要なもの
- JRuby
- CData Salesforce JDBC Driver
- Salesforce アカウント(トライアルの取得方法はこちらを参照)
今回は予めJDKがインストールしてあるWindowsマシンで試しています。
jRuby本体の入手
以下からJRuby本体を入手して、任意のフォルダに展開しました。
https://www.jruby.org/download
環境変数でPathを通して実行できる状態にしておきます。
> jruby -version > jruby 9.1.17.0 (2.3.3) 2018-04-20 d8b1ff9 OpenJDK 64-Bit Server VM 11.0.1+13 on 11.0.1+13 +jit ```
Salesforce JDBC Driver のインストール
続いて、CData Salesforce JDBC Driver をインストールします。トライアルは以下のURLから入手できます。
https://www.cdata.com/jp/drivers/salesforce/jdbc/
ダウンロード後、exeファイルを実行し、セットアップを進めます。
インストール完了後「C:\Program Files\CData\CData JDBC Driver for Salesforce 2019J\lib」にDriver本体であるjarファイルが生成されます。
JRuby で CData JDBC Driver へアクセスする
まずシンプルなプログラムでアクセスしてみたいと思います。JRubyはJavaのクラスやメソッドをそのまま呼び出せるので、CData JDBC Driverのヘルプに書かれているコードを参考に実装することができます。
http://cdn.cdata.com/help/RFE/jp/jdbc/pg_JDBCqueries.htm
単純にAccount一覧を取得するプログラムを書いてみました。
実行すると、以下のようにJDBC経由でデータを取得できました。
>jruby -S Sample.rb 0012x000009VGSvAAO GenePoint CDataUpdate 0012x000009VGStAAO United Oil & Gas, UK 0012x000009VGSuAAO United Oil & Gas, Singapore 0012x000009VGSlAAO Edge Communications 0012x000009VGSmAAO Burlington Textiles Corp of America 0012x000009VGSnAAO Pyramid Construction Inc. 0012x000009VGSoAAO Dickenson plc 0012x000009VGSpAAO Grand Hotels & Resorts Ltd 0012x000009VGSrAAO Express Logistics and Transport 0012x000009VGSsAAO University of Arizona 0012x000009VGSqAAO United Oil & Gas Corp. 0012x000009VGSwAAO sForce
システムテーブル参照・プリペアドステートメント・INSERT・UPDATE
JDBC Driverは各種テーブルやカラム情報を取得するためのシステムテーブルや、プリペアドステートメント・INSERT・UPDATEもサポートしています。
ざっといろんな機能を試したソースコードが以下の通りになります。
基本的にはJDBC実行の文法さえおさえておけば、Javaと同様のアプローチで実行できます。
以下のような結果を得ることができました。問題なくJavaからの実行と同等の機能が得られています。
> jruby -S SampleCodeForSalesforce.rb関連コンテンツ