JSSコードファーストインポートプロセスで使用されるパイプライン

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

インポートプロセスでは、javaScriptServicesグループの一連のパイプラインを使い、JSSマニフェストファイルのデータに基づいてテンプレート、レイアウト、メディア、コンテンツ項目を作成します。

パイプラインは \App_Config\Sitecore\JavaScriptServices\Sitecore.JavaScriptServices.AppServices.configで設定されています。パイプラインの調整を行うには、設定パッチを使用してください。

以下の図はインポートプロセスで使用されるパイプラインの順序を示しています:

Import process sequence of pipelines

インポートプロセスでは以下のパイプラインを使用します:

パイプライン

概要

import

インポートプロセスの主要なパイプラインです。インポートのコンテキストを初期化し、テンプレートやレイアウトアイテムを作成し、コンテンツアイテムパイプラインの作成をトリガーします。

create.item

コンテンツアイテムを見つけたり作成したりします。

update.item

コンテンツアイテムのフィールド値を埋めたり更新したりすると、アイテムレイアウトの更新がトリガーされます。

import.field

コンテンツ項目のフィールドの値をインポートします。

create.media

マニフェストに関連する資産からメディアアイテムを作成します。

import.layout

インポートアイテムのレイアウトを埋めます。

create.renderingInstance

インポートしたアイテムレイアウトで使用するレンダリングインスタンスを作成します。

パイプラインプロセッサ

各パイプラインはプロセッサを活用してタスクを実行します。アイテムを作成するプロセッサは、まず同名の既存アイテムを探し、すでに存在すれば更新します。アイテムを作成または書き込むすべてのプロセッサは、権限を適切にチェックitem:createitem

、権限で許可できない場合はスキップします。

!ヒント カスタムプロセッサでパイプラインの挙動を変更できます。

import

このパイプラインの名前空間はSitecore.JavaScriptServices.AppServices.Pipelines.Importです。

このパイプラインは、アプリ設定で定義されたdatasourceStrategy値を用いて、作成されたレンダリングの許可されたデータソースの位置を特定します。

プロセッサ

概要

EnableSecurity

セキュリティ権限の強制を保証します。通常セキュリティが無効化されるコンテキスト、例えばステップ後の更新パッケージなどで実行するために必要です。

SwitchUser

ユーザーコンテキストを設定済みインポートユーザーに切り替えます。

SwitchSite

Sitecoreコンテンツワークフローはサイトごとに有効化可能です。このモックサイトは、インポートプロセス中にコンテンツワークフローが実行されることを保証します。

SwitchDatabases

データベースコンテキストを設定済みインポートデータベースに切り替えます。

SwitchLanguage

言語コンテキストを設定済みインポート言語に切り替えます。

SwitchBulkUpdateContext

インポートインデックス最適化が有効の場合、 BulkUpdateContextを入力します。

VerifyAppConfiguration

アプリに必要な属性がすべて揃っていること、そしてアプリ上に設定されたアイテムパスが存在することを保証します。値を args.Itemsに入力します。

Deserialize

逆直列化はJSONをインポートデータモデルクラスにインポートします。

WipePreviousImport

フルワイプモードが有効の場合、プロセスはアプリで設定されたインポートパス内の既存のアイテムを削除しようとします。

CreateTemplatesContainer

インポートしたテンプレートの親項目を作成します。

CreateRouteTemplate

ルート項目用のアプリ専用テンプレートを作成します。

CreateAppContainer

アプリのルートおよびデータ項目のルート項目を作成します。インポートユーザーに作成した項目へのアクセス item

付与し、生成されたルートテンプレートを挿入オプションとして割り当てます。

CreatePlaceholdersContainer

インポートしたプレースホルダー設定の親アイテムを作成します。

CreateRenderingsContainer

インポートレンダリング用の親項目を作成します。JSSレンダリングタイプを挿入オプションとして割り当てます。

CreateMediaLibraryContainer

インポートされたメディアアイテムの親項目を作成します。

ProcessTemplates

マニフェスト内のすべてのテンプレートを指定されたフィールドで作成します。また、標準値を作成し、設定済みワークフローをデフォルトのワークフローとして設定します。

ProcessPlaceholders

マニフェスト内のすべてのプレースホルダーと、アプリ設定内のルートプレイスホルダーに対して設定項目を作成します。

ProcessRenderings

マニフェスト内のすべてのレンダリングに対してレンダリング項目を作成します。設定されたデータソース戦略を用いて、データソーステンプレートを使ってレンダリングに適したデータソースの位置を設定します。マニフェスト内のデータに基づいてレンダリングプレースホルダーを設定します。

AddPlaceholderAllowedControls

許可されたコントロール分析が有効の場合、インポートされたすべてのプレースホルダー設定は、インポートされたルート内のレンダリング使用量に基づいて許可されたコントロールに更新されます。

CreateLayout

アプリのメインレイアウト項目を作成します。アプリの設定内のルートプレースホルダーに基づいてプレースホルダーを設定します。

SetRouteLayoutStandardValue

生成されたルートテンプレートの標準値に生成されたレイアウトアイテムを配置します。

SetRouteTemplateInheritance

インポートマニフェストにカスタムルートテンプレートが定義されている場合、そのベーステンプレートは上で生成されたアプリ固有のルートテンプレートに設定されます。

ProcessItems

create.itemパイプラインを使ってマニフェスト内のすべてのルートおよび非ルート項目を作成します。

ProtectDeveloperItems

開発者アイテム保護が有効の場合、プロセスはインポートされたテンプレートおよびレイアウト/レンダリングアイテムに読み取り専用/保護フラグを適用します。

RefreshIndexes

インポートインデックス最適化が有効の場合、プロセスは IndexCustodian.RefreshTreeを利用してすべてのルート/親インポート項目のインデックスを更新します。

!注すべてのSwitch* プロセッサはコンテキストスイッチャー IDisposableセットアップされています。すべてのIDisposableコンテキストスイッチャーはパイプライン自体の外、ImportPipelineサービス内で処分されます。

create.item

このパイプラインの名前空間はSitecore.JavaScriptServices.AppServices.Pipelines.CreateItemです。

プロセッサ

概要

ResolveItemName

パイプラインの引数で提供された itemNamer に基づいて、見つける・作成するアイテムの名前を決定します。

CheckPermissions

アイテム名に基づいてそのアイテムがすでに存在しているかどうかを確認します。存在しなければ、そのアイテムを作成する権限があるかを確認します。なければパイプラインを中止します。

ResolveTemplate

必要に応じて新しいアイテムを作成する際に使うテンプレートを決定します。

AddItem

もし存在していなければ、そのアイテムを作成します。

UpdateItemValues

update.itemパイプラインを呼び出してアイテム値を設定します。

CreateChildItems

マニフェスト内のアイテムの子ごとに create.item パイプラインを再呼び出します。

update.item

このパイプラインの名前空間はSitecore.JavaScriptServices.AppServices.Pipelines.UpdateItemです。

プロセッサ

概要

CheckPermissions

アイテムへの書き込み権限があるかどうかを確認します。なければパイプラインを中止します。

SetDisplayName

パイプライン引数で提供されるディスプレイネーマー関数/コールバックに基づいてアイテム表示名を設定します。

SetFieldValues

アイテムマニフェスト内の各フィールドの import.field パイプラインを呼び出して、アイテムのフィールド値を設定します。

AssignInsertOptions

パイプラインのARGで示されている場合、アイテムの挿入オプションをアイテム自身のテンプレートに設定します。

ImportLayout

import.layoutパイプラインを呼び出してアイテムのレイアウトや表示を更新します。

import.field

このパイプラインの名前空間はSitecore.JavaScriptServices.AppServices.Pipelines.ImportFieldです。

プロセッサ

概要

ResolveField

JSONフィールドモデルで指定された名前でアイテム上のフィールドを見つけます。見つからなければパイプラインを中止します。

LinkFieldValue

フィールドが設定されたリンクフィールドタイプのいずれかであれば、 create.item パイプラインを呼び出してリンク項目を作成し、その後パイプ区切られたIDをフィールドに入力してパイプラインを中止します。

MediaFieldValue

フィールドが設定済みの画像フィールドタイプのいずれかであれば、 create.media パイプラインを呼び出してメディアアイテムを作成し、フィールドにメディアIDを埋め込み、パイプラインを中止します。

DefaultFieldValue

フィールドにJSONフィールドモデルの生/リテラル値を入力し、パイプラインを中止します。

create.media

このパイプラインの名前空間はSitecore.JavaScriptServices.AppServices.Pipelines.CreateMediaです。

プロセッサ

概要

CalculateItemPath

設定されたアプリメディアライブラリパスとインポートマニフェスト内のアセットの経路に基づいて、メディアライブラリ内の適切な位置を決定します。

CheckPermissions

メディアアイテムがすでに存在しているか、書き込み権限が許可されているかを確認します。もし存在しなければ、既存のアイテムが返され、パイプラインは中止されます。

CalculateFilePath

インポートパッケージのパスとマニフェスト内のアセットパスに基づいて、アセットのファイルシステムパスをマッピングします。計算されたパスにファイルが存在しない場合は、パイプラインは中止されます。

BuildMediaCreatorOptions

メディアのインポートに使用される Sitecore.Resources.Media.MediaCreatorOptions オブジェクトを作成します。

CreateFromFile

メディアファイルをメディアライブラリにインポートするための Sitecore.Resources.Media.MediaCreator を呼び出します。

import.layout

このパイプラインの名前空間はSitecore.JavaScriptServices.AppServices.Pipelines.ImportLayoutです。

プロセッサ

概要

CheckForLayout

インポートしたアイテムマニフェストにレンダリングが定義されているかを確認します。定義されていない場合はパイプラインを中止します。

InitializeLayout

新しい LayoutDefinition を作成し、設定済みデバイス上でメインレイアウトを初期化します。

AddRenderings

アイテムマニフェストで定義された各レンダリングに対して create.renderingInstance パイプラインを呼び出し、そのレンダリングを設定されたデバイスに追加します。

SaveLayout

レイアウトXMLをアイテムの共有レイアウトに設定し、 LayoutField を使ってレイアウトデルタ計算が実行されることを保証します。プロセッサが設定されていれば、アイテムの 最終レイアウト フィールドをリセットまたはクリアします(ClearFinalLayout)。

create.renderingInstance

このパイプラインの名前空間はSitecore.JavaScriptServices.AppServices.Pipelines.CreateRenderingInstanceです。

このパイプラインは、アプリ設定で定義されたdatasourceStrategy値を用いて、作成されたレンダリングの許可されたデータソースの位置を特定します。

プロセッサ

概要

ResolveRenderingItem

レンダリングインスタンスのインポートされたレンダリング定義項目を見つけます。見つからなければパイプラインを中止します。

CreateRenderingInstance

新しい RenderingDefinition を作成し、そのレンダリングID、プレースホルダー、UID、レンダリングパラメータ、その他のプロパティを埋め込みます。

CheckForDatasourceFields

レンダリングマニフェストにデータソースフィールドがあるかどうかを確認します。なければパイプラインを中止します。

CreateDatasourceItem

設定されたデータソース戦略を使ってレンダリングデータソースの親項目を作成・決定し、その後 create.item パイプラインを呼び出してデータソースアイテムを作成または検索します。データソースIDでレンダリングを更新します。

この記事を改善するための提案がある場合は、 お知らせください!