この章では、任意のソース・システムからWebCenter Sitesへのコンテンツ配信をサポートする完全な統合ソリューションの作成方法について説明します。
この章には次の項が含まれます。
アダプタおよびプラグインの作成には、次の手順が含まれます。
Content Integration Agent内で提供されるプラガブル・インタフェースの実装。
Content Integration Agentランタイム・システムへの実装の登録。
Java仮想マシンによる、C++エージェント・ランタイムからJavaコードへのコールの委任を可能にするためのjavafacility
の登録。
注意: どのアダプタでも、カスタム・プラグインを使用できます。必要に応じて、任意の数のプラグインを実装してデプロイできます。 |
カスタム・アダプタ(またはプラグイン)を正常に使用するには、公開可能なオブジェクトのデータ・モデルがWebCenter Sitesシステムに存在していて、かつWebCenter Sitesシステムにマップされている必要があります。次の手順が必要になります。
オブジェクト・タイプ、その属性およびオブジェクト自体を格納するための専用のフレックス・ファミリを作成して(または既存のフレックス・ファミリを再利用して)、WebCenter Sites内にオブジェクトのメタデータを再生成します。
オブジェクト・タイプと属性を、それぞれのフレックス・ファミリ・アセット・インスタンス(前述の手順で作成したもの)にマップします。このマップは、アダプタの実装内で直接作成できます。または、mappings.xml
ファイル内で作成できます。
サポート対象外のソース・システムからWebCenter Sitesに公開するには、Javaベースのソース・アダプタを作成する必要があります。アダプタで取得したオブジェクトを公開する前に処理する必要がある場合を除いて、プラグインは必要ありません。
注意: リレーショナル・データベースを使用する場合は、アダプタを機能させるためにカスタム・ビューまたはカスタム問合せを実装します。 |
Javaソース・アダプタを作成するには
アダプタを実装します。
IConnector
、IProviderSession
、IRepository
、IItem
の各インタフェースを実装します。ソース・システムの項目に主要なバイナリ・コンテンツが含まれている場合は、オプションでInputStream
インタフェースを実装できます。
図95-1は、インタフェース間の関係を示しています。アダプタのコードのエントリ・ポイントは、ファクトリ・クラスであるIConnector
インタフェースの実装です。
アダプタの存続期間には、様々なフェーズがあります。フェーズに応じて、異なるメソッドが呼び出されます。図95-2は、各フェーズでのコール・シーケンスを示しています。
図3 ソース・アダプタのコール・シーケンスの分析
getRepositoryByID
関数に渡されるIDは、catalog.xml
ファイル内の対応するワークスペース・エレメントの1つから取得されます。
cipcommander
に渡す内容に応じて、次のいずれかの関数が呼び出されます。
-source_itemid
を渡す場合は、getItemByID
が呼び出され、itemid
を渡します。
-source_itemid
を省略して-source_path
を指定した場合は、getItemByPath
関数が呼び出されます。
-source_itemid
、-source_path
のいずれも指定していない場合は、getTopFolder
関数が呼び出されます。(この場合、リポジトリ全体が公開されます。)
一意性を確保するため、同一リポジトリ内のすべての項目で、異なるversionid
、itemid
、path
を保持し、同一フォルダ内のすべての項目に異なる名前が付与されるようにします。path
は次の形式である必要があります。<parent path>/<this item name>
。
アダプタを登録します。
(integration_agent/conf/
内の)catalog.xml
にconnector
エレメントを追加することによって、IConnector
インタフェースの実装をContent Integration Agentに登録します。
<connector id="connector_id" name="connector_descriptive_name"> <library>javaconnector</library> <init-params> <param name="className">connector_class_name</param> connector-specific_parameters </init-params> </connector>
パラメータ | 説明 |
---|---|
connector_id |
任意の一意の識別子。 |
connector_descriptive_name |
任意の記述名(一意である必要はありません)。 |
connector_class_name |
作成した |
connector-specific_parameters |
コール時に |
次のように、catalog.xml
に新しいprovider
エレメントを追加することによって、公開を有効にします。
<provider id="provider_id" name="provider_descriptive_name"> <connector-ref refid="connector_id"/> <init-params/> provider-specific_parameters </init-params> </ provider >
パラメータ | 説明 |
---|---|
provider_id |
任意の一意の識別子。 |
provider_descriptive_name |
任意の記述名(一意である必要はありません)。 |
connector_id |
アダプタの一意の識別子。 |
provider-specific_parameters |
コール時に |
アダプタをデプロイします。
アダプタのjar
ファイルをフォルダ<resource>/java/<connector_id>/lib
内に配置し、class
ファイルを<resource>/java/<connector_id>/classes
内に配置します。
<resource>
フォルダは、Content Integration Agent内にあります。
Windowsの場合: <resource>
は<%INSTALLDIR%>
です。
Unixの場合: <resource>
は<$INSTALLDIR/shared/cipagent>
です。
注意: 様々な実装やロード/アンロード機能との競合を回避するために、アダプタ・クラスは別のクラス・ローダーによってロードされます。すべてのアダプタの |
Javaプラグインが必要な場合は(アダプタが取得した項目を処理するため)、第95.3項「Javaプラグインの作成」に進んでください。それ以外の場合は、javafacility
を有効にします(Java仮想マシンがC++エージェント・ランタイムからのJavaコード・コールを委任できるようにするため)。手順は、第95.4項「javafacilityの有効化」を参照してください。
注意: どのアダプタでも、カスタム・プラグインを使用できます。必要に応じて、任意の数のプラグインを作成してデプロイできます。 |
アダプタで取得したオブジェクトをWebCenter Sitesシステムに公開する前に処理する必要がある場合を除いて、プラグインは必要ありません。プラグインの主な目的は、取得した項目のメタデータを変更したり、取得した項目にメタデータを追加したり、項目を却下したりすることです。
プラグインの作成はアダプタの作成と似ています。その手順を次に示します。
Javaプラグインを作成するには
IAssetHandler
インタフェースを(Content Integration Agent内に)実装することによってプラグインを実装します。
プラグインのエントリ・ポイントはIAssetHandler
インタフェースです。これは、ランタイム・システムによって直接使用される唯一のインタフェースです。
ほとんどの場合、実装する必要があるメソッドはExtractMetadata
のみです。図95-3は、プラグインの存続期間におけるコール・シーケンスを示しています。
Content Integration Agentにプラグインを登録します。
(integration_agent/conf/
フォルダ内の)types.xml
ファイルに、新しいプラグインhandler
エレメントを追加します。
<handler id="handler_id"> <library>javaplugin</library> <init-params/> plugin-specific_parameters </init-params> </handler>
パラメータ | 説明 |
---|---|
|
カスタム・プラグインの一意の識別子。 |
|
プラグインの初期化時に渡されるプラグイン固有のパラメータ。 |
Content Interation Platform for EMC Documentumを使用している場合は、この手順を実行します。それ以外の場合は、手順3に進みます。
選択したハンドラ・セットのハンドラを有効にします。どのハンドラ・セットを使用するかは、公開開始プロセスの実行時に指定します。各ハンドラ・セットにはハンドラのリストが含まれており、それらはContent Integration Agentのメタデータ抽出フェーズで呼び出されます。ハンドラの対応付けは、MIMEタイプまたはアセット・タイプによって行われます。
MIMEタイプは次の形式になります。<major type>/<minor type>
(たとえば、image/jpeg
)。MIMEタイプには、*
を使用するオプションがあります。これは、minor
部分、またはMIMEタイプ全体に適用できます。たとえば、*/*
はすべてのアセットと一致し、text/*
はテキスト・ファイルとのみ一致します。
IConnectorContext.guessMIMEType
関数を使用する場合、この関数は指定されたファイル拡張子に対応するMIMEタイプを取得するためにmimetypes.xml
を参照します。たとえば、パラメータにtxt
を指定して呼び出すと、text/plain
という結果が生成されます。
また、アセット・タイプでも*
の表記がサポートされており、これはすべてのアセット・タイプと一致します。
複数のハンドラが特定の項目と一致する場合は、使用されるハンドラ・セット内での登録順序と同じ順序でそれらのハンドラが呼び出されます。対応するハンドラのいずれかがIItem.extracMetadata
のコールからNULLオブジェクトを返す場合、その項目は将来の処理から破棄され、ターゲットのアダプタには送信されません。
types.xml
ファイルにasset-type
要素を追加することによって、選択したオブジェクト・タイプのカスタム・プラグインを有効にします。このプラグインが呼び出される項目は、MIMEタイプに従ってフィルタリングされます。
注意: プラグインのコンテキスト内の |
<asset-type type="MIME_type"> <extensions> <ext>ext</ext> . . . </extensions> <handler-ref refid="handler_id" /> </asset-type>
パラメータ | 説明 |
---|---|
MIME type |
このプラグインが呼び出される項目のMIMEタイプ。MIMEtypeは、 ワイルドカード記号(
|
ext |
ファイル拡張子。たとえば、テキスト・ファイルの場合は |
handler_id |
カスタム・プラグインの一意の識別子(前の手順の |
プラグインをデプロイします。
プラグインのjar
ファイルをフォルダ<resource>/java/<plugin_id>/lib
内に配置し、class
ファイルを<resource>/java/<plugin_id>/classes
内に配置します。
<resource>
フォルダは、Content Integration Agent内にあります。
Windowsの場合: <resource>
は<%INSTALLDIR%>
です。
Unixの場合: <resource>
は<$INSTALLDIR/shared/cipagent>
です。
注意: 様々な実装やロード/アンロード機能との競合を回避するために、プラグイン・クラスは別のクラス・ローダーによってロードされます。すべてのプラグインの |
カスタム・アダプタを作成したものの、まだjavafacility
を有効にしていない場合は、第95.4項「javafacilityの有効化」に進んでください。
C++エージェント・ランタイムからJavaコードを呼び出すには、facilities.xml
内にjava
という特殊なファシリティを登録する必要があります。
javafacilityを有効にするには
facilities.xml
がコメント化されていないことを確認します(facilities.xml
は、integration_agent/conf/
フォルダにあります)。
次の行を追加します。
<facility name="javafacility"> <library>java</library> <init-params> <param name="VMArgparam_id">Java_VM_argument </param> <param name="VMLibraryPath">VM_library_path</param> </init-params> </facility>
パラメータ | 説明 |
---|---|
param_id |
パラメータの一意のID(任意の一意の値)。JVMに複数の引数を渡すには、異なるparam_idを使用して複数のパラメータを構築します。 |
Java_VM_argument |
エージェント・ランタイム・プロセス内で作成され、Java VMに渡されるJava VM引数。 例: <param name="VMArg0">-Xmx256m
|
VM_library_path |
JRE/JDKインストール内のJava VMライブラリ(DLLまたは共有ライブラリ)のフルパス。 たとえば、Windows版のSun JDKでは、
または
|
CIPのカスタム・コンポーネントを開発する場合、本番環境に表示されるデフォルトのロギング・メッセージ以外の情報があると役立つことがあります。CIP Agentでは、次の5つのロギング・レベルをサポートしています。
fatal
error
warning
info
debug
次の指示に従って、CIPのカスタム・コンポーネントをデバッグしてください。
注意: 次に示す設定は、システムのパフォーマンスを低下させる可能性があるため、本番システムでは使用しないでください。 |
CIP Agentのロギング・レベルのエスカレート
デフォルトでは、CIPはerror
に設定されています。ロギング・レベルを上げるには、CIP Agentをコンソール実行プログラムとして実行する必要があります。
CIP Agentシステム・サービスを停止します。
cipagent -t debugコマンドを実行します。
Javaカスタム・コンポーネントのデバッグ
Agentランタイム内にホストされるカスタムのJava実装をデバッグするには、CIP Agentでリモート・デバッグを有効にします。たとえば、ポート7007でリモート・デバッガを開始し、デバッガがアタッチされるまでCIP Agentを一時停止するには、javafacility
に次の行を追加します。
<param name="VMArg1">-Xdebug</param> <param name="VMArg2">-Xrunjdwp:transport=dt_socket, address=7007,server=y,suspend=y</param>
Sites Agent Servicesのロギング・レベルのエスカレート
Sites Agent Servicesアプリケーションのエラーに関するより詳細なデータを取得するには、com.fatwire.logging.csagentservices
カテゴリのcommons-logging.properties
ファイル内でDEBUG
レベルを設定します。また、com.fatwire.logging.cs.db
カテゴリのcommons-logging.properties
ファイル内のDEBUG
レベルを設定することもお薦めします。