3

CQ5 ページの新しいバージョンをプログラムで作成して、開始時刻を将来のある時点にすることはできますか?

例として、税率を表示するページがあるとします。作成者が新しい料金表を (css ファイルの形式で) アップロードし、料金ページのコンテンツを作成できるようにするコンポーネントがあります。著者が翌月の 1 日から有効になるレートをアップロードできるようにしたいと考えています。

jcr がノードの複数のバージョンをサポートしていることは知っていますが、これが cq5 ページのバージョン管理にどのように関連するか (または関連するかどうか) は不明です。さらに、将来的に新しいバージョンを有効化できるかどうか。

4

4 に答える 4

1

あなたが説明した要件を考えると、おそらく少し異なる方法でタスクを達成するでしょう...

ページの jcr:content ノード (またはそのサブノード) 内にレート テーブル情報を直接保存する代わりに、おそらくリポジトリ内の別の場所に抽象化します。次に、必要に応じて、コンテンツ作成者が新しいレートの csv ファイルをアップロードし、必要に応じてそれをリポジトリに取り込むことができるように、何らかの管理インターフェイスを作成できます。あるいは、データがある種のデータベースから取得されると仮定すると、CQ からの JDBC 接続を使用して、ある種のスケジュールに基づいて自動的に注入するジョブを作成することもできます。データがリポジトリにある場合は、表示コンポーネントを作成して、ページ内に直接データを配置する代わりに、リポジトリからデータを読み取ることができます。

このアプローチには、そのデータを CQ 内で再利用可能にして、必要に応じて複数のページ、複数のサイト、さらにはさまざまな表示形式で表示できるという利点があります。さらに、日次、月次、週次、年次など、データの更新に関するあらゆる要件をサポートするように jcr 構造を設計できますが、これは明らかに特定の要件によって異なります。

これの 1 つの欠点は、データとそれが表示されるページが分離されているため、データが変更されるたびにキャッシュが適切にクリアされるようにする方法を見つける必要がある場合があることです。

更新(コメントに基づく):

ページのバージョン管理で私が予見する問題は、これを試したことがないのでおそらくうまくいくと思いますが、一度に 1 つのアクティブなバージョンしか存在できないことです。したがって、翌月のデータがアップロードされたら、古いデータ (アクティブ) と新しいデータ (まだアクティブではない) を同時に維持する必要があります。その期間中に別のコンテンツの変更が必要な場合はどうなりますか...ビジネスプロセスの観点から見ると、私には面倒です。

キャッシュ クリアの問題に戻ります。影響を受けるページがわかっている場合、特にそれらがすべて 1 つのサブツリーにある場合は、レプリケータ サービスを使用して影響を受けるページのキャッシュをクリアするカスタム ワークフロー プロセスを作成し、実行するランチャーを設定できます。データのノード変更の wf。

もう 1 つのオプションは、これは私の頭ではあまり定義されていないため、いくつかの実験が必要ですが、後でアクティブ化し、後で非アクティブ化する機能に組み込まれている CQ を使用することです。

おそらく、料金データ用の特定のテンプレートを作成し、そのテンプレートを使用するページは一度に 1 つだけアクティブにするという暗黙の要件を設定します。表示コンポーネントはクエリを使用して、現在アクティブな料金データを見つけることができます。

于 2013-01-11T21:35:50.517 に答える
0

カレンダーの日付の到着によってトリガーされる公開ステップを含むワークフローを作成できます。新しい税率のページのバージョンは、ドラフト形式でワークフローパイプラインに残り、日付が到着したときにのみ公開/アクティブ化されます。(したがって、カレンダーを確認するために1日1回ウェイクアップする何らかのプロセスが必要になります。)

于 2013-01-11T21:13:15.690 に答える
0

私は個人的にこれを試したことはありませんが、...

PageManager サービスの createRevision メソッドを使用できると仮定し、それが例外をスローせずに返される場合は、page.getContentResource.adaptTo(Node.class) を呼び出し、そこから返されたノードを取得して JCR プロパティを編集します。あなたの税率コンポーネントのために。

ページマネージャを参照

于 2013-01-11T19:30:47.997 に答える