最終回 クラウドコネクタで外部サービスのデータを取り込む
河村 嘉之
オープンソースCRM株式会社
2009/8/5
コネクタ実装ファイルの作成
次にコネクタ実装ファイルを作成します。クラウドコネクタでは、この実装クラスのベースとなるクラスを提供しています。
ベースクラスには、REST形式で提供されているサービスへアクセスする「ext_restクラス」とSOAP形式で提供されているサービスへアクセスする「ext_soapクラス」があります。ここでは、REST形式のサービスにアクセスするので、ext_restクラスを継承したクラスを作成します。このクラス名は、ext_rest_zipcodeとなります。この名前は配置したディレクトリ(この例ではext/rest/zipcode)を基に決定します。
このクラスでは、検索条件を指定してサービスからデータの一覧を取得する「getListメソッド」、キーを指定してサービスから1件のデータを取得する「getItemメソッド」を実装します。getListメソッドの第1引数にはコネクタの検索条件に入力された値が配列として渡されて、戻り値はデータの配列になります。データは、vardefs.phpの中で指定したフィールドをキーとして持つ配列です。getItemメソッドの第1引数にはid属性にデータを特定する値が格納された配列が渡されて、戻り値は1件のデータになります。
コンストラクタでは、親クラスのコンストラクタの呼び出しに加えて、「_enable_in_wizard」と「_enable_in_hover」の2つの変数を設定しています。「_enable_in_wizard」は、コネクタが「データを取得」ウィザードで利用可能かを指定するものですが、「データを取得」ウィザードはSugar Community Editionでは利用できません。「_enable_in_hover」は、指定したフィールドの上にマウスを置いた場合、コネクタから取得した値を表示するかどうかを指定するものです。どちらもbooleanで指定し、trueを指定した場合は、それらの機能が有効になります。
<?php |
言語ファイルには、以下のようにvardefs.phpで指定したフィールドに対するラベルと設定画面の入力フィールドのラベルを設定します。
<?php |
formatters以下のディレクトリには、フォーマット実装ファイルとともに表示用のテンプレートやアイコンなどを配置します。ここでは、コネクタに対応するフィールドの横に表示されるアイコンにマウスを合わせたときにポップアップを表示するようにします。
ポップアップを生成するコードを以下に記述します。このクラスのファイルは、formatters/ext/rest/[コネクタ名]/[コネクタ名].phpになります。クラウドコネクタでは、ポップアップ表示用のベースクラスとして「default_formatter」を用意しています。ここでは、このクラスを継承してポップアップ用のクラスを作成します。このクラスのgetDetailViewFormatメソッドでマウスを合わせたときに表示される内容を作成し、getIconFilePathメソッドでコネクタに対応するフィールドに表示されるアイコンのファイルへのパスを指定します。
getDetailViewFormatメソッドの中で、表示される内容を生成する際に直接HTMLの内部を生成してもいいのですが、表示部分に関しては、テンプレートに分けてしまった方がコードの可読性が上がります。そこでこのコードでは、テンプレートを利用して表示の内容を生成しています。ここで読み込まれるテンプレートは、formatters/ext/rest/[コネクタ名]/tpls/default.tlpになります。
<?php |
ここで、テンプレートの中身を見てみましょう。このテンプレートでは、表示用のHTMLコードの一部と、JavaScriptのコードを記述します。JavaScriptには、コネクタのアイコンにマウスを合わせた際に呼び出される関数を定義します。
この関数の名前は、コネクタの名前に従って決定します。例えば、コネクタのコードがformattersディレクトリ以下のext/rest/zipcode以下に配置されている場合は、show_ext_rest_zipcodeという名前になります。この関数では、SugarCRMのサーバにアクセスし、クラウドコネクタを経由して外部のサービスから取得したデータを非同期に取得し、その結果をダイアログに表示する処理を記述しています。
<div style="visibility:hidden;" id="ext_rest_zipcode_popup_div"></div> |
また、このJavaScriptコードからSugarCRMにアクセスして、データを取得する際に呼び出されるアクションを作成します。上記JavaScriptでは、ConnectorsモジュールのRetrieveAddressアクションとして呼び出していましたので、以下のコードをcustom/modules/Connectors/RetrieveAddress.phpとして配置しておきます。このコードでは、クラウドコネクタを取得し、そのgetListメソッドを呼び出して、外部サービスからデータを取得し、その結果をJSONで返しています。
<?php |
結びに代えて
今回は、クラウドコネクタを利用して外部のサービスからデータを取得し、それをSugarCRMで利用する方法を説明しました。クラウドコネクタを利用することにより、SugarCRMのフィールドの上に外部のサービスから取得したデータを重ねて表示するといったことが可能になります。
クラウドコネクタは、SugarCRM 5.2から導入された新しい機能です。そのため現時点ではまだ、マウスを合わせた際に取得したデータを表示する処理やJavaScriptからデータを取得するために呼び出すアクションなどで、多くのコードを記述しなければいけません。今後のバージョンではこのあたりの処理をもっと簡単に記述できるよう、フレームワークが進化することに期待したいと思います。
今回で本連載は最後になりますが、オープンソースで提供されているCRMアプリケーションSugarCRMの最大の特徴であるカスタマイズのしやすさをご理解いただけたのではないかと思います。今後もぜひSugarCRMを活用してください。
2/2 |
|
||||
|
Linux Square全記事インデックス |
Linux Squareフォーラム 仮想化技術関連記事 |
連載:実践! Xenで実現するサーバ統合 有力な仮想化技術として注目を集めるようになった「Xen」。このXenを活用してサーバ統合を実践していく手順を具体的に紹介します |
|
特集:サーバの仮想化技術とビジネス展開の可能性 jailからUML/VMwareまで 1台のマシンで複数のサーバを動かす「仮想化技術」。VMwareやUMLの登場により、WebサイトだけでなくOS自体を仮想化できるようになった |
|
特集:仮想化技術のアプローチと実装 VMwareから要注目技術Xenまで 1台のサーバで複数の仮想マシンを実行する仮想化技術は、空間コストを引き下げる可能性を持つ。最新の仮想化技術を概観してみよう |
|
特集:仮想OS「User Mode Linux」活用法 技術解説からカーネルカスタマイズまで Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説 |
|
特集:仮想化技術の大本命「Xen」を使ってみよう インストール & Debian環境構築編 高いパフォーマンスで本命の1つとなった仮想マシンモニタ「Xen」。日本語による情報が少ないXenを、実際に動かしてみよう |
|
特集:仮想化技術の大本命「Xen」を使ってみよう Xen対応カスタムカーネル構築編 Xen環境およびその上で動作する仮想マシン用カーネルを自分で構築しよう。これにより、自由にカスタマイズしたカーネルを利用できる |
|
特集:IPv6、UML、セキュリティ機能の統合 全貌を現したLinuxカーネル2.6[第4章] 今回は、これまでに紹介し切れなかった機能を一気に紹介する。これを読めば、カーネル2.6の正式リリースが楽しみになるだろう |
|
Linux Squareプロダクトレビュー VMware Workstation 4 PC/AT互換機エミュレータとして不動の地位を築いたVMware。その新バージョンがリリースされた。新機能を早速試してみよう |
|
古くて新しい「サーバ仮想化技術」の行方 サーバ仮想化を実現するための技術がソフトウェア、ハードウェアの両面で出そろってきた。ハイパーバイザーのさらなる高速化に向けた動きを紹介する |
|
Linux Squareフォーラム全記事インデックス |
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|