SugarCRM

第6回 Beanを関連付ける


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

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


 SugarCRMは、MVCパターンに基づいてアプリケーションを設計しています。この連載では、第3回でMVCパターンに基づいたアプリケーションの基本動作、第4回では表示を担当するビューの部分について説明しました。

 そして、前回の第5回からはモデルの部分に注目して、Beanのフィールドとデータベースの関連付けの定義方法とそのカスタマイズの仕組みを説明しました。今回は、モデルに関するトピックの2回目として、BeanとBeanの関連付けについて説明します。

 ここでは、前回に引き続き取引先担当者(Contacts)モジュールを例に用います。

関連の定義

 Bean間の関連を定義する方法として、「各モジュールの定義ファイルであるvardefs.phpの中に定義する方法」と「関連メタデータを作成する方法」があります。これら2つの方式についてそれぞれ説明していきます。

vardefs.phpの中に定義する方法

 vardefs.phpでは、fields、relationshipsなどの項目で、Beanに関する設定情報が定義されています。Bean間の関連付けは、relatoinships属性で定義されます。最初にこの定義情報を見てみましょう。

 relationships項目には、Bean間の関連の情報が配列で定義されます。この配列の1つの要素が1つの関連情報を表しており、そこにそれぞれの設定を記述していきます。この定義では関連する2つのモジュールを左右に並べて結び付け、「左側のモジュールが何で、右側のモジュールが何」というように定義を記述します。

 ここで定義できる代表的な項目は以下のようになります。

項目名 説明
lhs_module
左側のモジュール名
lhs_table
左側のテーブル名
lhs_key
左側のテーブルでキーとして用いられる項目
rhs_module
右側のモジュール名
rhs_table
右側のテーブル名
rhs_key
右側のテーブルでキーとして用いられる項目
type
関連のタイプ。one-to-many(1対多)、many-to-many(多対多)などを指定
表1 vardefs.phpのrelationships項目で定義できる項目

 以下のコードでは、左側のモジュールが取引先担当者(Contacts)、右側のモジュールがリード(Leads)で、contactsテーブルのidの値をleadsテーブルのcontact_idが指しているような、1対多の関連を示しています。

<?php
...
$dictionary['Contact'] = array(
  ...
  'fields' => array (
    ...
  ),
  ...
  'relationships' => array (
    ...
    'contact_leads' => array(
      'lhs_module' => 'Contacts',
      'lhs_table' => 'contacts',
      'lhs_key' => 'id',
      'rhs_module' => 'Leads',
      'rhs_table' => 'leads',
      'rhs_key' => 'contact_id',
      'relationship_type' => 'one-to-many'
    ),
    ...
  ),
  ...
);
...
?>

 そして、この関連を保持するフィールドとして、fields項目の中にleadsを定義しています。このフィールドの定義情報のtypeとしてlinkを指定し、relationshipに以下のrelationships項目の中で定義されているcontacts_leadsを指定することにより、これがcontacts_leadsで指定された関連を保持するフィールドであることを定義しています。

<?php
...
$dictionary['Contact'] = array(
  ...
  'fields' => array (
    ...
    'leads' => array (
      'name' => 'leads',
      'type' => 'link',
      'relationship' => 'contacts_leads',
      'source' => 'non-db',
      'vname' => 'LBL_LEADS',
    ),
    ...
  ),
  ...
  'relationships' => array (
    ...
  ),
  ...
);
...
?>

 この形式の関連の定義では、関連テーブルを利用するような関連を記述できません。従って、2つのモジュールに対応するテーブルのみで関連を保持できる、1対多のような関連に利用されます。

コラム■スタジオやモジュールビルダーにおける関連の扱い

 今回の記事では、SugarCRMのBean間の関連に関する動作を詳しく説明するため、ソースコードをベースに説明していきます。一方、SugarCRMはスタジオ機能やモジュールビルダー機能を利用して、グラフィカルに設定を編集できる機能も持っています。ここでは、これらの機能で関連をどのように扱うか説明します。

 まずは、管理メニューからモジュールビルダーを起動してみましょう。モジュールビルダーで作成中のモジュールを選択します。ここで、「関連の表示」ボタンを押すと、現在そのモジュールが持っている関連が表示されます。ここで、「関連の追加」ボタンを押すと関連エディタが開かれるので、ここで関連を追加することができます。また、すでに作成した関連をクリックすると関連の編集や削除を行うこともできます。

画面1
画面1 モジュールビルダーでの関連の編集

 また、サブパネルに表示する項目も、一覧ビューなどと同様にスタジオとモジュールビルダー上で編集することができます。

 SugarCRMバージョン5.0で作成できる関連は、モジュールビルダーで作成したモジュールのみで、作成される関連は多対多のみですが、最新バージョンの5.2では、スタジオとモジュールビルダーのどちらでも関連を操作する機能が充実し、既存のモジュールへの関連の追加や多対多以外のタイプの関連の定義もできるようになりました。

 最新バージョン5.2の日本語版は現在公開に向けて作業中ですのでご期待ください。


第5回へ
1/3

Index
徹底解剖、SugarCRM(6)
 Beanを関連付ける
Page 1
 関連の定義
 コラム スタジオやモジュールビルダーにおける関連の扱い
  Page 2
 関連の定義(続き)
  Page 3
 関連の表示
 今回のまとめ

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 記事ランキング

本日 月間