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

前
 
次
 

14 ディスクへのエクスポートのパブリッシュの様々なトピックおよび承認プロセス

この章では、ディスクへのエクスポートのパブリッシュの主な概念と機能について説明します。また、ディスクへのエクスポートのパブリッシュに関連があることから、承認プロセスについても説明します。この章を読む際は、承認コンテキストとパブリッシュ・コンテキストに留意してください。両者は通常は別個のものです。たとえば、承認テンプレート、パブキーおよび開始ポイントは一方のコンテキストにのみ適用され、他方には適用されません。ただし、承認システムとパブリッシュ・システムは互いに依存しているので、ある程度の相互作用があります。

この章は、次の項で構成されています。

14.1 ディスクへのエクスポートのパブリッシュの用語

ミラーリングのパブリッシュの場合、承認およびパブリッシュの両方のステージで、依存性はアセット・モデルによって決まります。一方、ディスクへのエクスポートのパブリッシュは、承認およびパブリッシュの両方のステージで、完全なテンプレートドリブン・プロセスです。承認テンプレートとパブリッシュ・テンプレートで指定されている依存性が異なる場合(このような状況はお薦めしません)、非承認コンテンツがパブリッシュされる可能性が高くなります。

テンプレートは、開発者がコード化します。ただし、パブリッシュ・セッションに悪影響を及ぼさないために、WebCenter Sites管理者(およびパブリッシュを実行する他のユーザー)は、起動するテンプレートおよび期待される結果について理解する必要があります。

この章では、まずディスクへのエクスポートのパブリッシュで最も一般的に使用される用語について説明し、次に承認システムの機能について詳しく説明します。最後に、アセットとテンプレートの間の様々な関係によって承認とパブリッシュの結果が決まる仕組みについて、いくつかの例を使用して説明します。


注意:

ここで説明する用語は、ディスクへのエクスポートのパブリッシュにのみ適用されます。パブリッシュ・キー依存性および参照などの用語は、ミラー・パブリッシュではまったく異なる意味を持っていますが、このドキュメントでは説明しません。


この項は、次のトピックで構成されています。

14.1.1 ページ

ディスクへのエクスポートのパブリッシュのコンテキストでは、ページは、通常は、ディスクにエクスポートされるHTMLファイルを指します。(このファイルをページ・アセット・タイプと混同しないでください。)エクスポートされたページはそれぞれ、第14.1.2項「パブリッシュ・キー」によって表されます。

14.1.2 パブリッシュ・キー

パブリッシュ・キー(またはパブキー)は、完全にパブリッシュ時にのみ使用される用語です。パブキーは最小パブリッシュ単位を表します。ディスクへのエクスポートのパブリッシュでは、エクスポートされたファイルです(第14.1.1項「ページ」と同じ。ページ・アセット・タイプと混同しないでください)。

パブキーは、アセットおよびパブリッシュ時テンプレート(第14.2.1項「承認テンプレート」と混同しないでください)という2つの構成要素で定義されます。

ディスクへのエクスポートのパブリッシュでは、最初のパブキーは第14.3.2項「開始ポイント」です。開始ポイントは、パブリッシュ・セッションを開始するユーザーが定義します。他のパブキーはすべて、パブリッシュ中に検出されて記録されます。

14.1.3 パブリッシュ・キュー

パブリッシュ・キューは、パブリケーションの待機中のパブキーのリストです。パブリッシュ・キューにパブキーを追加するには、その第14.1.4項「プライマリ・アセット」を承認する必要があります。

14.1.4 プライマリ・アセット

プライマリ・アセットは、パブキーの定義に使用します。わかりやすく言うと、プライマリ・アセットのIDとタイプが、テンプレートのcidパラメータとcパラメータになります。プライマリ・アセットのページをエクスポートするには、プライマリ・アセットを承認する必要があります。


注意:

承認されていないと判断されたプライマリ・アセットのページは、エクスポートされません。その結果、使用する承認テンプレートおよびパブリッシュ・テンプレートによっては、パブリッシュの宛先で機能しないリンクが作成される可能性があります。

ターゲット宛先に存在することが予想される依存性を検証できるように承認テンプレートをコード化する最終的な責任は、開発者にあります。


14.2 承認およびディスクへのエクスポートのパブリッシュ

ページをエクスポートするには、まずページのプライマリ・アセットを承認する必要があります。プライマリ・アセットの承認は、その依存アセットの承認状態が条件になります。これは、プライマリ・アセットの承認テンプレートで記述されます。依存アセットの依存性は、それ自体の承認テンプレートによって詳細に記述されます。


注意:

この承認テンプレートは必ずしもアセットのレンダリングに使用されるものではないので、承認システムを経由しないでアセットをパブリッシュすることは可能です。この意味合いなどの詳細は、第14.5項「動作と機能」および第14.6項「承認テンプレートとパブリッシュ時テンプレートが異なる場合」を参照してください。

また、(ページの非プライマリ・アセットに関連する)構成依存性(第14.3項「ディスクへのエクスポートのパブリッシュ」を参照)は、承認しなくても、エクスポートされたページに表示されます(非承認アセットのフィルタリングの詳細は、Oracle Fusion Middleware WebCenter Sites: タグ・リファレンス<render:filter>タグを参照)。


この項は、次のトピックで構成されています。

14.2.1 承認テンプレート

ディスクへのエクスポートのパブリッシュにおける承認の目的は、開発者が依存性を定義することによって正しいコンテンツが原型を維持したままパブリッシュされることを保証できるようにすることです。

ミラーリングのパブリッシュの場合、承認およびパブリッシュの両方のステージで、アセットの依存性はアセット・モデルによって決まります。一方、ディスクへのエクスポートのパブリッシュは、完全にテンプレートによって決まります。したがって、承認動作(およびパブリッシュ時動作)は、承認テンプレート(およびパブリッシュ時テンプレート)を記述した開発者によって詳細に定義されます。その後で、WebCenter Sitesが承認テンプレートを使用して、アセットの依存性を検出します。アセットが承認テンプレートに基づいてパブリッシュされている場合、その承認依存性と第14.3.3項「構成依存性」は同じであると考えられます。

承認テンプレートの割当てには、「パブリッシュの宛先」フォームの「デフォルト・テンプレートの設定」機能を使用します。

  • デフォルト・テンプレートが明示的に選択されていない場合、承認システムはアセットのデフォルト・テンプレートを選択します。

  • 承認テンプレートとデフォルト・テンプレートがどちらも指定されていない場合、アセットは、承認テンプレートを使用しないで承認されます(すなわち、承認依存性はありません)。

承認テンプレートが複数サイト間で共有されている場合、承認システムは現在のサイトに対応するサイト・エントリを選択します。

14.2.2 承認キュー

承認キューは、承認表が最新の状態に維持されるように、アセット変更イベントを処理します。たとえば、アセットがパブリケーションを承認された後に変更された場合、承認キューでアセットを非承認にする、すなわちパブリッシュ・キューから拒否することによってこの変更を処理します。

管理者が承認キューを直接操作することは決してありません。キューは、デフォルトでは5分間隔で実行されます。ただし、承認機能を使用する機能(「パブリッシュ」タブなど)を起動すると、承認情報を最新の状態に維持するために、画面がレンダリングされる前に承認キューが強制的に実行されます。

14.2.3 承認依存性

アセットを承認する場合、その第14.2.1項「承認テンプレート」を使用して、承認依存性を判断します。承認依存性は、次のタグによって作成されます。

  • <asset:load>

  • <asset:loadall>

  • <assetset:setasset>

  • <assetset:setlistedassets>

  • <render:logdep>

  • <render:getpageurl>

  • <render:gettemplateurl>

  • <render:gettemplateurlparameters>

アセットAを承認する場合、そのテンプレート(またはテンプレートでコールされている他のエレメント)で前述のいずれかのタグを使用してアセットBを参照していると、AのBに対する承認依存性が作成されます。これは一般に、Aを承認する場合は、Bも承認する必要があることを意味します。

承認依存性のタイプ

承認依存性は承認時に作成され、使用されます。パブリッシュ時依存性と(両者が一致する可能性はありますが)混同しないでください。ディスクへのエクスポートのパブリッシュの承認には、次の2つのタイプの承認依存性が関連します。

  • テンプレート依存性

  • 参照依存性

テンプレート依存性は、アセットの承認テンプレートで別のアセットを使用してコンテンツを定義している場合に作成されます。たとえば、アセットAの承認テンプレートでアセットBをロードしている場合、AはBに対するテンプレート依存性を持ちます。もっと実際的な用語で言えば、記事アセットを表示するページ・アセットの承認テンプレートがある場合、記事アセットがページで使用されているので、テンプレート依存性になります。テンプレート依存性は、次のタグによって作成されます。

  • <asset:load>

  • <asset:loadall>

  • <assetset:setasset>

  • <assetset:setlistedassets>

  • <render:logdep>

参照依存性は、あるページから別のページへのリンクが作成される際に生成されます。これらは、2つのページのプライマリ・アセット間の参照依存性として登録されます。たとえば、アセットAの承認テンプレートから、アセットBがプライマリ・アセットであるページへのハイパーリンクを作成した場合、承認システムはこれをアセットAのBに対する参照依存性として登録します。このような依存性を生成するタグは次のとおりです。

  • <render:getpageurl>

  • <render:gettemplateurl>

  • <render:gettemplateurlparameters>

(ディスクへのエクスポートのパブリッシュにおける)テンプレート依存性は、exact依存性がデフォルトです。Bが変更されている場合、Aを承認するにはBを承認する必要があります。参照依存性は、常にexists依存性です。Bを一度承認してパブリッシュした場合、Aを再パブリッシュするためにBを再承認する必要はありません。

いずれかのタグでdeptype="none"が設定されている場合は例外です。その場合、タグによって承認依存性は一切作成されません。このことは、承認中にレコードが作成されないことを意味します。ディスクへのエクスポートのパブリッシュやライブ・サイトなど、他のすべてのコンテキストでは、deptype属性は無視されます。

14.3 ディスクへのエクスポートのパブリッシュ

ディスクへのエクスポートのパブリッシュ・プロセスでは、3つの主なコンポーネントを使用します。

14.3.1 パブリッシュ時テンプレート

パブリッシュ時テンプレートの目的は、コンテンツをファイルとしてレンダリングすることです。通常は、パブリッシュ時テンプレートは承認テンプレートと同一です。ただし、両者が異なる場合は、事前に承認しなくてもコンテンツをパブリッシュできます。承認システムをバイパスするには、パブリッシュ可能なコンテンツを検証できる手段を開発者が提供する必要があります。

14.3.2 開始ポイント

開始ポイントは、パブリッシュ時にエクスポートを開始するパブキーです。通常、開始ポイントは、サイトで、すべてのページではなくても、最も多くのページにリンクするように選択されます。(このページは必ずしもホーム・ページである必要はなく、たとえば、多数のリンクが設定されているサイドバーにすることもできます。管理者が任意に選択できます。)ディスクへのエクスポートのパブリッシュ・システムは、開始ポイントを起点にしてサイトをクロールし、新しいパブキーを検出すると、それを記録します。

14.3.3 構成依存性

構成依存性は、アセットを使用して生成されたページのアセットに対する依存性です。これらはページの第14.3.1項「パブリッシュ時テンプレート」のロジックによって決まります。構成依存性は、エクスポートされたページにレンダリングする内容をテンプレートの指示に従って決定し、その際deptype属性は完全に無視されます。承認テンプレートでテンプレート依存性と参照依存性を作成したタグと同じタグで、パブリッシュ時の構成依存性も作成します。タグのリストは、第14.2.3項「承認依存性」を参照してください。

14.4 よくある質問

承認テンプレートはどのように選択すればよいですか。

承認テンプレート(指定されている場合)は、特定のアセットを検証するために承認システムが使用する唯一のテンプレートです。このテンプレートは、開始ポイントの設定内容によっては、パブリッシュ時に使用されない場合もあります。最善策として、想定するアセットの依存性が最もよく表現されている承認テンプレートを設定することをお薦めします。

依存性の最も代表的な組合せが含まれるテンプレートが、アセットをパブリッシュする際に必要なテンプレートと異なる場合はどうなるでしょうか。そのテンプレートはそのタイプのアセットの承認テンプレートとして設定し、必要なテンプレートは開始ポイントとして使用してください。

データ・モデル依存性は何か関係ありますか。

アソシエーション、属性などは、ディスクへのエクスポートのパブリッシュでは使用しません。重要なのはテンプレートで設定されている依存性のみです。

パブリッシュ時の構成依存性が追跡されるのはなぜですか。

ページをエクスポートした後、そのコンテンツは凍結されます。しかし、そのページの生成に使用したアセットが変化して、影響を受けるページが古くなる可能性があります。

WebCenter Sitesは、依存性を記録しているので、(古くなったページを再パブリッシュするという前提で)更新する必要があるページを管理者に通知できます。再パブリッシュのオプションとして、自動リフレッシュと手動リフレッシュの2つが用意されています。

14.5 動作と機能

ここでは、ディスクへのエクスポートのパブリッシュの動作を示す簡単なシナリオについて説明します。

関連するアセット・タイプは、ページおよびHelloArticle (HelloAssetWorldより)です。テンプレートは、Ttemplate、RTemplateおよびdummyTemplateです。

わかりやすくするために、アセットIDはテンプレートにハードコードされています。通常はハードコードではなく、なんらかの方法でアセットがロードされます。したがって、開発者は、依存性を追加設定しない場合、タグにdeptype='none'属性を設定する必要があります。テンプレート・コードの詳細は、第14.7項「サンプル・テンプレート」を参照してください。

14.5.1 例1: テンプレート依存性

設定: ページPアセットは、承認およびパブリッシュの両方でTtemplateを使用します。TtemplateはHelloArticle Aをロードするので、テンプレート依存性が確立します。

開始ポイント: P+Ttemplate

パブキー(エクスポートされたファイル): P+Ttemplate

承認依存性: ページPには、<render:logdep>によるTtemplateに対するテンプレート依存性および<asset:load>によるHelloArticle Aに対するテンプレート依存性があります。Ttemplateはリンクを作成しないので、参照依存性はありません。

パブリッシュ依存性: 開始ポイントが唯一のパブキーなので、1つのファイルのみエクスポートされます。

エクスポートされるページは、テンプレートで実際に使用されることがないので、パブリッシュ時の構成依存性がありません。Pを承認する必要がある唯一の理由は、Pがエクスポートされるページのプライマリ・アセットだからです。したがって、パブリッシュ時に決定される唯一の構成依存性は、エクスポートされるページのAおよびTtemplateに対する依存性です。

表14-1 テンプレート依存性

アクション 承認ステータス パブリッシュ・ステータス コメント

初期

承認済: PATtemplate

パブリッシュ済: AおよびTtemplate

Pは、テンプレートによって参照されていないので、パブリッシュされませんでした

Pの編集

PのステータスがChangedになります。

変更による影響はありません。

Pに対する構成依存性がないため、変更による影響はありません。

Aの編集

PのステータスがHeldになります。

AのステータスがChangedになり、Pの再承認が必要になります。

承認後にページが再パブリッシュされます。

Pは、Aに対してテンプレート依存性を持つので保留されますが、後で承認されることによって再びパブリッシュ可能になります。


14.5.2 例2: 参照依存性

設定: ページPアセットは、承認およびパブリッシュの両方でRtemplateを使用します。RtemplateはHelloArticle Aを参照し、AはdummyTemplateによってレンダリングされます。

開始ポイント: P+Rtemplate

パブキー(エクスポートされたファイル): P+RtemplateA+dummyTemplate

承認依存性: ページPは、そのRtemplateに対して所定の<render:logdep>テンプレート依存性があります。また、<render:getpageurl>によりAに対して参照依存性を持ちます(ただし、dummyTemplateに対する依存性はありません。これは、ページ間の依存性は、それらのプライマリ・アセット間でのみ記録されるからです)。dummyTemplateはどのタグからも参照されないので、承認依存性には関与しません。

パブリッシュ依存性: 関連するタグは<render:logdep>および<render:getpageurl>です。これらのタグにより、RtemplateおよびAとしてパブリッシュ時の構成依存性が決定します。前述したように、ページPは、どのテンプレートからも使用されていないので、構成依存性がありません。エクスポートで<render:getpageurl>を検出することによって、別のページが必要であることがわかるので、すぐにA+dummyTemplateパブキーを作成し、dummyTemplateを実行してそのコンテンツを生成します。dummyTemplateは、どのタグからも使用されないので、正式な構成依存性はなく、パブキー・メンバーとしてのみ関与します。したがって、dummyTemplateが変更されても、承認およびパブリッシュ・サイクルではそのことが認識されません。そのため、新しく作成するすべてのテンプレートに出現する<render:logdep>は、変更しないことをお薦めします。

表14-2 参照依存性

アクション 承認ステータス パブリッシュ・ステータス コメント

初期

承認済: PARtemplate

パブリッシュ済: AおよびRtemplate

Pは、テンプレートによって参照されていないので、パブリッシュされません。その結果、P+TtemplateおよびA+dummyTemplateの2つのHTMLファイルが生成されます。

Pの編集

PのステータスはChangedになり、承認によって現状に戻ります。

変更による影響はありません。

Pに対する構成依存性がないため、変更による影響はありません。

Aの編集

AのステータスはChangedになります。Pは、Aに対するexists依存性のみがある(Pを保留する理由はありません)のでApprovedのままであり、Heldにはなりません。

<render:getpageurl>によって構成依存性が生成されるので、P+Rtemplateは自動的に再パブリッシュ用にキューに追加されました。(理由が不明な場合は読み進めてください)。

A+dummyTemplateは、Aを使用していないので、影響を受けません。

A+dummyTemplateは、Aを使用するタグが存在しないので、影響を受けません。


14.6 承認テンプレートとパブリッシュ時テンプレートが異なる場合

一般に、承認とパブリッシュに同じテンプレートを使用する場合は、承認依存性と構成依存性が一致するので、問題は発生しません。承認とパブリッシュに使用するテンプレートが異なる場合、問題が発生するきっかけになります。テンプレートの不一致は様々な状況で発生する可能性があります。テンプレート・コードの詳細は、第14.7項「サンプル・テンプレート」を参照してください。

この項は、次のトピックで構成されています。

14.6.1 例1

アセットAは承認にT1を使用します。T1はどのアセットも参照しません。アセットAはパブリッシュにT2を使用します。T2は、<asset:load>を使用してアセットBを参照します。T2がアセットBをロードすると、一度も承認されていないにもかかわらず、BはエクスポートされるA+T2ページに表示されます。

これは、一度も承認されていないアセットをパブリッシュできることを意味するのでしょうか。

そのとおりです。この方法を選択するユーザーも存在しますが、結局はパブリッシュする前にアセットを承認する手間を省いているにすぎません。承認は負担の多い作業になる可能性があります。なぜなら、exact依存性を持つ場合、依存アセットが変化することでプライマリ・アセットにHeldステータスが割り当てられるからです。その結果、そのようなプライマリ・アセットが含まれるページはエクスポートできなくなります。このような状況では、deptype属性で値としてexistsまたはnoneを使用して、不要な承認依存性を避ける方法が適しています。

ここで、アセットBをパブリッシュした後にBを変更するとどうなるでしょうか。この場合、アセットAとアセットBの間に、承認依存性はありませんが、構成依存性があります。これは、アセットBが変化するたびに、影響を受けるページが自動的に再パブリッシュされることを意味します。(依存性がないので、自動リフレッシュ・オプションが選択されます)。したがって、アセットBが未承認のまま保存されるとすぐに、A+T2が自動的にパブリッシュ・キューに追加されます。再パブリケーション・オプションの詳細は、「パブリッシュ時の構成依存性が追跡されるのはなぜですか。」を参照してください。

14.6.2 例2

アセットAで承認にT1を使用します。T1は、exact依存性に従って、<asset:load>を使用してアセットBを参照します。アセットAは、パブリッシュにT2を使用します。T2は、アセットBを参照しません。

この場合、アセットAとアセットBの間に、承認依存性はありますが、構成依存性はありません。これは、アセットBが変更されるたびに、アセットAを承認できるようにするには、パブリッシュされるページでアセットBを使用していなくても、アセットBを承認する必要があることを意味します。

14.6.3 例3

アセットAで承認にT1を使用します。T1はどのアセットも参照しません。アセットAは、パブリッシュにT2を使用します。T2は、<asset:getpageurl>を使用してアセットBを参照します。

この場合、承認依存性はないので、Aは単なる承認済アセットです。A+T2のパブリッシュ中に、Bをプライマリ・アセットとする別のページが作成されることに気づきます。ここで、プライマリ・アセットは、そのページがエクスポートされる前に承認される必要があることを思い出してください。しかし、Bは承認されていないので、そのページはエクスポートされません。A+T2はエクスポートされますが、機能しないリンクが発生します。

不明な依存性が存在する場合のディスクへのエクスポートのパブリッシュ。<render:unknowndeps>を使用し始めると、状況が複雑になります。このタグは、構成依存性を削除し、パブキーに不明な依存性を記録します。したがって、アセットはパブリッシュ・キューに恒久的に残ります(つまり、アセットはパブリッシュ・サイクルのたびにリフレッシュされます)。これは予想される動作です。なぜなら、不明な依存性が存在する場合(すなわち、問合せの結果のように、依存性がいつでも変化する可能性がある場合)、特定のアセットがどのアセットに依存するかが判断できないからです。大事をとって、常にアセットが再パブリッシュされます。

多数のexact依存性が存在する場合。必ず避けられるわけではありませんが、プライマリ・アセットが他のアセットに対してexact依存性を持つ場合、いずれかの依存アセットが変更されると、承認システムはプライマリ・アセットのステータスをHeldに変更することに留意してください。プライマリ・アセットのページは、再承認されなければ、パブリッシュ可能になりません。変更されたアセットが多数のページで使用されている場合、それらのページをすべて再承認する必要があります。deptypeをexistsに設定することも考えられます。その場合、依存ページは自動的にパブリッシュ可能になります。ただし、変更されたアセットは、パブリッシュ・セッションが開始するときは準備が完了している必要があります。


注意:

(simplenameを使用しないで)エクスポートURLをカスタマイズする望ましい方法は、<render:getbloburl>および<render:getpageurl>のパラメータとしてPREFERREDFILEおよびPREFERREDDIRを使用して任意の名前を指定する方法です。次に例を示します。

<render:getbloburl blobtable='MungoBlobs' 
   blobcol='urldata' blobkey='id' 
   blobwhere='1088466917821'  outstr='pagelogoURL' 
   csblobid='1088466917821'>

<render:argument name='PREFERREDFILE' 
   value='myBlob.out'/>
<render:argument name='PREFERREDDIR' value='myDir'/>
</render:getbloburl>

このコードは、IDが1088466917821のBLOBをmyDir/myBlob.outにエクスポートします。


14.7 サンプル・テンプレート

この項では、第14.5項「動作と機能」および第14.6項「承認テンプレートとパブリッシュ時テンプレートが異なる場合」の例で使用されているテンプレート実装を示します。Taglib定義とimport定義は省略されています。

Ttemplate:

<%-- Record dependencies for the Template --%>
<ics:if 
 condition='<%=ics.GetVar("tid")!=null%>'><ics:then><render:logdep 
 cid='<%=ics.GetVar("tid")%>' c="Template"/></ics:then></ics:if>
<asset:load name='myArticle' type='HelloArticle' 
 objectid='1156878442427'/>

Rtemplate:

<%-- Record dependencies for the Template --%>
<ics:if 
 condition='<%=ics.GetVar("tid")!=null%>'><ics:then><render:logdep 
 cid='<%=ics.GetVar("tid")%>' c="Template"/></ics:then></ics:if>
<render:getpageurl outstr="myURL" pagename='HelloAssetWorld/
 dummyTemplate' cid='1156878442427' c='HelloArticle'/>
 Got URL: <a href='<%=ics.GetVar("myURL")%>'> Click here</a><br/>

dummyTemplate:

空白です。logDepはありません。