JSSコードファーストのインポートプロセスで使用されるパイプライン
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
インポート プロセスでは、javaScriptServicesグループ内の一連のパイプラインを使用して、JSSマニフェスト ファイルのデータに基づいてテンプレート、レイアウト、メディア、およびコンテンツ項目を作成します。
パイプラインは \App_Config\Sitecore\JavaScriptServices\Sitecore.JavaScriptServices.AppServices.configで設定します。パイプラインを調整するには、構成パッチを使用します。
次の図は、インポート プロセスで使用されるパイプラインのシーケンスを示しています。
インポートプロセスでは、次のパイプラインを使用します。
|
パイプライン |
形容 |
|---|---|
|
import |
インポート プロセスのプライマリ パイプライン。インポートのコンテキストを初期化し、テンプレートとレイアウトのアイテムを作成し、コンテンツアイテムパイプラインの作成をトリガーします。 |
|
create.item |
コンテンツ項目を検索または作成します。 |
|
update.item |
コンテンツアイテムのフィールド値を入力または更新し、アイテムレイアウトの更新をトリガーします。 |
|
import.field |
コンテンツアイテムのフィールドの値をインポートします。 |
|
create.media |
マニフェストに関連付けられたアセットからメディアアイテムを作成します。 |
|
import.layout |
インポートされたアイテムのレイアウトを入力します。 |
|
create.renderingInstance |
読み込まれたアイテムのレイアウトで使用するレンダリング インスタンスを作成します。 |
パイプラインプロセッサ
各パイプラインは、プロセッサを活用してタスクを実行します。 creating項目として記述されているプロセッサは、最初に同じ名前の既存の項目を検索し、既に存在する場合は更新を試みます。項目を作成または書き込むすべてのプロセッサは、item:createとitem:writeのアクセス許可を適切にチェックし、アクセス許可で許可されていない場合はそれらのアクションをスキップします。
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:createアクセス権を付与し、生成されたルート テンプレートを挿入オプションとして割り当てます。 |
|
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 |
パイプライン引数で示されている場合は、アイテムの挿入オプションをアイテム自体のテンプレートに設定します。 |
|
ImportLayout |
import.layoutパイプラインを呼び出して、アイテムのレイアウト/プレゼンテーションを更新します。 |
import.field
このパイプラインの名前空間はSitecore.JavaScriptServices.AppServices.Pipelines.ImportFieldです。
|
プロセッサー |
形容 |
|---|---|
|
ResolveField |
JSONフィールドモデルで指定された名前でアイテム上のフィールドを検索します。見つからない場合はパイプラインを中止します。 |
|
LinkFieldValue |
フィールドが設定されたリンク フィールド タイプの1つである場合、create.itemパイプラインを呼び出してリンクされたアイテムを作成し、パイプで区切られたIDをフィールドに入力してパイプラインを中止します。 |
|
MediaFieldValue |
フィールドが設定されたイメージ フィールド タイプの1つである場合、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を使用してレイアウト差分計算が実行されるようにします。プロセッサがそのように構成されている場合は、アイテムのFinal Layoutフィールドをリセット/クリアします (ClearFinalLayout)。 |
create.renderingInstance
このパイプラインの名前空間はSitecore.JavaScriptServices.AppServices.Pipelines.CreateRenderingInstanceです。
このパイプラインは、アプリ設定で定義されたdatasourceStrategy値を使用して、作成されたレンダリングで許可されるデータソースの場所を決定します。
|
プロセッサー |
形容 |
|---|---|
|
ResolveRenderingItem |
レンダリング インスタンスのインポートされたレンダリング定義アイテムを検索します。見つからない場合はパイプラインを中止します。 |
|
CreateRenderingInstance |
新しいRenderingDefinitionを作成し、そのレンダリングID、プレースホルダー、UID、レンダリング パラメーター、およびその他のプロパティを入力します。 |
|
CheckForDatasourceFields |
レンダリング マニフェストにデータソース フィールドがあるかどうかを確認します。そうでない場合は、パイプラインを中止します。 |
|
CreateDatasourceItem |
構成されたデータソース戦略を使用して、レンダリングデータソースの親アイテムを作成/決定し、create.itemパイプラインを呼び出してデータソースアイテムを作成または検索します。レンダリングをデータソースIDで更新します。 |
