第8章
Content Managementイベントとの連携動作
この章では、Content Management (CM)サブシステムの操作およびアクティビティに関連するイベントの処理方法について説明します。この章は、次の節から構成されています。
この章では、exteNd Directorイベントモデルおよびイベント処理について熟知していることを前提としています。詳細については、『exteNd Directorアプリケーションの開発』のイベントの操作に関する章を参照してください。

CMイベントについて
CMイベントはexteNd Directorイベントモデルフレームワークの拡張子で、「状態変更イベント」、「イベントプロデューサ」、および「イベントリスナ」(拒否権付きリスナを含む)で構成されます。CMイベントのAPIは、次のパッケージに定義されています。
com.sssw.cm.event.api
com.sssw.cm.event.util

CMイベントタイプ
APIは、ドキュメント、フォルダ、およびその他の要素をはじめ、データのインポートやエクスポートなどの一般的なアクティビティについての、CM操作に関連する一連の状態変更イベントを定義します。イベントIDは、個々のイベントクラスのほかにcom.sssw.cm.event.api.EbiConstantsインタフェースにも表示されます。さらに、状態変更定数がcom.sssw.fw.event.api.EboStateChangeEventに定義されています。
CMサブシステムに定義されているイベントのリストを次に示します。
イベントタイプ
|
操作
|
イベント定数
|
カテゴリ
|
追加されました
|
EVENT_ID_CATEGORY_ADDED
|
コンテンツが一覧表示されました
|
EVENT_ID_CATEGORY_CONTENTS_LISTED
|
コピーされました
|
EVENT_ID_CATEGORY_COPIED
|
移動されました
|
EVENT_ID_CATEGORY_MOVED
|
削除されました
|
EVENT_ID_CATEGORY_REMOVED
|
ドキュメントが削除されました
|
EVENT_ID_DOC_REMOVED_FROM_CATEGORY
|
メタデータが取得されました
|
EVENT_ID_CATEGORY_RETRIEVED
|
メタデータが更新されました
|
EVENT_ID_CATEGORY_UPDATED
|
データのエクスポート/インポート
|
データがエクスポートされました
|
EVENT_ID_DATA_EXPORTED
|
データがインポートされました
|
EVENT_ID_DATA_IMPORTED
|
ドキュメント
|
追加されました
|
EVENT_ID_DOC_ADDED
|
カテゴリに追加されました
|
EVENT_ID_DOC_ADDED_TO_CATEGORY
|
チェックインされました
|
EVENT_ID_DOC_CHECKED_IN
|
チェックアウトされました
|
EVENT_ID_DOC_CHECKED_OUT
|
コピーされました
|
EVENT_ID_DOC_COPIED
|
移動されました
|
EVENT_ID_DOC_MOVED
|
発行されました
|
EVENT_ID_DOC_PUBLISHED
|
削除されました
|
EVENT_ID_DOC_REMOVED
|
取得されました
|
EVENT_ID_DOC_RETRIEVED
|
ロールバックされました
|
EVENT_ID_DOC_ROLLED_BACK
|
チェックアウトが解除されました
|
EVENT_ID_DOC_UNCHECKED_OUT
|
ロック解除されました
|
EVENT_ID_DOC_UNLOCKED
|
発行解除されました
|
EVENT_ID_DOC_UNPUBLISHED
|
更新されました
|
EVENT_ID_DOC_UPDATED
|
リンクが追加されました
|
EVENT_ID_DOC_LINK_ADDED
|
リンクが削除されました
|
EVENT_ID_DOC_LINK_REMOVED
|
リンクが取得されました
|
EVENT_ID_DOC_LINK_RETRIEVED
|
リンクが更新されました
|
EVENT_ID_DOC_LINK_UPDATED
|
リンクが一覧表示されました
|
EVENT_ID_DOC_LINKS_LISTED
|
ドキュメントタイプ
|
追加されました
|
EVENT_ID_DOC_TYPE_ADDED
|
削除されました
|
EVENT_ID_DOC_TYPE_REMOVED
|
取得されました
|
EVENT_ID_DOC_TYPE_RETRIEVED
|
更新されました
|
EVENT_ID_DOC_TYPE_UPDATED
|
一覧表示されました
|
EVENT_ID_DOC_TYPES_LISTED
|
フィールドが一覧表示されました
|
EVENT_ID_DOC_TYPE_FIELDS_LISTED
|
フィールド
|
追加されました
|
EVENT_ID_DOC_FIELD_ADDED
|
ドキュメントタイプに追加されました
|
EVENT_ID_DOC_FIELD_ADDED_TO_TYPE
|
一覧表示されました
|
EVENT_ID_DOC_FIELDS_LISTED
|
削除されました
|
EVENT_ID_DOC_FIELD_REMOVED
|
ドキュメントタイプから削除されました
|
EVENT_ID_DOC_FIELD_REMOVED_FROM_TYPE
|
取得されました
|
EVENT_ID_DOC_FIELD_RETRIEVED
|
更新されました
|
EVENT_ID_DOC_FIELD_UPDATED
|
フォルダ
|
追加されました
|
EVENT_ID_FOLDER_ADDED
|
コンテンツが一覧表示されました
|
EVENT_ID_FOLDER_CONTENTS_LISTED
|
コピーされました
|
EVENT_ID_FOLDER_COPIED
|
移動されました
|
EVENT_ID_FOLDER_MOVED
|
削除されました
|
EVENT_ID_FOLDER_REMOVED
|
取得されました
|
EVENT_ID_FOLDER_RETRIEVED
|
更新されました
|
EVENT_ID_FOLDER_UPDATED
|
レイアウトドキュメント記述子
|
追加されました
|
EVENT_ID_LLD_ADDED
|
スタイルが一覧表示されました
|
EVENT_ID_LLDS_LISTED
|
削除されました
|
EVENT_ID_LLD_REMOVED
|
取得されました
|
EVENT_ID_LLD_RETRIEVED
|
更新されました
|
EVENT_ID_LLD_UPDATED
|
レイアウトスタイル
|
追加されました
|
EVENT_ID_DOC_LAYOUT_STYLE_ADDED
|
削除されました
|
EVENT_ID_DOC_LAYOUT_STYLE_REMOVED
|
取得されました
|
EVENT_ID_DOC_LAYOUT_STYLE_RETRIEVED
|
更新されました
|
EVENT_ID_DOC_LAYOUT_STYLE_UPDATED
|
一覧表示されたスタイル
|
EVENT_ID_DOC_LAYOUT_STYLES_LISTED
|
ディレクトリエントリルックアップ
|
絶対パス(URL)順
|
EVENT_ID_LOOKUP_BY_ABSOLUTE
|
先祖および相対パス順
|
EVENT_ID_LOOKUP_BY_RELATIVE
|
CMリポジトリ
|
追加されました
|
EVENT_ID_REPOSITORY_ADDED
|
一覧表示されました
|
EVENT_ID_REPOSITORIES_LISTED
|
削除されました
|
EVENT_ID_REPOSITORY_REMOVED
|
取得されました
|
EVENT_ID_REPOSITORY_RETRIEVED
|
更新されました
|
EVENT_ID_REPOSITORY_UPDATED
|
クエリ/検索
|
ドキュメントクエリが実行されました
|
EVENT_ID_DOC_QUERY_EXECUTED
|
ドキュメント検索クエリが実行されました
|
EVENT_ID_DOC_SEARCH_QUERY_EXECUTED
|
Security
|
アクセスがチェックされました
|
EVENT_ID_ACCESS_CHECKED
|
|
管理アクセスがチェックされました
|
EVENT_ID_ADMIN_ACCESS_CHECKED
|
アクセスが削除されました
|
EVENT_ID_SECURITY_REMOVED
|
アクセスが取得されました
|
EVENT_ID_SECURITY_RETRIEVED
|
アクセスが設定されました
|
EVENT_ID_SECURITY_SET
|

CM イベントの登録
この節には、次の節が含まれています。

ディレクトリ要素をイベントに登録する
CMサブシステムのイベントサポートは、CMカテゴリ、フォルダ、およびドキュメントに基づきリスナの登録に簡易メソッドを提供します。メソッドは、EbiContentMgmtDelegateオブジェクトで利用できます。
リスナ簡易メソッド
|
購読先
|
addCategoryStateChangeListener()
|
すべてのカテゴリイベント
|
addDocumentStateChangeListener()
|
すべてのドキュメントイベント
|
addFolderStateChangeListener()
|
すべてのフォルダイベント
|
addVetoableCategoryStateChangeListener()
|
拒否権の操作機能を持つすべてのカテゴリイベント
|
addVetoableDocumentStateChangeListener()
|
拒否権の操作機能を持つすべてのドキュメントイベントを購読します。
|
addVetoableFolderStateChangeListener()
|
拒否権の操作機能を持つすべてのフォルダイベントを購読します。
|
たとえば、フォルダ操作に関連するすべてのイベントを購読する方法を次に示します。
EbiContentMgmtDelegate cmgr =
com.sssw.cm.client.EboFactory.getDefaultContentMgmtDelegate();
cmgr. addFolderStateChangeListener (myStateChangeListener);

イベントタイプの指定
EbiContentMgmtDelegateで利用できるaddStateChangeListener()のフレームワークバージョンを使用して指定されたタイプのイベントを登録できます。
public boolean addStateChangeListener(
BitSet events, EbiStateChangeListener listener)
ここで、eventsはイベントIDのビットセットです。CM APIは、ビットセットを指定するヘルパメソッドを提供します(次のイベントヘルパクラスの使用で説明)。
特定のディレクトリエントリまたは、その下にあるディレクトリかエントリのいずれかで発生するイベントをフィルタすることもできます(再帰的に)。特定のディレクトリエントリの範囲で発生するイベントを登録するには、次のメソッドを使用してリスナを追加します。
public boolean addStateChangeListener(
BitSet events, EbiDirectoryEntry entry, int depth,
EbiStateChangeListener listener)
メソッドパラメータ
|
説明
|
events
|
イベントIDのビットセット
|
entry
|
ディレクトリエントリ(フォルダ、カテゴリ、またはドキュメント)
|
depth
|
イベント追跡の深さ
0 は、エントリ自体でのみ状態変更が発生したことを意味します。
1は、エントリおよびそのチャイルドに状態変更が発生したことを意味します。
-1は、エントリおよびその子孫に状態変更が発生したことを意味します。
その他の深さでは、エントリ階層のその深さでエントリおよびその子孫に発生した状態変更を追跡するように指定します。
|
listener
|
新規リスナオブジェクト
|

イベントヘルパクラスの使用
com.sssw.cm.event.util.EboEventHelperクラスは、イベントセットを管理するユーティリティを提供します。このクラスには、次のメソッドが含まれています。
Event helper method
|
機能
|
getFullEventIDSet()
|
すべてのCM要素タイプに発行されたCMイベントのフルセットを含んだビットセットを返します。
|
getEventIDSet(String elType)
|
指定のCM要素タイプに発行されたCMイベントのフルセットを含んだビットセットを返します。
|
getEventIDSet(int stateChangeID)
|
特定の状態変更タイプにマップするすべてのイベントにビットセットを返します。
|
adjustEventIDSet()
|
イベントIDにビットセットを与え、指定された状態変更タイプのCMイベントのビットをオンまたはオフにします。
|

イベント登録の例
すべての要素に対して1つのイベントをリッスンする
この例では、すべての要素で「作成」状態変更イベントにリスナを追加します。
EbiContentMgmtDelegate cmgr =
com.sssw.cm.client.EboFactory.getDefaultContentMgmtDelegate();
BitSet events = EboEventHelper.getEventIDSet(
com.sssw.fw.event.api.EboStateChangeEvent.SC_CREATE);
cmgr.addStateChangeListener(events, MyListener);
2つの要素タイプについてすべてのイベントをリッスンする
この例では、ドキュメントタイプおよびフィールドについてのみすべての変更にリスナを追加します。adjustEventIDSet()の使用方法に注目してください。
EbiContentMgmtDelegate cmgr =
com.sssw.cm.client.EboFactory.getDefaultContentMgmtDelegate();
BitSet events =
EboEventHelper.getEventIDSet(EbiDocType.EL_DOC_TYPE);
EboEventHelper.adjustEventIDSet(events,
EbiDocField.EL_DOC_FIELD, true);
cmgr.addStateChangeListener(events, Mylistener);
すべての要素に対して複数のイベントをリッスンする
この例では、新しいビットセットをインスタンス化することでイベントタイプを追加します。この方法は、複数のイベントのセットを指定するのに使用します。
EbiContentMgmtDelegate cmgr =
com.sssw.cm.client.EboFactory.getDefaultContentMgmtDelegate();
BitSet events = new BitSet();
events.set(com.sssw.cm.event.api.EbiConstants.
EVENT_ID_ACCESS_CHECKED);
events.set(com.sssw.cm.event.api.EbiConstants.
EVENT_ID_ADMIN_ACCESS_CHECKED);
events.set(com.sssw.cm.event.api.EbiConstants.
EVENT_ID_SECUIRTY_RETRIEVED);
cmgr.addStateChangeListener(events, Mylistener);
指定した要素タイプ以外のすべてのイベントをリッスンする
この例では、adjustEventIDSet()でブール引数を使用してイベントセットをオフにする方法を示します。
EbiContentMgmtDelegate cmgr =
com.sssw.cm.client.EboFactory.getDefaultContentMgmtDelegate();
BitSet events = EboEventHelper.getFullEventIDSet();
EboEventHelper.adjustEventIDSet(events, EbiDocType.EL_DOC_TYPE, false);
cmgr.addStateChangeListener(events, Mylistener);

CMイベントの有効化
CMイベントを有効または無効にする
config.xml を開いてexteNd Directorプロジェクトをコンテンツ管理します。
次のプロパティを検索します。
com.sssw.cm.events.enable.Default
有効にするには値をtrueに、無効にするにはfalseに設定します。
プロジェクトを再展開します。
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...