プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebCenter Sitesでの開発
12c (12.2.1)
E72540-01
目次へ移動
目次

前
次

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

XMLPostユーティリティを使用すると、すべてのタイプのアセットをWebCenter Sitesデータベースにインポートできます。

アセットのインポートの詳細は、次の項を参照してください。

フレックス・アセット・データ・モデルの使用時のアセットのインポートの詳細は、「フレックス・アセットのインポート」を参照してください。

42.1 XMLPostユーティリティを使用したアセットのインポートについて

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

XMLPostユーティリティを使用して、データをWebCenter Sitesデータベースにインポートします。このユーティリティは、WebCenter SitesFormPoster 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ページの名前を変更してシステムへのハッキング試行を防止する必要があります。

42.1.1 開発者が実行する手順

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

WebCenter Sitesデータベースにアセットをインポートするときに実行する一般的な手順は、次のとおりです。

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

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

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

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

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

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

42.1.2 XMLPostとWebCenter Sitesが実行する処理

XMLPostユーティリティを起動してソース・ファイルをインポートした後に、図42-1およびこの図に続く手順に示すプロセスが開始されます。

図42-1 XMLPostユーティリティのプロセス図

図42-1の説明が続きます
「図42-1 XMLPostユーティリティのプロセス図」の説明
  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は正常にインポートされたアセットのソース・ファイルを削除します。

42.2 XMLPost構成ファイルの使用

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

  • データベースと環境に関する情報をXMLPostに提供するプロパティ。これらのプロパティは、独自のポスト・エレメントを作成した場合でも変化しません。

  • ポスト(インポート)・プロセスの構成値を提供するプロパティ。この章では、RemoteContentPostエレメントが正常に機能するために指定する必要のあるプロパティについて説明します。

    プロパティの例としてあげられるのは、RemoteContentPostを呼び出すページのURL、データベース内のアセット・タイプ表に対する書込み権限をXMLPostに付与するユーザー名とパスワード、インポートするアセット・タイプの名前、エラーのログ記録方法、インポートするすべてのアセットについて同じであるデータ値などです。

  • ソース・ファイル内で使用されているタグを指定するプロパティ。

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

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

この項には次のトピックが含まれます:

42.2.1 XMLPostの構成プロパティ

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

表42-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

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

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

表42-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: Fiscal News

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

xmlpost.argname8:startmenu

オプション。

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

例:

xmlpost.argname8: startmenu

xmlpost.argvalue8: New Article

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

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

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

この項には次のトピックが含まれます:

42.2.3.1 サイトのプロパティ

アセット・タイプに対して使用可能なタグに加えて、表42-3では、アセットを関連付けるサイトやアセットで使用するワークフローを指定できる別のタグについて説明します。

表42-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セクションで指定できます。そうすることで、同じ情報をすべてのソース・ファイルで繰り返し指定する必要がなくなります。

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

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

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

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

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

タグのプロパティ 説明

posttagname

yまたはn

(yesまたはno)

必須。

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

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

postname: y

trunctagname

N

(integer)

オプション。

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

例:

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は各値を別々の変数に格納します。最初に検出された値は、keyword1という名前の変数に格納されます。2番目に検出された値は、keyword2という名前の変数に格納され、それ以降の値も同様です。

seedtagname

seed value

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

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

例:

multikeyword: separate

seedkeyword: 1

filetagname

yまたはn

(yesまたはno)

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

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

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

posturlpicture: y

fileurlpicture: y

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

<urlpicture>relative_path_to/filename.jpg

</urlpicture>

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

42.2.4 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

42.3 XMLPostソース・ファイルの使用

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

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

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

この項には次のトピックが含まれます:

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

ここでは、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という文字列になります。

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

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

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

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

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

  • コマンドラインから

  • スクリプト・ファイルまたはバッチ・ファイルから

  • プログラムから

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

  • 使用する構成ファイルの名前。

  • ソース・ファイル。ソース・ファイルは、単一のファイルとして、ファイルのリストとしてまたはファイルのディレクトリとして指定できます。

この項には次のトピックが含まれます:

42.4.1 開始する前に

  • 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の使用が発生する可能性があります。

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

XMLPostを実行するには:

  1. 構成ファイルとソース・ファイルを、WebCenter Sitesがインストールされているシステム上のディレクトリに配置します。
  2. XMLPostを起動し稼働するには、クラスパスに<ORACLE_HOME>\wcsites\webcentersites\sites-home\lib\*および<ORACLE_HOME>\oracle_common\modules\clients\*ディレクトリを設定します。
  3. そのディレクトリから次のコマンドを(単一のコマンドラインで)実行します。

    この例では、LinuxおよびSolarisを含むUNIXベースのシステム用に、Windowsの構文を使用します。区切りには、スラッシュ(/)およびコロン(:)を使用します。

    注意:

    iniファイルにユーザー資格証明を指定できなくなりました。これらを指定する唯一の方法は、コマンドラインを使用する方法です。

    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\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\ojdl-1.1.0-150521.1418.jar;<j2eeSDK_dir>\j2ee.jar;
    <cs_app_dir><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アプリケーションが配置されているアプリケーション・サーバー上のディレクトリです。

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

注意:

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

コマンドラインで、作業ディレクトリ内にないソース・ファイルおよび構成ファイルへのパスを指定します。例: -s/products/product.xml

42.4.3 ソース・ファイルの識別

XMLPostユーティリティに対してソース・ファイルを指定するためのソース・パラメータでは、次のいずれかを指定できます。

  • 単一のファイル。

  • ファイルのディレクトリ。そのディレクトリ内のファイルのうち、構成ファイルで指定されたファイル拡張子(通常は.xml)を持つすべてのファイルがポスト(インポート)されます。

  • インポートするすべてのファイルのリストが記述されたリスト・ファイル。このファイルは.iniファイルと似ていますが、ファイル拡張子は.lstです。

42.4.3.1 単一のファイル

単一のファイルの内容をポストするには、そのファイルの名前をコマンドラインで指定します。次の例では、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

42.4.3.2 ファイルのディレクトリ

ディレクトリ内のすべてのファイルをポストするには、そのディレクトリのパスをコマンドラインで指定します。次の例では、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

42.4.3.3 リスト・ファイル

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

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

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

    リストの最後のfileNNの値は、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

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

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

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

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

42.5 RemoteContentPostとPreUpdateのカスタマイズ

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

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

  • Articleアセット・タイプのPreUpdateエレメントをカスタマイズして、このエレメントで説明フィールド内のヘッドライン情報が設定されるようにします。Article表にはdescription列がありますが、「新規」記事フォームや「編集」記事フォーム内のフィールドの名前は「ヘッドライン」になります。

  • Articleアセット・タイプのPreUpdateエレメントをカスタマイズして、このエレメントが記事にアソシエーションを追加できるようにします。

この項には次のトピックが含まれます:

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

記事アセット・タイプは、「ヘッドライン」と呼ばれる「新規」および「編集」フォーム内にフィールドを持ち、その値はArticle表内のdescription列に格納されます。Articleアセットのインポート時にヘッドライン・テキストが正しい列(description列)に書き込まれるようにするために、Articleアセット・タイプの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: (必須)。列に挿入するデータ。

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

アセット間のアソシエーションに関する情報は、AssetRelationTree表に書き込まれます。XMLPostの標準動作では、アセットの情報はそのアセット・タイプのプライマリ記憶域表にのみ書き込まれるため、アセットのアソシエーションを指定するには、そのアセット・タイプのPreUpdateエレメントを変更する必要があります。たとえば、Articleアセット・タイプには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.GETおよびASSET.LOADの詳細は、Oracle WebCenter Sitesタグ・リファレンスを参照してください。

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

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

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

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

  • 構成ファイル内のxmlpost.URLプロパティの設定で無効なサーバー名が指定されています。

  • インポート先のシステム上でWebCenter Sitesが実行されていません。それを起動してください。

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

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

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

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

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

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

RemoteContentPostエレメントを変更した場合、または独自のポスティング・エレメントを作成した場合、XML Debuggerユーティリティを使用してこのエレメントをテストします。XML Debuggerを使用するには、xmlpost.urlプロパティの設定でContentServerDebugServerに置き換えます。たとえば、xmlpost.url: http://6ipjk/servlet/ContentServerxmlpost.url: http://6ipjk/servlet/DebugServerに変更します

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