アセットのインポートの詳細は、次の項を参照してください。
フレックス・アセット・データ・モデルの使用時のアセットのインポートの詳細は、「フレックス・アセットのインポート」を参照してください。
データ設計を決定し、アセット・タイプを作成し、これらを開発システムでテストし、管理システムに移動したら、次の手順は、アセット(コンテンツ)を現在のソースから管理システム上のデータベースにインポートすることです。たとえば、リモートで生成されたコンテンツ(Wire Feedサービスまたは他のソースを使用して生成されたコンテンツ)を管理システム上のWebCenter Sitesデータベースにインポートします。
XMLPostユーティリティを使用して、データをWebCenter Sitesデータベースにインポートします。このユーティリティは、WebCenter SitesのFormPoster
Javaクラスに基づき、WebCenter Sitesベースの製品で提供されます。これは、HTTP POST
プロトコルを使用してデータをインポートします。アセットをインポートするには、WebCenter Sitesで用意されているインポート(ポスト)・エレメントのいずれかをそのアセット・タイプに応じて呼び出すように、XMLPostユーティリティに指示します。
このプロセスでは次の4つのものが必要です。
WebCenter Sitesに付属しているXMLPostユーティリティ。
ポスト・エレメント。WebCenter Sitesには、RemoteContentPost
という名前のポスト・エレメントが用意されています。WebCenter Sitesには、「フレックス・アセットのインポート」で説明している3つの追加のポスト・エレメントも用意されています。
ファイル拡張子が.ini
の構成ファイル。インポートする予定のアセット・タイプごとに1つの構成ファイルを作成します。このファイルには、ソース・ファイルに含まれていると想定されるもの(XMLPostによって検出されるタグの種類)、提供されたデータの処理方法、およびデータをインポートするために使用するインポート(ポスト)・エレメントが記述されています。
ソース・ファイル。インポートするアセットごとに個別のソース・ファイルを用意します(整形式XMLファイル)。ファイル内の各タグは、そのアセット・タイプのフィールドを指定します。このタグに含まれている情報は、その列に書き込まれるデータです。
XMLPostユーティリティは、アセット・タイプに提供されるデータを解釈する方法を確認するために構成ファイルを解析します。また、ソース・ファイルを解析して、各フィールド値の名前と値のペアを作成し、これらの名前と値のペアをICS変数としてRemoteContentPost
エレメントに渡します。RemoteContentPost
エレメントは、これらの変数に基づいてアセットを作成します。
XMLPostユーティリティと組み合せて機能する独自のポスト・エレメントを作成することもできます。ただし、アセットをインポートする場合は、WebCenter Sitesに用意されているポスト・エレメントで十分です。
注意:
セキュリティを向上するために、RemoteContentPost
ページの名前を変更してシステムへのハッキング試行を防止する必要があります。
この項では、XMLPostユーティリティを起動する前に開発者が実行する手順と、XMLPostユーティリティが実行する処理について概述します。
WebCenter Sitesデータベースにアセットをインポートするときに実行する一般的な手順は、次のとおりです。
インポートするアセットのタイプとソース・ファイル内で使用されているタグを指定する構成ファイルを作成します。
このファイルでは、いくつかの構成プロパティも設定します。これには、XMLPostで使用するポスト・エレメントのSiteCatalogエントリの名前が含まれます。すべてのアセットについて、このポスト・エレメントの名前はRemoteContentPost
になります。フレックス・アセットのポスト・エレメントについては、「フレックス・アセットのインポート」を参照してください。
構成ファイルはこのアセット・タイプに固有のものです。アセット・タイプごとに別個の構成ファイルを用意する必要があります。
インポートするデータのソース・ファイルを作成します。アセットごとに別個のソース・ファイルを作成します。
ソース・ファイルと構成ファイルを管理システム上のディレクトリ内に配置します。
そのディレクトリから、ソース・ファイルとこれらのソース・ファイル用に使用する構成ファイルを指定して、XMLPostユーティリティを起動します。
XMLPostユーティリティを起動してソース・ファイルをインポートした後に、図42-1およびこの図に続く手順に示すプロセスが開始されます。
XMLPostユーティリティは構成ファイルを解析します。
XMLPostはソース・ファイルを解析して、ソース・ファイルで指定された各フィールド値の名前と値のペアを作成します。
XMLPostは、構成ファイルから渡されたページ名にこれらの名前と値のペアをICS
変数としてポスト(HTTP POST
)することで、FormPoster
Javaクラスを呼び出します。ベーシック・アセット・タイプをインポートする際のページ名は次のとおりです。
OpenMarket/Xcelerate/Actions/RemoteContentPost
WebCenter Sitesは、そのページをSiteCatalog
表内で検索し、RemoteContentPost
ページのルート・エレメントを呼び出します。このルート・エレメントはデフォルトで同じ名前(RemoteContentPost
)を持ちます。
RemoteContentPost
エレメントは、ソース・ファイル内のデータを変数として、該当するタイプのアセットのPreUpdate
エレメントに渡します。
PreUpdate
エレメントは、そのアセットの変数値を設定してRemoteContentPost
エレメントに戻ります。
RemoteContentPost
エレメントはそのアセットを作成します。
WebサーバーはHTMLのストリームをXMLPostに返し、XMLPostはそのストリームを解析してインポート操作が成功したかどうかを判断して、結果を構成ファイルで指定されたテキスト・ファイルに記録します。
インポートするアセットのアセット・タイプが検索エンジンを使用する場合、RemoteContentPost
は新しいエレメントを索引付けします。
構成ファイルで特定のパラメータを設定した場合、RemoteContentPost
は正常にインポートされたアセットのソース・ファイルを削除します。
XMLPostの構成ファイル内には、次の3つのタイプのプロパティがあります。
データベースと環境に関する情報をXMLPostに提供するプロパティ。これらのプロパティは、独自のポスト・エレメントを作成した場合でも変化しません。
ポスト(インポート)・プロセスの構成値を提供するプロパティ。この章では、RemoteContentPost
エレメントが正常に機能するために指定する必要のあるプロパティについて説明します。
プロパティの例としてあげられるのは、RemoteContentPost
を呼び出すページのURL、データベース内のアセット・タイプ表に対する書込み権限をXMLPostに付与するユーザー名とパスワード、インポートするアセット・タイプの名前、エラーのログ記録方法、インポートするすべてのアセットについて同じであるデータ値などです。
ソース・ファイル内で使用されているタグを指定するプロパティ。
特定の情報は、構成ファイルのRemoteContentPost
セクションまたはソース・ファイル・セクションで構成できます。これらの情報としては、アセットが所属するサイトや、アセットに割り当てられるワークフローなどがあります。
たとえば、1つのコンテンツ管理サイトで作業している場合や、同じサイトに属している新しいをインポートする場合は、そのサイトの名前を構成セクションで指定することにより、その情報を各ソース・ファイルで繰り返し指定する必要がないようにします。複数のコンテンツ管理サイトがある場合は、アセットが属するサイトを個別のソース・ファイル内で指定します。
この項には次のトピックが含まれます:
表42-1では、XMLPostユーティリティが必要とするデータベース接続情報や他の一般的な構成指示内容を指定するプロパティを示しています。
表42-1 XMLPostの構成プロパティ
プロパティ | 説明 |
---|---|
|
必須。 ソース・ファイルのファイル拡張子。通常は 例:
|
|
オプション。 アセットのインポート先にするWebCenter Sitesデータベースと開発者のマシンの間にファイアウォールが配置されている場合は、このプロパティを使用してプロキシ・サーバーのホスト名を指定します。 例:
|
|
オプション。 アセットのインポート先となるWebCenter Sitesデータベースと開発者のマシンの間にファイアウォールが配置されている場合は、このプロパティを使用して、XMLPostの接続先となるプロキシ・サーバー上のポート番号を指定します。 例:
|
|
必須。 ポスト・エレメントのページ・エントリのURLの最初の部分。 XMLPostは、このプロパティで指定された値をページ名 このプロパティで指定する値は、次の規則に従う必要があります。
例:
|
|
オプション。 各ソース・ファイルのインポート(ポスト)結果を記録するファイルの名前。 各ソース・ファイルは、ポスト・リクエストを通じてWebCenter Sitesデータベースにポストされます。ポスト要求がWebサーバーから戻ってくると、XMLPostはWebサーバーが返したHTMLストリームを解析して、 例:
|
|
オプション。 ポストが成功したかどうかを判断するために応答内で検索する文字列。 例:
|
|
オプション。 ポストが失敗したかどうかを判断するために応答内で検索する文字列。 例:
|
|
オプション。 WebCenter Sitesデータベースに正常にインポートされたソース・ファイルを削除するかどうか。有効な値は 例:
|
表42-2は、RemoteContentPost
ページにポストされる必要のある(およびRemoteContentPost
エレメントに渡される必要のある)情報を指定する引数を示しています。これらの引数の値は、RemoteContentPost
ページにポストされるURLに付加されます。これらの引数は構成ファイル内でどのような順序でもかまいません。
表42-2 ポスト・エレメントの構成プロパティ
プロパティ | 説明 |
---|---|
|
必須。 ページ名は、URLに付加される名前と値のペアとして構成ファイルからXMLPostに渡されるいくつかの必須の変数内の主な変数です。このプロパティ( 例:
これらの名前と値のペアで独自のカスタム変数を指定することもできます。 |
|
必須。
例:
|
|
必須。 ソース・ファイル内で定義されているアセットのアセット・タイプ。通常は、 例:
|
|
必須。 アセットのインポート先になるWebCenter Sitesデータベースにログインするために、XMLPostが使用するユーザー名。通常は、 例:
指定するユーザー名は、インポートするタイプのアセットが格納されている表に対する書込み権限を持っている必要があります。(つまり、そのユーザー名には適切なACLが割り当てられている必要があります。) |
|
必須。 アセットのインポート先となるWebCenter SitesデータベースにログインするためにXMLPostが使用するユーザーのパスワード。通常は、 例:
|
|
オプション
このプロパティは任意の値に設定できます。例:
注意: デバッグを有効にする場合は、 |
|
オプション。 WebCenter Sitesデータベースに接続する際に使用する 例:
|
|
オプション。 このプロパティは必須ではありませんが、インポートする各アセットのサイトを指定する必要があります。 システムで単一のコンテンツ管理サイト(パブリケーション),を使用している場合や、このタイプのすべてのアセットを同じサイト上で有効にする必要がある場合は、この引数を使用してそのサイトの名前を指定します。 例:
複数のコンテンツ管理サイトを使用する場合、個別のソース・ファイル内でアセットごとにサイトの値を指定する必要があります。詳細は、「ソース・ファイルの構成プロパティ」を参照してください。 |
|
オプション。 ワークフローを使用している場合に、インポートするアセットのすべてに同じワークフローを割り当てる場合は、この引数を使用してそれらのアセットのスタート・メニュー・ショートカットを設定します。(これはワークフローIDを新しいアセットに割り当てるスタート・メニュー・ショートカットです。) 例:
このタイプのアセット用の複数のワークフローがある場合は、各アセットのスタート・メニュー・ショートカットの値を個別のソース・ファイル内で指定する必要があります。詳細は、「ソース・ファイルの構成プロパティ」を参照してください。 |
構成ファイル内のソース・ファイル・セクションでは、ソース・ファイル内で使用されているタグが指定されます。タグは、このタイプのアセットが格納されている表の列名を表します。タグのペアの内側にあるコンテンツは、その列に書き込まれる情報です。構成ファイルには、アセット・タイプのプライマリ記憶域表の列ごとにタグをリストする必要があるため、アセット・タイプごとに別個の構成ファイルを用意する必要があります。
この項には次のトピックが含まれます:
アセット・タイプに対して使用可能なタグに加えて、表42-3では、アセットを関連付けるサイトやアセットで使用するワークフローを指定できる別のタグについて説明します。
表42-3 サイトのプロパティ
サイト・タグのプロパティ | 値 | 説明 |
---|---|---|
|
(yesまたはno) |
オプション。 アセットが属するサイトを指定するサイト名をソース・ファイルで示すことを指定します。 例:
ソース・ファイル内で |
|
(yesまたはno) |
オプション。 アセットが属するサイトを指定する 例:
|
|
(yesまたはno) |
オプション。 アセットを共有するサイトのリストをソース・ファイルで示すことを指定します。 例:
|
|
(yesまたはno) |
オプション。 アセットをワークフロー・プロセス内に配置するスタート・メニュー・ショートカットの値をソース・ファイルで示すことを指定します。 例:
|
インポートするすべてのアセットについてサイトまたはワークフローが同じである場合は、サイトまたはワークフローの値を引数として構成ファイルのXMLPost
セクションで指定できます。そうすることで、同じ情報をすべてのソース・ファイルで繰り返し指定する必要がなくなります。
アセット・タイプに固有のタグを設定するには、そのタイプのアセットのデータベース表の各列のタグを指定します。ただし、構成ファイル内のすべてのタグでタグ付けされたデータをソース・ファイルに含める必要はありません。(当然ながら、ソース・ファイルには必須フィールドのデータを含める必要があります。)
フィールド(列)を表す各タグについて、そのタグの名前を指定するとともに、必要に応じてそのタグの追加の処理プロパティを指定します。タグの名前は、対応するフィールド(列)の名前です。追加のプロパティについては、タグの名前の前に単語を付加するという規則に従う必要があります。
表42-4では、アセット・タイプに固有のタグを指定する方法を説明しています。
表42-4 アセット・タイプのプロパティ
タグのプロパティ | 値 | 説明 |
---|---|---|
|
(yesまたはno) |
必須。 タグの名前を指定します。この名前は、そのタグが表しているフィールドの名前と完全に一致している必要があります。 たとえば、nameフィールドには、このタグのプロパティを次のように指定します。
|
|
(integer) |
オプション。 このタグでマークされたソース・ファイル内のデータを途中で切り捨てるかどうか。 例:
XMLPostが |
|
(yesまたはno) |
オプション。 このタグの先頭または末尾の空白を削除するかどうか。 空白を保持するには、このプロパティを 例:
このプロパティを空白のままにすると、XMLPostはデフォルトでこのタグの空白を削除します。 |
|
または
|
このプロパティは、単一のソース・ファイル内で同じタグが複数回使用されている場合は必須です。 ソース・ファイル内で同一のタグが複数回使用されている場合に、これらのタグのデータを格納する変数の数を決定します。 これを このプロパティを たとえば、
|
|
|
このプロパティは、 同一のタグが複数回使用されていて、これらのタグ内のデータを別々の変数に格納する場合に、その変数名の末尾に付加される連続番号の最初の番号を指定します。 例:
|
|
(yesまたはno) |
このプロパティは、タグがアップロード・フィールド(URL列またはBLOB)を表している場合は必須です。 タグがURL列を持つフィールドを表している場合は、このプロパティを使用する必要があるとともに、ソース・ファイルでは、 たとえば、
この場合は、
ファイルの場所は、XMLPostユーティリティを実行しているディレクトリを基準にした相対パスで指定する必要があります。 |
ここでは、Fiscal Newsという名前のサイトのimagefile
アセットをインポートするために使用するimagefile.ini
という名前のサンプル構成ファイルを示します。
xmlpost.xmlfilenamefilter: xml #xmlpost.xmlproxypost: Future #xmlpost.xmlproxyport: 80 xmlpost.url: http://localhost/servlet/ContentServer xmlpost.numargs: 6 xmlpost.argname1: pagename xmlpost.argvalue1: OpenMarket/Xcelerate/Actions/RemoteContentPost xmlpost.argname2: AssetType xmlpost.argvalue2: ImageFile xmlpost.argname3: authusername xmlpost.argvalue3: user_author xmlpost.argname4: authpassword xmlpost.argvalue4: user xmlpost.argname5: inifile xmlpost.argvalue5: futuretense.ini xmlpost.argname6: publication xmlpost.argvalue6: FiscalNews xmlpost.success: Success xmlpost.failure: Error xmlpost.logfile: ImageFilePost.txt postpublication: y postprimarypubid: y postpublist: y postcategory: y truncategory: 4 postpath: y truncpath: 255 postname: y truncname: 32 posttemplate: y trunctemplate: 32 postsubtype: y truncsubtype: 24 postfilename: y truncfilename: 64 poststartdate: y postdescription: y truncdescription: 128 postsource: y posturlpicture: y fileurlpicture: y posturlthumbnail: y fileurlthumbnail: y postmimetype: y postwidth: y postheight: y postalign: y postalttext: y postkeywords: y multikeywords: combine trunckeywords: 128 postimagedate: y
ソース・ファイルは、Document Type Definition (DTD)ファイルを必要としない整形式XMLで構成されている必要があります。実際には、構成ファイルは、ソース・ファイル内で処理されるタグを定義することでDTDファイルのような役割を果します。
ソース・ファイル内のデータは、そのタイプのアセットが格納されている表の列名と一致する名前を持つタグによってタグ付けされている必要があります。たとえば、imagefile
アセットのソース・ファイルでは、name
、caption
、picutureurl
などの名前を持つタグが使用されています。
この項では、ソース・ファイルに含める必要のある内容と、XMLPostがソース・ファイルに対して実行する処理について説明します。ここでは、XMLソース・ファイルの生成を自動化する方法は説明しません。ソース・ファイルの作成方法は、データのソースと、そのデータをXMLファイルに変換するために使用するツールによって異なります。
この項には次のトピックが含まれます:
ここでは、imagefile
アセットのサンプル・ソース・ファイルを示します。このファイル内のタグは、「XMLPostのサンプル構成ファイル」に示したサンプル構成ファイルで定義されています。
<document> <name>High Five 25</name> <keyword>Five</keyword> <category>a</category> <artist>by Ann. Artist</artist> <alttext>Congratulations</alttext> <align>CENTER</align> <caption>A man extends <keyword>congratulations</keyword> with a boy.</caption> <pictureurl>/images/eZine/highfive.jpg</pictureurl> </document>
データを渡す(ポストする)方法
ソース・ファイル内のXMLタグのペアの内側にあるすべてのテキストは、Variables.
tagname
という構文規則に従った変数として、XMLPostからRemoteContentPost
エレメントに渡されます。
たとえば、次のコードでは、
<name>High Five 25</name>
このコード行は、Variables.name
としてRemoteContentPost
に送信され、name
の値はHigh Five
という文字列になります。
XMLPostユーティリティは、次のいずれかの方法で起動できます。
コマンドラインから
スクリプト・ファイルまたはバッチ・ファイルから
プログラムから
どの方法でXMLPostを起動する場合でも、次の情報を提供する必要があります。
使用する構成ファイルの名前。
ソース・ファイル。ソース・ファイルは、単一のファイルとして、ファイルのリストとしてまたはファイルのディレクトリとして指定できます。
この項には次のトピックが含まれます:
XMLPostユーティリティを使用する前に、次の条件が満たされている必要があります。
使用するアセット・タイプが作成されていること。(作成されていない場合は、アセットをインポートする先となるデータベース表がありません。)
使用するコンテンツ管理サイトが作成されており、適切なアセット・タイプが各サイトに対して有効化されていること。
ワークフローを使用する場合は、使用するワークフロー・プロセスが作成されていること。
スタート・メニュー・ショートカットが作成されていること。ワークフローを使用する場合は、これらのショートカットによって適切なワークフロー・プロセスが適切なアセット・タイプに割り当てられていること。
使用するアセット・タイプのテンプレートが作成されていること。
使用するアセット・タイプのアソシエーション・フィールドが作成されていること。ただし、XMLPostを使用してアソシエーション・フィールドの値を設定するには、カスタム・コードが必要です。詳細は、「RemoteContentPostとPreUpdateのカスタマイズ」を参照してください。
XMLPostを起動する際は、UTF-8エンコード方式が確実に使用されるようにするために、クラスパスの前に-Dfile.encoding=UTF-8
というコマンドを挿入してください。
注意:
すべての.jar
ファイルのバージョン番号を確認してください。バージョン番号は、WebCenter Sitesのパッチ間で異なる可能性があります。
XML Postインポート用としてUTF-8を使用してエンコードされたファイルを作成する場合、UTF-8ではBOMが必要なく推奨もされないため、BOMを使用せずに作成するようにしてください。ただし、BOMを使用する他のエンコード・フォームからUTF-8データを変換する場合や、BOMをUTF-8署名として使用する場合、BOMの使用が発生する可能性があります。
XMLPostを実行するには:
注意:
j2ee.jar
ファイルは、J2EE SDKに含まれています。XMLPostを実行する前に、このSDKをインストールする必要があります。
コマンドラインで、作業ディレクトリ内にないソース・ファイルおよび構成ファイルへのパスを指定します。例: -s/products/product.xml
。
XMLPostユーティリティに対してソース・ファイルを指定するためのソース・パラメータでは、次のいずれかを指定できます。
単一のファイル。
ファイルのディレクトリ。そのディレクトリ内のファイルのうち、構成ファイルで指定されたファイル拡張子(通常は.xml
)を持つすべてのファイルがポスト(インポート)されます。
インポートするすべてのファイルのリストが記述されたリスト・ファイル。このファイルは.ini
ファイルと似ていますが、ファイル拡張子は.lst
です。
単一のファイルの内容をポストするには、そのファイルの名前をコマンドラインで指定します。次の例では、articlepost.ini
という名前の構成ファイルとarticle.xml
という名前のソース・ファイルを使用するようにXMLPostに指示しています。
この例では、LinuxおよびSolarisを含むUNIXベースのシステム用に、Windowsの構文を使用します。区切りには、スラッシュ(/)およびコロン(:)を使用します。
java -Xmx512m -Dfile.encoding=UTF-8 -classpath <cs_app_dir>\WEB-INF\lib\apache-mime4j-0.5.jar; <cs_app_dir>\WEB-INF\lib\commons-lang-2.5.jar; <cs_app_dir>\WEB-INF\lib\commons-lang3-3.1.jar; <cs_app_dir>\WEB-INF\lib\commons-codec-1.7.jar; <cs_app_dir>\WEB-INF\lib\commons-logging-1.1.3.jar; <cs_app_dir>\WEB-INF\lib\cs.jar; <cs_app_dir>\WEB-INF\lib\cs-core.jar; <cs_app_dir>\WEB-INF\lib\httpclient-4.3.6.jar; <cs_app_dir>\WEB-INF\lib\http_client-1.0.0-150521.1418.jar; <cs_app_dir>\WEB-INF\lib\httpcore-4.3.3.jar; <cs_app_dir>\WEB-INF\lib\httpmime-4.3.6-12.1.4.0.1-SNAPSHOT.jar; <cs_app_dir>\WEB-INF\lib\MSXML.jar; <cs_app_dir>\WEB-INF\lib\servlet-api.jar; <cs_app_dir>\WEB-INF\lib\spring-core-3.2.6.RELEASE.jar; <cs_app_dir>\WEB-INF\lib\sites-security.jar; <cs_app_dir>\WEB-INF\lib\esapi-2.0.1.jar; <cs_app_dir>\WEB-INF\lib\ojdl-1.1.0-150521.1418.jar;<j2eeSDK_dir>\j2ee.jar; <cs_app_dir>\WEB-INF\classes COM.FutureTense.XML.Post.XMLPostMain-sarticle.xml -carticlepost.ini
ディレクトリ内のすべてのファイルをポストするには、そのディレクトリのパスをコマンドラインで指定します。次の例では、xmlpostfiles
ディレクトリ内のファイルをインポートするようにXMLPostに指示しています。
この例では、LinuxおよびSolarisを含むUNIXベースのシステム用に、Windowsの構文を使用します。区切りには、スラッシュ(/)およびコロン(:)を使用します。
java -Xmx512m -Dfile.encoding=UTF-8 -classpath <cs_app_dir>\WEB-INF\lib\apache-mime4j-0.5.jar; <cs_app_dir>\WEB-INF\lib\commons-lang-2.5.jar; <cs_app_dir>\WEB-INF\lib\commons-lang3-3.1.jar; <cs_app_dir>\WEB-INF\lib\commons-codec-1.7.jar; <cs_app_dir>\WEB-INF\lib\commons-logging-1.1.3.jar; <cs_app_dir>\WEB-INF\lib\cs.jar; <cs_app_dir>\WEB-INF\lib\cs-core.jar; <cs_app_dir>\WEB-INF\lib\httpclient-4.3.6.jar; <cs_app_dir>\WEB-INF\lib\http_client-1.0.0-150521.1418.jar; <cs_app_dir>\WEB-INF\lib\httpcore-4.3.3.jar; <cs_app_dir>\WEB-INF\lib\httpmime-4.3.6-12.1.4.0.1-SNAPSHOT.jar; <cs_app_dir>\WEB-INF\lib\MSXML.jar; <cs_app_dir>\WEB-INF\lib\servlet-api.jar; <cs_app_dir>\WEB-INF\lib\spring-core-3.2.6.RELEASE.jar; <cs_app_dir>\WEB-INF\lib\sites-security.jar; <cs_app_dir>\WEB-INF\lib\esapi-2.0.1.jar; <cs_app_dir>\WEB-INF\lib\ojdl-1.1.0-150521.1418.jar;<j2eeSDK_dir>\j2ee.jar; <cs_app_dir>\WEB-INF\classes COM.FutureTense.XML.Post.XMLPostMain-sxmlpostfiles -carticlepost.ini
ディレクトリを指定するかわりに、次のプロパティが含まれた.ini
ファイル形式のリスト・ファイルを作成できます。
numfiles
: リストに含まれるファイルの数を指定します。
file
N
: ファイルのパスとファイル名を指定します。N
は、リスト・ファイル内のそのファイルの順番を表します。リストの1番目のファイルはfile1
、2番目のファイルはfile2
というようになります。
リストの最後のfile
N
のN
の値は、numfiles
プロパティで指定された値と一致する必要があります。XMLPostは、numfiles
プロパティで指定された数のファイルをインポートした時点で、インポートを終了します。XMLPostは、numfiles
状態の値よりも多くのファイルはインポートしません。
リスト・ファイルのファイル拡張子は、.lst
にする必要があります。
次のサンプル・リスト・ファイルはxmlpostfiles.lst
という名前です。
numfiles: 3
file1: c:\xmlpost\article1.xml
file2: c:\xmlpost\article2.xml
file3: c:\xmlpost\article3.xml
このファイル・リストで指定されたファイルをポストするには、このリスト・ファイルの名前をコマンドラインで指定します。次の例では、xmlpostfiles.lst
ファイルで指定されたファイルをインポートするようにXMLPostに指示しています。
この例では、LinuxおよびSolarisを含むUNIXベースのシステム用に、Windowsの構文を使用します。区切りには、スラッシュ(/)およびコロン(:)を使用します。
java -Xmx512m -Dfile.encoding=UTF-8 -classpath <cs_app_dir>\WEB-INF\lib\apache-mime4j-0.5.jar; <cs_app_dir>\WEB-INF\lib\commons-lang-2.5.jar; <cs_app_dir>\WEB-INF\lib\commons-lang3-3.1.jar; <cs_app_dir>\WEB-INF\lib\commons-codec-1.7.jar; <cs_app_dir>\WEB-INF\lib\commons-logging-1.1.3.jar; <cs_app_dir>\WEB-INF\lib\cs.jar; <cs_app_dir>\WEB-INF\lib\cs-core.jar; <cs_app_dir>\WEB-INF\lib\httpclient-4.3.6.jar; <cs_app_dir>\WEB-INF\lib\http_client-1.0.0-150521.1418.jar; <cs_app_dir>\WEB-INF\lib\httpcore-4.3.3.jar; <cs_app_dir>\WEB-INF\lib\httpmime-4.3.6-12.1.4.0.1-SNAPSHOT.jar; <cs_app_dir>\WEB-INF\lib\MSXML.jar; <cs_app_dir>\WEB-INF\lib\servlet-api.jar; <cs_app_dir>\WEB-INF\lib\spring-core-3.2.6.RELEASE.jar; <cs_app_dir>\WEB-INF\lib\sites-security.jar; <cs_app_dir>\WEB-INF\lib\esapi-2.0.1.jar; <cs_app_dir>\WEB-INF\lib\ojdl-1.1.0-150521.1418.jar;<j2eeSDK_dir>\j2ee.jar; <cs_app_dir>\WEB-INF\classes COM.FutureTense.XML.Post.XMLPostMain-sc:\xmlpostfiles.lst -carticlepost.ini
複数のタイプのアセットをインポートする場合は、アセット・タイプごとに個別にXMLPostを実行することにより、タイプごとに固有の構成ファイルを指定します。XMLPostは、手動で実行することも、バッチ・ファイルから自動的に実行することもできます。このバッチ・ファイル内には、アセット・タイプごとに1つのコマンドライン文を記述します(この文では構成ファイルと、ソース・ファイルの場所を指定します)。前の項で説明した方法のいずれかを使用してソース・ファイルを指定できます。
XMLPostユーティリティをプログラムから起動するには、XMLPostオブジェクトを作成して、doIt
メソッドのdoIt(String[] args)
をコールします(このメソッドの入力は文字列配列です)。この配列のエレメントは、XMLPostをコマンドラインから実行する場合に使用するのと同じフラグです。
次に例を示します。
String args [] = {"-sSourcefile.xml","-cConfigfile.ini"}; COM.FutureTense.XML.Post.XMLPost poster = new COM.FutureTense.XML.Post.XMLPost(); try { poster.doIt(args); } catch (Exception e) { e.printStackTrace();("error in XMLPost under program control"); }
ソース・ファイルと構成ファイルの完全パスを指定する必要があります。
必要に応じて、アセット・タイプのRemoteContentPost
エレメントやPreUpdate
エレメント内のコードを追加または変更することで、XMLPostプロセスをカスタマイズできます。アセットに関する情報を他の表にインポートするには、そのアセット・タイプのPreUpdate
エレメントを変更する必要があります。
この項では、次の2つのカスタマイズ例を紹介します。
Article
アセット・タイプのPreUpdate
エレメントをカスタマイズして、このエレメントで説明フィールド内のヘッドライン情報が設定されるようにします。Article
表にはdescription列がありますが、「新規」記事フォームや「編集」記事フォーム内のフィールドの名前は「ヘッドライン」になります。
Article
アセット・タイプのPreUpdate
エレメントをカスタマイズして、このエレメントが記事にアソシエーションを追加できるようにします。
この項には次のトピックが含まれます:
記事アセット・タイプは、「ヘッドライン」と呼ばれる「新規」および「編集」フォーム内にフィールドを持ち、その値はArticle
表内のdescription
列に格納されます。Article
アセットのインポート時にヘッドライン・テキストが正しい列(description
列)に書き込まれるようにするために、Article
アセット・タイプのPreUpdate
エレメントが変更されます。
まず、WebCenter Sites製品キット内のXcelerate/Samples/XMLPost
ディレクトリに配置されたArticlePost.ini
という名前のサンプル構成ファイルを調べます。このファイルには、次のように「ヘッドライン」フィールドに対して指定されたタグが含まれています。
# headline gets stored in the description field
postheadline: y
記事アセット・タイプのPreUpdate
エレメント内の次のコードは、RemoteContentPost
がVariable.headline
として渡すデータを正しいデータベース列に書き込みます。
<if COND="IsVariable.headline=true"> <then> <ASSET.SET NAME="theCurrentAsset" FIELD="description" VALUE="Variables.headline"/> </then> </if>
この例では、ASSET.SET
というタグを使用しています。このタグは、現在メモリー内にあるアセットのフィールド内のデータを設定します。このタグでは次の3つのパラメータを指定できます。
NAME
: (必須)。メモリーに格納されているアセット・オブジェクトの名前です。このアセット・オブジェクトは、ASSET.LOAD
タグかASSET.CREATE
タグで、あらかじめインスタンス化されている必要があります。WebCenter Sitesでは慣例的にtheCurrentAsset
という名前を使用して、現在のアセット・オブジェクトを参照します。
FIELD
: (必須)。値を設定しようとしているフィールドの名前。このフィールドの名前は、このタイプのアセットの記憶域表内の列の名前と完全に一致している必要があります。
VALUE
: (必須)。列に挿入するデータ。
アセット間のアソシエーションに関する情報は、AssetRelationTree
表に書き込まれます。XMLPostの標準動作では、アセットの情報はそのアセット・タイプのプライマリ記憶域表にのみ書き込まれるため、アセットのアソシエーションを指定するには、そのアセット・タイプのPreUpdate
エレメントを変更する必要があります。たとえば、Article
アセット・タイプにはMainImageFile
という名前のアソシエーション・フィールドがあります。コンテンツ・プロバイダは記事アセットを作成する際に、適切なイメージファイル・アセットをこのフィールドで選択します。
WebCenter Sites製品キット内のXcelerate/Samples/XMLPost
ディレクトリに配置されたArticlePost.ini
という名前のサンプル構成ファイルを調べてください。このファイルには、次のようにMainImageFile
アソシエーション・フィールドに対して指定されたタグが含まれています。
postMainImageFile-name: y
記事アセット・タイプのPreUpdate
エレメント内の次のコードは、RemoteContentPost
がVariable.mainimagefile
として渡すデータを正しいデータベース表に書き込みます。
<if COND="IsVariable.MainImageFile-name=true"> <then> <ASSET.LOAD NAME="anAssociatedImage" TYPE="ImageFile" FIELD="name" VALUE="Variables.MainImageFile-name"/> <if COND="IsError.Variables.errno=false"> <then> <ASSET.GET NAME="anAssociatedImage" FIELD="id" OUTPUT="imageid"/> <ASSET.ADDCHILD NAME="theCurrentAsset" TYPE="ImageFile" CHILDID="Variables.imageid" CODE="MainImageFile"/> </then> </if> </then> </if>
注意:
ASSET.ADDCHILD
タグは、2つのアセット間のリンクのみを作成します。関連付けられたアセットは作成しません。このコードが正常に機能するためには、CHILDID
パラメータで指定されたアセットが、WebCenter Sitesデータベース内に存在している必要があります。
この例では、ASSET.ADDCHILD
というタグを使用しています。このタグは、子アセットを、現在メモリー内に保持されているアセットと関連付けます。このタグでは次の5つのパラメータを指定できます。
NAME
(必須)。メモリーに格納されているアセット・オブジェクトの名前です。このアセット・オブジェクトは、ASSET.LOAD
タグかASSET.CREATE
タグで、あらかじめインスタンス化されている必要があります。WebCenter Sitesでは慣例的にtheCurrentAsset
という名前を使用して、現在のアセット・オブジェクトを参照します。
TYPE
(必須)。子アセットのアセット・タイプ。
CHILDID
(必須)。子アセットのID。
CODE
(オプション)。アソシエーションの名前。この値は、AssetRelationTree
表のncode
列に書き込まれます。
RANK
(オプション)。子アセットの順番を設定するための数値。この値は、AssetRelationTree
表のnrank
列に書き込まれます。
ASSET.GET
およびASSET.LOAD
の詳細は、Oracle WebCenter Sitesタグ・リファレンスを参照してください。
ここでは、XMLPostユーティリティの実行時に発生する可能性のあるいくつかの問題について簡単に説明します。
XMLPostが起動しない理由としては次の2つが考えられます。
構成ファイル内のxmlpost.URL
プロパティの設定で無効なサーバー名が指定されています。
インポート先のシステム上でWebCenter Sitesが実行されていません。それを起動してください。
このメッセージは、ソース・ファイル内に無効なXMLがあることを意味します。このような場合は通常、XMLにHTMLコードが含まれており、そのコードに含まれている特殊なHTML文字がそれらのHTML文字の文字エンティティ・コードで参照されていません。最適なコーディング手法として、すべてのHTMLコードを<![CDATA[...]]>
タグ内に埋め込んでください。
アセットの保存時にデータベース・エラーが発生する理由はいくつか存在します。105エラーの一般的な理由の1つは、XMLPostが保存しようとしているデータが大きすぎて列(フィールド)に収まらないことです。この問題の解決方法は目的に応じて異なります。列に収まらないデータが途中で切り捨てられてもかまわない場合は、trunctag
プロパティを構成ファイルに追加することで解決できます。たとえば、truncbody: 2000
と指定します。
このエラー・コードのもう1つの一般的な理由は、同じ名前を持つそのタイプのアセットが存在していることです。そのアセットの名前を変更してから、そのアセットをもう一度インポートしてみてください。
RemoteContentPost
エレメントを変更した場合、または独自のポスティング・エレメントを作成した場合、XML Debuggerユーティリティを使用してこのエレメントをテストします。XML Debuggerを使用するには、xmlpost.url
プロパティの設定でContentServer
をDebugServer
に置き換えます。たとえば、xmlpost.url: http://6ipjk/servlet/ContentServer
をxmlpost.url: http://6ipjk/servlet/DebugServer
に変更します
XML Debuggerユーティリティの詳細は、「WebCenter Sitesのツールおよびユーティリティの概要」を参照してください。