Ruby binding SFDC
あまりRubyにはなれていないのだが、ちょっと感覚で使ってみた。
画面を拡大
画面を見て分かるとおり、クライアントのソースコードが非常に少ない。Binding 用に使用している RForce.rb の中身も 220 行ぐらいと非常に簡素化されています。(もちろん、ライブラリが充実しているのでしょけど)
この実装で用意したものは下記のリソースです。
・RForce
・Rubygems
・Builder
RForce はライトウエイト、軽量な Ruby ライブラリです。Salesforce に Web サービスにてバインディングしてくれる有難いものです。RubyGem(通称gem)は Ruby のライブラリを簡単にインストールするツールです。gem は Rails や Rails 関連ライブラリのインストールで重宝しますので、ぜひこの際に入れておきましょう。また、Builder は何か?と思い builder.rubyforge をのぞいてみると↓とある。
"Provide a simple way to create XML markup and data structures."
要は XML のマークアップやらデータ構造を簡単にやってくれるものであろう。
1.Eclipse で Ruby 環境を用意
Ruby関係は・・・Ruby1.9, Rubygems0.9.2 そして Builder2.0 を使用する。Eclipse は 3.2.2で現時点の最新版。Eclipse のオプション->Update からダウンロードを行う。Path を通す。そして gems と builder ライブラリを Ruby Path の lib フォルダに投入して設定完了。
2.Ruby を動かす
設定は終わった、が、動くのか?と思った。
ほとんど触ったことのない Ruby。くじけずどうにかコーディング。試しに・・・久々に思い出したシングルトンパターン。デザインパターンはココしばらくご無沙汰なので、思い出すのに少しかかった。
全体で約 30 行。シングルトンクラスだけだったら 20 行。さすがシンプルトン。
-----------------------------------
無事に動いた。実行結果はもちろん下の図のとおり。
4.Salesforceに接続
次に SFDC へ通信を試みる。RForce のソースを見ると、これもまた短い。
------------
5.Next Step
RForce.rb のソースをのぞくと約173行目に SFDC 接続先のパスが書いてありました。
'/services/Soap/c/6.0'
どうも今回接続は version6.0 らしい。現最新バージョンが8.0なので、そちらに接続先を変更。
'/services/Soap/c/6.0' -> '/services/Soap/c/8.0'
これで実行すると上手かなかった。in `RForce::Binding#login': Incorrect user name / password (RuntimeError) のエラーが表示される。
8.0 のエンドポイント関係で何かしらログイン部分が違うのでしょう。また今度みてみることにします。
画面を拡大
左が Eclipse にて実行した結果。無事にRubyからSFDCサーバにバインディングでき、データが更新されています。
画面を見て分かるとおり、クライアントのソースコードが非常に少ない。Binding 用に使用している RForce.rb の中身も 220 行ぐらいと非常に簡素化されています。(もちろん、ライブラリが充実しているのでしょけど)
この実装で用意したものは下記のリソースです。
・RForce
・Rubygems
・Builder
RForce はライトウエイト、軽量な Ruby ライブラリです。Salesforce に Web サービスにてバインディングしてくれる有難いものです。RubyGem(通称gem)は Ruby のライブラリを簡単にインストールするツールです。gem は Rails や Rails 関連ライブラリのインストールで重宝しますので、ぜひこの際に入れておきましょう。また、Builder は何か?と思い builder.rubyforge をのぞいてみると↓とある。
"Provide a simple way to create XML markup and data structures."
要は XML のマークアップやらデータ構造を簡単にやってくれるものであろう。
1.Eclipse で Ruby 環境を用意
Ruby関係は・・・Ruby1.9, Rubygems0.9.2 そして Builder2.0 を使用する。Eclipse は 3.2.2で現時点の最新版。Eclipse のオプション->Update からダウンロードを行う。Path を通す。そして gems と builder ライブラリを Ruby Path の lib フォルダに投入して設定完了。
2.Ruby を動かす
設定は終わった、が、動くのか?と思った。
ほとんど触ったことのない Ruby。くじけずどうにかコーディング。試しに・・・久々に思い出したシングルトンパターン。デザインパターンはココしばらくご無沙汰なので、思い出すのに少しかかった。
全体で約 30 行。シングルトンクラスだけだったら 20 行。さすがシンプルトン。
-----------------------------------
# Ruby Singleton Class-----------------------------------
class Singleton
private_class_method :new
# Class Variables
@@singletonObject = nil
# Returns this Singleton Object.
# If already created, return the one.
def Singleton.create
if @@singletonObject == nil
@@singletonObject = new
puts "シングルトン・オブジェクトを作成しました"
end
return @@singletonObject
end
end
puts "シングルトン・スタート"
obj1 = Singleton.create
obj2 = Singleton.create
if (obj1 == obj2)
puts "obj1とobj2は同じインスタンスです。"
else
puts "obj1とobj2は同じインスタンスではありません。"
end
puts "終了"
無事に動いた。実行結果はもちろん下の図のとおり。
4.Salesforceに接続
次に SFDC へ通信を試みる。RForce のソースを見ると、これもまた短い。
------------
require 'RForce'
binding = RForce::Binding.new 'na3.salesforce.com'
binding.login 'username', 'pw' # username, pw はお使いのものを入力
account_id2 = "0015000000HJLgF";
opportunity = {
:accountId => account_id2,
:amount => "7777210.00",
:name => "New sale for UE +1000",
:closeDate => "2007-09-01",
:stageName => "Closed Won",
:description => "From Ruby Client"
}
puts "Start connecting to SFDC..."
binding.create 'sObject {"xsi:type" => "Opportunity"}' => opportunity
puts "Update success - opporunity -"
たったこれだけ。RForce::Binding.new 'na3.salesforce.com' にて接続先の組織 URL を指定し、後は login + 商談 create。これで完了。実際に結果を web で確認してみると無事に Done.
5.Next Step
RForce.rb のソースをのぞくと約173行目に SFDC 接続先のパスが書いてありました。
'/services/Soap/c/6.0'
どうも今回接続は version6.0 らしい。現最新バージョンが8.0なので、そちらに接続先を変更。
'/services/Soap/c/6.0' -> '/services/Soap/c/8.0'
これで実行すると上手かなかった。in `RForce::Binding#login': Incorrect user name / password (RuntimeError) のエラーが表示される。
8.0 のエンドポイント関係で何かしらログイン部分が違うのでしょう。また今度みてみることにします。