SugarCRM

第10回 Webサービスを利用してほかのシステムと連携する


河村 嘉之
オープンソースCRM株式会社
2009/7/8

オープンソースのSFA/CRMアプリケーション「SugarCRM」は、利用者に合わせてカスタマイズを加えていくことで、より真価を発揮することができます。この連載では、ソースコードの内容を把握した上でさまざまなカスタマイズを加えていくまでを紹介します(編集部)

 前回「自分のホームページをカスタマイズする」では、SugarCRMの「ホームページ」のカスタマイズ方法と、そこに情報を表示するための小窓「ダッシュレット」の作成方法について紹介しました。

 このように、SugarCRMを自分に合わせてカスタマイズして使い続けると、多くのデータがシステムに蓄積されていきます。このようなデータは、SugarCRMだけでなくほかのシステムにとっても有用であることが少なくありません。そのため、外部からSugarCRMのデータを利用できると便利です。

 SugarCRMはWebサービスインターフェイスを提供しており、これを利用してSugarCRMに蓄積されたデータを参照・変更することができます。今回は、このWebサービスインターフェイスについて説明します。

 最初に、Webサービスについて簡単におさらいしましょう。Webサービスは、広い意味では、ネットワークを経由してサービスを呼び出す仕組みです。一般的には、SOAPと呼ばれるXML形式で記述されたメッセージの送受信を行う仕組みで、HTTPなどのインターネットで多く使われる技術の上で動作します。これらの技術を用いて、異なるサーバ間で、データのやりとりを行うことができます。また、HTTP、XMLなどのインターネット上の標準技術を用いていることにより、実装言語に依存しないサービス間の連携が可能になります。つまり、この技術を使うことにより、PHPで記述されているSugarCRMのサービスを、JavaやC#のクライアントから呼び出すことが可能になります。

SugarCRMのWebサービス

 SugarCRMでは、SOAP形式のWebサービスを提供しています。Webサービスでは、アクセス先を「エンドポイント」と呼びますが、SugarCRMのサービスのエンドポイントは、以下のURLになります。

http://<サービスのホスト名>/<Sugarのインストール先>/soap.php

 また、Webサービスでは、そのサービスがどのようなサービスなのかをXML形式で記述した情報を、「WSDL(Web Services Description Language)」として提供しています。これを用いることによって、サービスにアクセスするクライアントを自動で生成することも可能です。SugarCRMのWebサービスのWSDLは、以下のURLから取得できます。

http://<サービスのホスト名>/<Sugarのインストール先>/soap.php?wsdl

 ここからは、SugarCRMが提供する個々のサービスについて説明していきます。

test:接続テスト

 サービスへの接続テストをします。引数に指定した文字列をそのまま戻り値として返します。

login:ログイン

 SOAPインターフェイスを通してSugarCRMのシステムにログインします。

 引数には、認証情報とアプリケーション名を指定します。認証情報は、ユーザー名、パスワード、利用するサービスのバージョン(現状では1.0を指定)をそれぞれ文字列で表した複合型のデータです。ユーザー名はSugarCRMにログインするときに利用するものです。パスワードには、SugarCRMにログインするときに利用するパスワードのダイジェストをMD5で生成したものを利用します。アプリケーション名は、呼び出し元のアプリケーションを特定する任意の文字列です。

 戻り値として、id属性にセッションID、error属性にエラー情報が格納された複合型のデータが返ってきます。ログインに成功するとセッションIDが取得でき、ログインに失敗するとエラー情報が戻ってきます。

logout:ログアウト

 SugarCRMのシステムからログアウトします。

 引数には、セッションIDを指定します。もしログアウトに失敗した場合はエラー情報が返ってきます。

get_entry_list:レコードの検索

 条件を指定して、その条件に合うレコードを検索します。

 引数には、セッションID、モジュール名、検索文、ソートするフィールド、レコードのオフセット、取得するフィールド、最大件数を指定します。モジュール名は、AccountsなどSugarCRMのモジュール名を指定します。検索文は「accounts.name LIKE ‘%佐藤商事’」のように文字列で指定します。ソートするフィールドも「accounts.name」のように文字列で指定します。取得するフィールドは、フィールド名を文字列の配列として指定します。ここで取得するフィールドを絞ることにより、無駄なフィールドは取得しなくなるため、通信コストを軽減できます。

 戻り値は、検索結果が複合型で返ってきます。result_count属性には戻り値として返ってきたレコードの数、next_offset属性には次のリクエストの際のオフセット、field_list属性には返ってきたレコードのフィールドのメタデータ、entry_list属性には実際の検索結果、error属性にはエラー情報が格納されています。

 field_list属性のフィールドのメタデータはname属性でフィールド名、type属性で型、label属性で各言語に対応したフィールドのラベル、required属性で必須フィールドかどうか(1が必須、0は必須ではない)を格納した複合型の配列として取得できます。

 entry_list属性は、id属性でそのエントリーのID、module_name属性でモジュール名、name_value_list属性でそのレコードの各フィールドの値を格納した複合型の配列として取得できます。name_value_list属性に格納されている各フィールドのデータは、name属性でフィールド名、value属性でその値が取得できます。

get_entry:レコードの取得

 レコードのIDを指定して、該当するレコードを取得します。

 引数には、セッションID、モジュール名、レコードID、取得するフィールドを指定します。セッションID、モジュール名、レコードIDは文字列、取得するフィールドは文字列の配列で指定します。

 戻り値は、レコード情報が複合型で返ってきます。field_list属性には取得したフィールドの情報、entry_list属性には取得したレコードの情報が配列で(ここでは1件ですが配列として返ります)、error属性にはエラー情報が格納されています。これらの属性の構成は、get_entry_listサービスの戻り値で得られるものと同じです。

 また、get_entriesという名前のサービスでは、IDを配列で指定することにより、複数のレコードを取得することができます。

set_entry:レコードの更新

 指定した値で、レコードを更新・作成します。

 引数には、セッションID、モジュール名、更新するレコードの情報を指定します。更新するレコードの値は、get_entry_listサービスの戻り値の中に含まれていたname_value_listと同様の形式で指定します。この値の中でIDを指定して、そのIDに対応するレコードが存在する場合は該当するレコードが更新され、存在しない、もしくは指定していない場合は新しいレコードが作成されます。

 戻り値として、id属性に更新したレコードのレコードID、error属性にエラー情報が格納された複合型が返ってきます。

 複数のレコードを同時に更新したい場合は、set_entriesサービスが利用できます。このサービスでは、更新するレコードの情報を配列で指定します。また、戻り値のid属性にはレコードIDが配列で戻ってきます。

get_module_fields:モジュールのフィールドの取得

 モジュールのフィールドのメタデータを取得します。

 引数には、セッションID、モジュール名をそれぞれ文字列で指定します。

 戻り値は、フィールドのメタデータが複合型で返ってきます。この構造はget_entry_listのフィールド情報で取得したものと同様です。

第9回へ
1/2

Index
徹底解剖、SugarCRM(10)
 Webサービスを利用してほかのシステムと連携する
Page 1
 SugarCRMのWebサービス
  Page 2
 クライアントのサンプル作成
 Webサービスを呼び出すクライアントをJavaで作成
 Webサービスを呼び出すクライアントをPHPで作成
 エラー処理を追加する
 コラム SugarCRMの新しいWebサービス
 まとめ

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フォーラム全記事インデックス


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間