カスタムユニバーサルエディター拡張機能を使用して、AEM Sites Cloudでページロックを自動化できます
この記事では、Adobe Experience Manager(AEM) Sites as a Cloud Serviceで、カスタムのユニバーサルエディター拡張機能と認証済みAEM サービスを作成し、作成者が最初にコンテンツを変更した後にページをロックできるようにすることで、ページロックを自動化する方法について説明します。
説明 description
環境
Adobe Experience Manager as a Cloud Service(すべてのバージョン)
問題/症状
- 企業は、手作業でページをロックしたり、開いたままの状態でロックしたりするのではなく、意図的なコンテンツの初回変更後に、AEM Sitesページを自動的にロックすることで、同時編集の競合を防止できます。
- 最初の編集後にページが自動的にロックされないため、手動で操作する必要があり、編集が競合するリスクが高まります。
原因
ユニバーサルエディターの標準のAEM Page Lock拡張機能は、自動化または拡張機能のパブリック APIを提供しません。 サポートされる自動化には、カスタムのユニバーサルエディター拡張機能と、ドキュメント化されたAPIを使用してコンテンツの変更後にページをロックする、顧客所有のAEMサービスが必要です。
解決策 resolution
問題を解決するには、次の手順に従います。
-
カスタムのユニバーサルエディター拡張機能を構築する。
- ユニバーサルエディターの拡張性ポイントを使用して、最初の意図的または永続的なコンテンツ変更イベントをリッスンします。 開いているページや選択範囲でトリガーをロックしないでください。
- 例(疑似コード):
code language-none editor.on('contentChanged', (event) => { if (!pageLocked) { lockPage(event.pagePath); pageLocked = true; } }); -
顧客所有のAEMサービスを導入する。
- AEMで、次のエンドポイントを公開するサーバーサイドのOSGi サービスまたはSling サーブレットを作成します。
- 現在のロックステータスの確認
- ページロックの取得
- ページロックの解除
- AEM WCM PageManager APIを使用してロックおよびロック解除を行います。 例(Java):
code language-none PageManager pageManager = resourceResolver.adaptTo(PageManager.class); Page page = pageManager.getPage(pagePath); if (page != null && !page.isLocked()) { page.lock(); } -
エディターのIDでリクエストを認証します。
- ユニバーサルエディター拡張機能は、現在のエディターのIMS ベアラートークンを認証ヘッダーとしてAEM エンドポイントに転送する必要があります。
- AEMのGranite Bearer Authentication Handlerが有効になっており、トークンに存在するOAuth クライアント IDを受け入れるように設定されていることを確認します。
- AEM サービスは、ロックがサービスユーザーではなくエディターに起因することを確認するために、リクエストのResourceResolver (request.getResourceResolver ()など)を使用する必要があります。
-
ロックの競合と権限を処理します。
- ページパスを検証し、ページを解決します。
- ページが既にロックされているか、また誰によってロックされているかを確認します。
- ロックを取得できない場合は、明確な応答を返します(例えば、別の作成者が既にロックしている場合など)。
- AEMの権限とCSRF保護を適用します。
-
エディターの状態を更新します。
- ロック操作が成功したら、ユニバーサルエディターUIを更新して、新しいロック状態を反映します。
- 別の作成者がページをロックしている場合は、明確なメッセージを表示します。
-
公開前にページのロックを解除します。
- 作成者は、ワークフロープロセスを続行できるように、公開前にページのロックを手動で解除する必要があります。
確認するには、ユニバーサルエディターでページを編集して、拡張機能をテストします。 最初のコンテンツの変更後にページがロックされていることを確認し、編集担当者のみがロックを解除できることを確認します。
experience-cloud-kcs-help-kbarticles