ヘッダーをスキップ
Oracle® Fusion Middleware WebCenter Sites開発者ガイド
11gリリース1 (11.1.1.8.0)
E49681-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

20 任意タイプのアセットのインポート

データ設計を決定し、アセット・タイプを作成し、これらを開発システムでテストして管理システムに移動したら、次のステップとして、アセット(コンテンツ)をそれらの現在のソースから管理システム上のデータベースにインポートします。たとえば、ワイヤー・フィード・サービスを使用したり、リモート生成されるコンテンツの他のソースを使用したりすることがありますが、そのコンテンツを管理システム上のWebCenter Sitesデータベースにインポートする必要があります。

任意のデータをWebCenter Sitesデータベースにインポートする場合は、XMLPostユーティリティを使用します。このユーティリティは、WebCenter SitesのFormPoster Javaクラスに基づき、WebCenter Sitesベースの製品で提供されます。これは、HTTP POSTプロトコルを使用してデータをインポートします。

この章では、XMLPostユーティリティを使用してアセットをインポートする一般的なプロセスを説明します。この章の情報に基づいて、あらゆるタイプのアセットをインポートできます。第21章「フレックス・アセットのインポート」では、フレックス・アセット・データ・モデルの使用時にアセットをインポートするために必要となる追加情報について説明しています。

この章には次の項が含まれます。

20.1 XMLPostユーティリティ

アセットをインポートするには、WebCenter Sitesで用意されているインポート(ポスト)・エレメントのいずれかをそのアセット・タイプに応じて呼び出すように、XMLPostユーティリティに指示する必要があります。

このプロセスでは次の4つのものが必要です。

XMLPostユーティリティは、構成ファイルを解析してアセット・タイプに対して提供されているデータの解釈方法を決定し、ソース・ファイルを解析して各フィールド値の名前と値のペアを作成し、これらの名前と値のペアをICS変数としてRemoteContentPostエレメントに渡します。RemoteContentPostエレメントは、これらの変数に基づいてアセットを作成します。

XMLPostユーティリティと組み合せて機能する独自のポスト・エレメントを作成することもできます。ただし、アセットをインポートする場合は、WebCenter Sitesに用意されているポスト・エレメントで十分です。


注意:

セキュリティを向上するために、RemoteContentPostページの名前を変更すると、システムへのハッキング試行を防止できます。


開発者が実行する手順

この項では、XMLPostユーティリティを起動する前に開発者が実行する手順と、XMLPostユーティリティが実行する処理について概述します。

WebCenter Sitesデータベースにアセットをインポートする際は、次の4つの一般的な手順を実行します。

  1. インポートするアセットのタイプとソース・ファイル内で使用されているタグを指定する構成ファイルを作成します。

    このファイルでは、いくつかの構成プロパティも設定します。これには、XMLPostで使用するポスト・エレメントのSiteCatalogエントリの名前が含まれます。すべてのアセットについて、このポスト・エレメントの名前はRemoteContentPostになります。フレックス・アセットのポスト・エレメントについては、第21章「フレックス・アセットのインポート」を参照してください。

    構成ファイルはこのアセット・タイプに固有のものです。アセット・タイプごとに別個の構成ファイルを用意する必要があります。

  2. インポートするデータのソース・ファイルを作成します。アセットごとに別個のソース・ファイルを作成します。

  3. ソース・ファイルと構成ファイルは、管理システム上のディレクトリ内に配置します。

  4. そのディレクトリから、ソース・ファイルとこれらのソース・ファイル用に使用する構成ファイルを指定して、XMLPostユーティリティを起動します。

XMLPostとWebCenter Sitesが実行する処理

XMLPostユーティリティを起動してソース・ファイルをインポートした後に、次の図と手順で示す処理が実行されます。

xmlpost.gifの説明が続きます
図xmlpost.gifの説明

  1. XMLPostユーティリティは構成ファイルを解析します。

  2. XMLPostはソース・ファイルを解析して、ソース・ファイルで指定された各フィールド値の名前と値のペアを作成します。

  3. XMLPostは、構成ファイルから渡されたページ名にこれらの名前と値のペアをICS変数としてポスト(HTTP POST)することで、FormPoster Javaクラスを呼び出します。ベーシック・アセット・タイプをインポートする際のページ名は次のとおりです。

    OpenMarket/Xcelerate/Actions/RemoteContentPost
    
  4. WebCenter Sitesは、そのページをSiteCatalog表内で検索し、RemoteContentPostページのルート・エレメントを呼び出します。このルート・エレメントはデフォルトで同じ名前(RemoteContentPost)を持ちます。

  5. RemoteContentPostエレメントは、ソース・ファイル内のデータを変数として、該当するタイプのアセットのPreUpdateエレメントに渡します。

  6. 該当するタイプのアセットのPreUpdateエレメントは、そのアセットの変数値を設定してRemoteContentPostエレメントに戻ります。

  7. RemoteContentPostエレメントはそのアセットを作成します。

  8. WebサーバーはHTMLのストリームをXMLPostに返し、XMLPostはそのストリームを解析してインポート操作が成功したかどうかを判断して、結果を構成ファイルで指定されたテキスト・ファイルに記録します。

  9. インポートするアセットのアセット・タイプが検索エンジンを使用する場合、RemoteContentPostは新しいエレメントを索引付けします。

  10. 構成ファイルで特定のパラメータを設定した場合、RemoteContentPostは正常にインポートされたアセットのソース・ファイルを削除します。

20.2 XMLPostの構成ファイル

XMLPostの構成ファイル内には、次の3つのタイプのプロパティがあります。

特定の情報は、構成ファイルのRemoteContentPostセクションまたはソース・ファイル・セクションで構成できます。これらの情報としては、アセットが所属するサイトや、アセットに割り当てられるワークフローなどがあります。

たとえば、1つのコンテンツ管理サイトしかない場合や、インポートするすべてのアセットが同じサイトに属している場合は、そのサイトの名前を構成セクションで指定してください。そうすることで、その情報を各ソース・ファイルで繰り返し指定する必要がなくなります。システムに複数のコンテンツ管理サイトがある場合は、アセットが属するサイトを個別のソース・ファイル内で指定します。

この項の内容は、次のとおりです。

20.2.1 XMLPostの構成プロパティ

次の表では、XMLPostユーティリティが必要とするデータベース接続情報や他の一般的な構成指示内容を指定するプロパティを示しています。

表20-1 XMLPostの構成プロパティ

プロパティ 説明

xmlpost.xmlfilenamefilter

必須。

ソース・ファイルのファイル拡張子。通常はxmlに設定します。

例:

xmlpost.xmlfilenamefilter: .xml

xmlpost.proxyhost

オプション。

アセットのインポート先にするWebCenter Sitesデータベースと開発者のマシンの間にファイアウォールが配置されている場合は、このプロパティを使用してプロキシ・サーバーのホスト名を指定します。

例:

xmlpost.proxyhost: nameOfServer

xmlpost.proxyport

オプション。

アセットのインポート先となるWebCenter Sitesデータベースと開発者のマシンの間にファイアウォールが配置されている場合は、このプロパティを使用して、XMLPostの接続先となるプロキシ・サーバー上のポート番号を指定します。

例:

xmlpost.proxyport: 80

xmlpost.url

必須。

ポスト・エレメントのページ・エントリのURLの最初の部分。

XMLPostは、このプロパティで指定された値をページ名postargname(後述)で指定された値の前に付加することで、ポスト・エレメントのURLを作成します。

このプロパティで指定する値は、次の規則に従う必要があります。

  • WebCenter Sitesデータベースが配置されているサーバーの名前。

  • サーバー上にインストールされたアプリケーション・サーバー・ソフトウェアに適したCGIパス。WebLogicとWebSphereの場合は、このパスは/servlet/です。

  • ContentServerサーブレットの名前。

例:

xmlpost.url: http://servername/servlet/ContentServer

xmlpost.logfile

オプション。

各ソース・ファイルのインポート(ポスト)結果を記録するファイルの名前。

各ソース・ファイルは、ポスト要求を通じてWebCenter Sitesデータベースにポストされます。ポスト要求がWebサーバーから戻ってくると、XMLPostはWebサーバーが返したHTMLストリームを解析して、postsuccessパラメータとpostfailureパラメータを探します。次にXMLPostは、このパラメータで指定されたファイルに結果を書き込みます。

例:

xmlpost.logfile: ArticlePost.txt

xmlpost.success

オプション。

ポストが成功したかどうかを判断するために応答内で検索する文字列。

例:

xmlpost.success: Success!

xmlpost.failure

オプション。

ポストが失敗したかどうかを判断するために応答内で検索する文字列。

例:

xmlpost.failure: Error

xmlpost.deletefile

オプション。

WebCenter Sitesデータベースに正常にインポートされたソース・ファイルを削除するのかどうか。有効な値はy (yes)またはn (no)です。デフォルトでは、ソース・ファイルは削除されません。

例:

xmlpost.deletefile: y


20.2.2 ポスト・エレメントの構成プロパティ

次の表は、RemoteContentPostページにポストされる必要のある(およびRemoteContentPostエレメントに渡される必要のある)情報を指定する引数を示しています。これらの引数の値は、RemoteContentPostページにポストされるURLに付加されます。これらの引数は構成ファイル内でどのような順序でもかまいません。

表20-2 ポスト・エレメントの構成プロパティ

プロパティ 説明

xmlpost.numargs

必須。

URLに付加される名前と値のペアとして構成ファイルからXMLPostに渡されるいくつかの必須の変数がありますが、これらの変数のうち主なものはページ名です。このプロパティ(xmlpost.numargs)を使用して、構成ファイルによって渡される変数の数をXMLPostに通知します。

例:

xmlpost.numargs: 7

これらの名前と値のペアで独自のカスタム変数を指定することもできます。

xmlpost.argname1: pagename

必須。

RemoteContentPostエレメントのページ名。通常は、pagename引数はxmlpost.argname1として指定します。

例:

xmlpost.argname1: pagenamexmlpost.argvalue1: OpenMarket/Xcelerate/Actions/RemoteContentPost

xmlpost.argname2: AssetType

必須。

ソース・ファイル内で定義されているアセットのアセット・タイプ。通常は、AssetTypexmlpost.argname2として指定します。

例:

xmlpost.argname2: AssetType

xmlpost.argvalue2: Collection

AssetType引数の値は、このタイプのアセットが格納されている表の表名と完全に一致している必要があります。

xmlpost.argname3: authusername

必須。

アセットのインポート先になるWebCenter Sitesデータベースにログインするために、XMLPostが使用するユーザー名。通常は、authusernamexmlpost.argname3として指定します。

例:

xmlpost.argname3: authusername

xmlpost.argvalue3: editor

指定するユーザー名は、インポートするタイプのアセットが格納されている表に対する書込み権限を持っている必要があります。(つまり、そのユーザー名には適切なACLが割り当てられている必要があります。)

xmlpost.argname4: authpassword

必須。

アセットのインポート先となるWebCenter SitesデータベースにログインするためにXMLPostが使用するユーザーのパスワード。通常は、authpasswordxmlpost.argname4として指定します。

例:

xmlpost.argname4: authpassword

xmlpost.argvalue4: xceleditor

xmlpost.argname5: xmlpostdebug

オプション

xmlpost.logfileプロパティで指定されたXMLPostログ・ファイルに書き込まれる結果情報にデバッグ情報を含めるかどうか。

このプロパティは任意の値に設定できます。例:

xmlpost.argname5: xmlpostdebug

xmlpost.argvalue5: on

注意: デバッグを有効にする場合は、xmlpost.logfileプロパティの値を必ず含めてください。

xmlpost.argname6: inifile

オプション。

WebCenter Sitesデータベースに接続する際に使用するiniファイルの名前。通常は、inifilexmlpost.argname5として指定します。

例:

xmlpost.argname6: inifile

xmlpost.argvalue6: futuretense.ini

xmlpost.argname7: publication

オプション。

このプロパティは必須ではありませんが、インポートする各アセットのサイトを指定する必要があります。

システムで単一のコンテンツ管理サイト(パブリケーション)を使用している場合や、このタイプのすべてのアセットを同じサイト上で有効にする必要がある場合は、この引数を使用してそのサイトの名前を指定します。

例:

xmlpost.argname7: publicationxmlpost.argvalue7: Burlington Financial

システムで複数のコンテンツ管理サイトを使用している場合は、各アセットのサイトの値を個別のソース・ファイル内で指定する必要があります。詳細は、第20.2.3項「ソース・ファイルの構成プロパティ」を参照してください。

xmlpost.argname8:startmenu

オプション。

ワークフローを使用している場合に、インポートするアセットのすべてに同じワークフローを割り当てる場合は、この引数を使用してそれらのアセットのスタート・メニュー・ショートカットを設定します。(これはワークフローIDを新しいアセットに割り当てるスタート・メニュー・ショートカットです。)

例:

xmlpost.argname8: startmenu

xmlpost.argvalue8: New Article

このタイプのアセット用の複数のワークフローがある場合は、各アセットのスタート・メニュー・ショートカットの値を個別のソース・ファイル内で指定する必要があります。詳細は、第20.2.3項「ソース・ファイルの構成プロパティ」を参照してください。


20.2.3 ソース・ファイルの構成プロパティ

構成ファイル内のソース・ファイル・セクションでは、ソース・ファイル内で使用されているタグが指定されます。

タグは、このタイプのアセットが格納されている表の列名を表します。タグのペアの内側にあるコンテンツは、その列に書き込まれる情報です。構成ファイルには、アセット・タイプのプライマリ記憶域表の列ごとにタグをリストする必要があるため、アセット・タイプごとに別個の構成ファイルを用意する必要があります。

この項の内容は、次のとおりです。

20.2.3.1 サイトのプロパティ

アセット・タイプに関連するタグに加えて、特定のサイト構成プロパティを指定するためにすべてのアセット・タイプで使用できる4つのタグがあります。これらのプロパティでは、アセットを関連付けるサイトやアセットで使用するワークフローを指定します。次の表では、これらのサイト・タグを示しています。

表20-3 サイトのプロパティ

サイト・タグのプロパティ 説明

postpublication

yまたはn

(yesまたはno)

オプション。

アセットが属するサイトを指定するサイト名をソース・ファイルで示すことを指定します。

例:

postpublication: y

ソース・ファイル内でpublicationタグを使用して指定されたサイト(パブリケーション)値は、構成ファイルのXMLPostセクションのpublication引数で指定された値よりも優先されます。

postprimarypubid

yまたはn

(yesまたはno)

オプション。

アセットが属するサイトを指定するpubid(サイトの一意のID)の値をソース・ファイルで示すことを指定します。

例:

postprimarypubid: y

postpublist

yまたはn

(yesまたはno)

オプション。

アセットを共有するサイトのリストをソース・ファイルで示すことを指定します。

例:

postpublist: y

poststartmenu

yまたはn

(yesまたはno)

オプション。

アセットをワークフロー・プロセス内に配置するスタート・メニュー・ショートカットの値をソース・ファイルで示すことを指定します。

例:

poststartmenu: y


前述のとおり、インポートするすべてのアセットについてサイトまたはワークフローが同じである場合は、サイトまたはワークフローの値を引数として構成ファイルのXMLPostセクションで指定できます。そうすることで、同じ情報をすべてのソース・ファイルで繰り返し指定する必要がなくなります。

20.2.3.2 アセット・タイプのプロパティ

アセット・タイプに固有のタグを設定するには、そのタイプのアセットのデータベース表の各列のタグを指定します。ただし、構成ファイル内のすべてのタグでタグ付けされたデータをソース・ファイルに含める必要はありません。(当然ながら、ソース・ファイルには必須フィールドのデータを含める必要があります。)

フィールド(列)を表す各タグについて、そのタグの名前を指定するとともに、必要に応じてそのタグの追加の処理プロパティを指定します。タグの名前は、対応するフィールド(列)の名前です。追加のプロパティについては、タグの名前の前に単語を付加するという規則に従う必要があります。

次の表では、アセット・タイプに固有のタグを指定する方法を説明しています。

表20-4 アセット・タイプのプロパティ

タグのプロパティ 説明

posttagname

yまたはn

(yesまたはno)

必須。

タグの名前を指定します。この名前は、そのタグが表しているフィールドの名前と完全に一致している必要があります。

たとえば、nameフィールドには、このタグのプロパティを次のように指定します。

postname: y

trunctagname

N

(整数)

オプション。

このタグでマークされたソース・ファイル内のデータを途中で切り捨てるかどうか。

例:

truncname: 64

このプロパティをタグに設定すると、XMLPostが<name>タグ内で64文字を超える文字列を検出した場合は、64文字を超える部分を切り捨てて、残った64文字の文字列を変数に格納します。

notrimtagname

yまたはn

(yesまたはno)

オプション。

このタグの先頭または末尾の空白を削除するかどうか。空白が削除されないようにするには、このプロパティをy (yes)に設定します。

例:

notrimname: y

このプロパティを指定しない場合は、XMLPostはデフォルトでこのタグの空白を削除します。

multitagname

combine

または

separate

このプロパティは、単一のソース・ファイル内で同じタグが複数回使用されている場合は必須です。

ソース・ファイル内で同一のタグが複数回使用されている場合に、これらのタグのデータを格納する変数の数を決定します。このプロパティをcombineに設定した場合、すべてのタグのデータは、各値がカンマで区切られた形で(カンマ区切り文字列として)同じ変数に格納されます。

このプロパティをseparateに設定した場合、各タグのデータは別々の変数に格納されます。これらの変数を識別するために、seedtagnameで指定した値が変数名の後ろに付加されます。

たとえば、keywordフィールド(列)の場合は、次のようになります。

  • multikeyword: combineと設定した場合、XMLPostは、keywordタグでマークされたすべての値を同じkeyword変数に格納します。

  • multikeyword: separateおよびseedkeyword: 1と設定した場合、XMLPostは各値を別々の変数に格納します。XMLPostによって最初に検出された値は、keyword1という名前の変数に格納されます。2番目に検出された値は、keyword2という名前の変数に格納され、それ以降の値も同様です。

seedtagname

seed value

このプロパティは、multitagnameseparateに設定されている場合は必須です。

同一のタグが複数回使用されていて、これらのタグ内のデータを別々の変数に格納する場合に、その変数名の末尾に付加される連続番号の最初の番号を指定します。multitagnameの説明を参照してください。

例:

multikeyword: separate

seedkeyword: 1

filetagname

yまたはn

(yesまたはno)

このプロパティは、タグがアップロード・フィールド(URL列またはBLOB)を表している場合は必須です。

タグがURL列を持つフィールドを表している場合は、このプロパティを使用する必要があるとともに、ソース・ファイルでは、RemoteContentPostによってその列にアップロードするファイルの名前を指定する必要があります。

たとえば、Burlington Financialサンプル・サイトのイメージファイル・アセット・タイプは、urlpictureという名前のアップロード・フィールドを備えています。このイメージファイル・アセット・タイプの構成ファイルには、次のプロパティが含まれます。

posturlpicture: y

fileurlpicture: y

この場合は、イメージファイル・アセットのソース・ファイルでは、urlpictureフィールドの値を次のように指定します。

<urlpicture>relative_path_to/filename.jpg

</urlpicture>

ファイルの場所は、XMLPostユーティリティを実行しているディレクトリを基準にした相対パスで指定する必要があります。


20.2.4 XMLPostのサンプル構成ファイル

ここでは、Burlington Financialサンプル・サイトのイメージファイル・アセットをインポートするために使用する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: BurlingtonFinancial

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

20.3 XMLPostのソース・ファイル

ソース・ファイルは、Document Type Definition (DTD)ファイルを必要としない整形式XMLで構成されている必要があります。実際には、構成ファイルは、ソース・ファイル内で処理されるタグを定義することでDTDファイルのような役割を果たします。

ソース・ファイル内のデータは、そのタイプのアセットが格納されている表の列名と一致する名前を持つタグによってタグ付けされている必要があります。たとえば、Burlington Financialのイメージファイル・アセットのソース・ファイルでは、namecaptionpicutureurlなどの名前を持つタグが使用されています。

この章では、XMLソース・ファイルの生成を自動化する方法は説明しません。ソース・ファイルの作成方法は、データのソースと、そのデータをXMLファイルに変換するために使用するツールによって異なります。この章では、ソース・ファイルに含める必要のある内容と、XMLPostがソース・ファイルに対して実行する処理について説明します。

この項の内容は、次のとおりです。

20.3.1 XMLPostのサンプル・ソース・ファイル

ここでは、Burlington Financialのイメージファイル・アセットのサンプル・ソース・ファイルを示します。このファイル内のタグは、第20.2.4項「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という文字列になります。

20.3.2 XMLPostとファイル・エンコード方式

ソース・ファイル内のデータに使用されているファイル・エンコード方式が、WebCenter Sitesシステムのデフォルト・ファイル・エンコード方式ではないが、データベースがそのファイル・エンコード方式に対応している場合は、ソース・ファイルの先頭のXMLバージョン文で、その代替のファイル・エンコード方式を指定できます。

例:

<?xml version= "1.0" encoding="UTF-8" ?>

20.4 XMLPostユーティリティの使用

XMLPostユーティリティは、次のいずれかの方法で起動できます。

どの方法でXMLPostを起動する場合でも、次の情報を提供する必要があります。

この項の内容は、次のとおりです。

20.4.1 始める前に

  • XMLPostユーティリティを使用する前に、次の条件が満たされている必要があります。

    • 使用するアセット・タイプが作成されていること。(作成されていない場合は、アセットをインポートする先となるデータベース表がありません。)

    • 使用するコンテンツ管理サイトが作成されており、適切なアセット・タイプが各サイトに対して有効化されていること。

    • ワークフローを使用する場合は、使用するワークフロー・プロセスが作成されていること。

    • スタート・メニュー・ショートカットが作成されていること。ワークフローを使用する場合は、これらのショートカットによって適切なワークフロー・プロセスが適切なアセット・タイプに割り当てられていること。

    • 使用するアセット・タイプのテンプレートが作成されていること。

    • 使用するアセット・タイプのアソシエーション・フィールドが作成されていること。ただし、XMLPostを使用してアソシエーション・フィールドの値を設定するには、カスタム・コードが必要です。詳細は、第20.5項「RemoteContentPostとPreUpdateのカスタマイズ」を参照してください。

  • XMLPostを起動する際は、UTF-8エンコード方式が確実に使用されるようにするために、クラスパスの前に-Dfile.encoding=UTF-8というコマンドを挿入してください。


    注意:

    すべての.jarファイルのバージョン番号を確認してください。バージョン番号は、WebCenter Sitesのパッチ間で異なる可能性があります。


20.4.2 コマンドラインからのXMLPostの実行

次の手順を実行します。

  1. 構成ファイルとソース・ファイルを、WebCenter Sitesがインストールされているシステム上のディレクトリに配置します。

  2. そのディレクトリから次のコマンドを(単一のコマンドラインで)実行します。

    この例では、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.4.jar;
    <cs_app_dir>\WEB-INF\lib\commons-codec-1.4.jar;
    <cs_app_dir>\WEB-INF\lib\commons-logging-1.1.1.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.1.2.jar;
    <cs_app_dir>\WEB-INF\lib\httpcore-4.1.2.jar;
    <cs_app_dir>\WEB-INF\lib\httpmime-4.1.2.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-2.5.5.jar;
    <cs_app_dir>\WEB-INF\lib\sites-security-11.1.1.8.0.jar;
    <cs_app_dir>\WEB-INF\lib\esapi-2.0.1.jar;
    <cs_app_dir>\WEB-INF\lib\log4j-1.2.16.jar;<j2eeSDK_dir>\j2ee.jar;
    <cs_app_dir>\WEB-INF\classes
     COM.FutureTense.XML.Post.XMLPostMain-sSourcefile.xml -cConfigfile.ini
    

    ここで:

    • -Xmx512mは、使用する最大メモリーを設定します。これは、大きな挿入操作に必要です。

    • <cs_install_dir>は、WebCenter Sitesのインストール先ディレクトリです。

    • <cs_app_dir>は、WebCenter Sitesアプリケーションが配置されているアプリケーション・サーバー上のディレクトリです。

    • <j2eeSDK_dir>は、J2EE SDKのインストール先ディレクトリです。

    ソース・ファイルを指定するには複数の方法があります。詳細は、第20.4.3項「ソース・ファイルを指定するための方法」を参照してください。


注意:

j2ee.jarファイルは、J2EE SDKに含まれています。XMLPostを実行する前に、このSDKをインストールする必要があります。

ソース・ファイルと構成ファイルが作業中のディレクトリ内に存在しない場合は、これらのファイルのパスをコマンドラインで指定する必要があります。例: -s/products/product.xml


20.4.3 ソース・ファイルを指定するための方法

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.4.jar;
<cs_app_dir>\WEB-INF\lib\commons-codec-1.4.jar;
<cs_app_dir>\WEB-INF\lib\commons-logging-1.1.1.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.1.2.jar;
<cs_app_dir>\WEB-INF\lib\httpcore-4.1.2.jar;
<cs_app_dir>\WEB-INF\lib\httpmime-4.1.2.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-2.5.5.jar;
<cs_app_dir>\WEB-INF\lib\sites-security-11.1.1.8.0.jar;
<cs_app_dir>\WEB-INF\lib\esapi-2.0.1.jar;
<cs_app_dir>\WEB-INF\lib\log4j-1.2.16.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.4.jar;
<cs_app_dir>\WEB-INF\lib\commons-codec-1.4.jar;
<cs_app_dir>\WEB-INF\lib\commons-logging-1.1.1.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.1.2.jar;
<cs_app_dir>\WEB-INF\lib\httpcore-4.1.2.jar;
<cs_app_dir>\WEB-INF\lib\httpmime-4.1.2.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-2.5.5.jar;
<cs_app_dir>\WEB-INF\lib\sites-security-11.1.1.8.0.jar;
<cs_app_dir>\WEB-INF\lib\esapi-2.0.1.jar;
<cs_app_dir>\WEB-INF\lib\log4j-1.2.16.jar;<j2eeSDK_dir>\j2ee.jar;
<cs_app_dir>\WEB-INF\classes
 COM.FutureTense.XML.Post.XMLPostMain-sxmlpostfiles -carticlepost.ini

リスト・ファイル

ディレクトリを指定するかわりに、次のプロパティが含まれた.iniファイル形式のリスト・ファイルを作成できます。

  • numfiles: リストに含まれるファイルの数を指定します。

  • fileN: ファイルのパスとファイル名を指定します。Nは、リスト・ファイル内のそのファイルの順番を表します。リストの1番目のファイルはfile1、2番目のファイルはfile2というようになります。

    リストの最後のfileNのNの値は、numfilesプロパティで指定された値と一致する必要があります。XMLPostは、numfilesプロパティで指定された数のファイルをインポートした時点で、インポートを終了します。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.4.jar;
<cs_app_dir>\WEB-INF\lib\commons-codec-1.4.jar;
<cs_app_dir>\WEB-INF\lib\commons-logging-1.1.1.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.1.2.jar;
<cs_app_dir>\WEB-INF\lib\httpcore-4.1.2.jar;
<cs_app_dir>\WEB-INF\lib\httpmime-4.1.2.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-2.5.5.jar;
<cs_app_dir>\WEB-INF\lib\sites-security-11.1.1.8.0.jar;
<cs_app_dir>\WEB-INF\lib\esapi-2.0.1.jar;
<cs_app_dir>\WEB-INF\lib\log4j-1.2.16.jar;<j2eeSDK_dir>\j2ee.jar;
<cs_app_dir>\WEB-INF\classes
 COM.FutureTense.XML.Post.XMLPostMain-sc:\xmlpostfiles.lst -carticlepost.ini

20.4.4 バッチ・プロセスとしてのXMLPostの実行

複数のタイプのアセットをインポートする場合は、アセット・タイプごとに固有の構成ファイルを指定する必要があり、その結果としてアセット・タイプごとに個別にXMLPostを実行する必要があります。XMLPostは、手動で実行することも、バッチ・ファイルから自動的に実行することもできます。このバッチ・ファイル内には、アセット・タイプごとに1つのコマンドライン文を記述します(この文では構成ファイルと、ソース・ファイルの場所を指定します)。前の項で説明した方法のいずれかを使用してソース・ファイルを指定できます。

20.4.5 プログラムからのXMLPostの実行

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");
}

ソース・ファイルと構成ファイルの完全パスを指定する必要があります。

20.5 RemoteContentPostとPreUpdateのカスタマイズ

必要に応じて、アセット・タイプのRemoteContentPostエレメントやPreUpdateエレメント内のコードを追加または変更することで、XMLPostプロセスをカスタマイズできます。

アセットに関する情報を他の表にインポートするには、そのアセット・タイプのPreUpdateエレメントを変更する必要があります。

この項では、次の2つのカスタマイズ例を紹介します。

この項の内容は、次のとおりです。

20.5.1 プログラムによるフィールド値の設定

記事アセット・タイプには特別な条件があります。このアセット・タイプには、「新規」フォームと「編集」フォーム内に「ヘッドライン」という名前のフィールドがありますが、「ヘッドライン」の値は、Article表のdescription列に格納されています。 記事アセットのインポート時にヘッドライン・テキストがArticle表の正しい列(description列)に書き込まれるようにするために、記事アセット・タイプのPreUpdateエレメントが変更されています。

まず、WebCenter Sites製品キット内のXcelerate/Samples/XMLPostディレクトリに配置されたArticlePost.iniという名前のサンプル構成ファイルを調べます。このファイルには、次のように「ヘッドライン」フィールドに対して指定されたタグが含まれています。

# headline gets stored in the description field
postheadline: y

記事アセット・タイプのPreUpdateエレメント内の次のコードは、RemoteContentPostVariable.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(必須)。列に挿入するデータ。

20.5.2 アセットのアソシエーションの設定

あるアセットが別のアセットとのアソシエーションを持っている場合、その情報はAssetRelationTree表に書き込まれます。XMLPostの標準動作では、アセットの情報はそのアセット・タイプのプライマリ記憶域表にのみ書き込まれるため、アセットのアソシエーションを指定するには、そのアセット・タイプのPreUpdateエレメントを変更する必要があります。

たとえば、記事アセット・タイプにはMainImageFileという名前のアソシエーション・フィールドがあります。コンテンツ・プロバイダは記事アセットを作成する際に、適切なイメージファイル・アセットをこのフィールドで選択します。

WebCenter Sites製品キット内のXcelerate/Samples/XMLPostディレクトリに配置されたArticlePost.iniという名前のサンプル構成ファイルを調べてください。このファイルには、次のようにMainImageFileアソシエーション・フィールドに対して指定されたタグが含まれています。

postMainImageFile-name: y

記事アセット・タイプのPreUpdateエレメント内の次のコードは、RemoteContentPostVariable.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.GETASSET.LOADの詳細は、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。

20.6 XMLPostのトラブルシューティング

ここでは、XMLPostユーティリティの実行時に発生する可能性のあるいくつかの問題について簡単に説明します。

XMLPostが実行されず、ログ・ファイル・メッセージが作成されない

XMLPostが起動しない理由としては次の2つが考えられます。

XMLPostでエラーが発生して、ログ・ファイルに「エンティティの欠落」というメッセージが記録されている

このメッセージがログ・ファイルに記録されている場合は、ソース・ファイル内に無効なXMLが含まれているということです。このような場合は通常、XMLにHTMLコードが含まれており、そのコードに含まれている特殊なHTML文字がそれらのHTML文字の文字エンティティ・コードで参照されていません。最適なコーディング手法として、すべてのHTMLコードを<![CDATA[...]]>タグ内に埋め込んでください。

XMLPostがアセットを保存しようとするとエラー105が発生する

アセットの保存時にデータベース・エラーが発生する理由はいくつか存在します。

105エラーの一般的な理由の1つは、XMLPostが保存しようとしているデータが大きすぎて列(フィールド)に収まらないことです。この問題の解決方法は目的に応じて異なります。列に収まらないデータが途中で切り捨てられてもかまわない場合は、truncタグのプロパティを構成ファイルに追加することで解決できます。たとえば、truncbody: 2000と指定します。

このエラー・コードのもう1つの一般的な理由は、同じ名前を持つそのタイプのアセットがすでに存在していることです。そのアセットの名前を変更してから、そのアセットをもう一度インポートしてみてください。

ポスト・エレメントのデバッグ

RemoteContentPostエレメントになんらかの変更を加えた場合や、独自のポスト・エレメントを作成した場合は、XML Debuggerユーティリティを使用してそのポスト・エレメントを使用前にテストできます。

XML Debuggerを使用するには、xmlpost.urlプロパティの設定でContentServerDebugServerに置き換えます。

たとえば、xmlpost.url: http://6ipjk/servlet/ContentServer

xmlpost.url: http://6ipjk/servlet/DebugServerに変更します。

XML Debuggerユーティリティの詳細は、第8章「WebCenter Sitesのツールおよびユーティリティ」を参照してください。