注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Workshopは、別のWorkshopモジュールを埋め込むためのサポート機能として、埋め込みモジュールウィジェットとループセクションレイアウト("ループレイアウト")の2つの機能を提供しています。
これらの機能により、他のWorkshopモジュール内に埋め込むことができるWorkshopモジュールを作成することが可能になります。埋め込みモジュールはWorkshopが提供するすべての機能をサポートしていますが、埋め込みモジュールと埋め込まれるモジュールの相互作用にはいくつかの制限があります。このドキュメントでは、あるモジュールが別のモジュールを埋め込む場合、そのモジュールを"親"モジュールと呼び、埋め込まれるモジュールを"子"モジュールと呼ぶことがあります。このドキュメントで"埋め込みモジュール"という表現を使用するとき、それは埋め込みモジュールウィジェットとループレイアウトに埋め込まれたモジュールの両方を指す、特に指定がない限りです。
埋め込みモジュールにはいくつかの使用例があります。それらは次の通りです:
埋め込みモジュールにより、単一の子モジュールを設定し、多数の親モジュールで再利用することが可能になります。作成可能な埋め込みモジュールの例としては、以下のようなものがあります:
埋め込みモジュールは、ループレイアウトまたは個々の埋め込みモジュールウィジェットを通じて、単一の親モジュール内で何度も使用することができます。同じ親モジュール内で何度も埋め込まれる子モジュールの例としては、以下のようなものがあります:
埋め込みモジュールは、大きな親モジュールを多くの子モジュールに分割し、保守性を向上させるために使用することができます。これにより、各子モジュールが独自の変数スコープを持つことができ、各子モジュールを異なるWorkshopビルダーが同時に編集することが可能になります。
埋め込みモジュールは、Workshopモジュールをマーケットプレイスとパッケージ化する際にカスタマイズエリアを提供するために使用することができます。埋め込まれた子モジュールは依存関係としてパッケージ化され、インストール時にマーケットプレイスのユーザーが同じ昇格した変数タイプの署名を持つモジュールを選択し、インストールされた親モジュールの一部をカスタマイズすることができます。
埋め込みモジュールはイベントの伝達の概念をサポートしていません。イベントの伝達は、ビルダーが親モジュールから子モジュールへイベント設定を渡すことを可能にし、子モジュールが親モジュールからの設定を参照するイベントを呼び出すことができます(例えば、子モジュールが親モジュールのオーバーレイを開くイベントを呼び出すこと)。
親モジュールは、子が親のレイアウト状態を変更するための方法として、レイアウト状態をバックアップする変数を子モジュールの昇格した変数に渡すことができます。
Workshopの他の"Foundry apps"ウィジェットと同様に、他のWorkshopモジュールが使用する埋め込みモジュールの出所は、Data Lineageによって報告されません。
モジュールは、直接的にまたは子モジュールのチェーンを通じて自己を埋め込むことはできません。自己参照が設定されている場合、モジュールはビルダーに警告を表示し、ビューアには何も表示しないことで、可能な限り無限の埋め込みモジュールのチェーンを防ぎます。再帰的または自己参照的な埋め込みモジュールが必要な使用例がある場合は、Palantirの代表者に問い合わせてください。
埋め込みモジュールは、独自の許可設定を持つ別々のリソースです。ユーザーが子モジュールを埋め込む親モジュールを表示する許可を持っていても、子モジュールを表示する許可がない場合、ユーザーは"モジュールの読み込みに失敗しました"というエラーを見ることになります。
埋め込みモジュールは、通常のWorkshopモジュールと同様のパフォーマンス特性を持つべきです。注目すべき違いの一つは、埋め込みモジュールが表示されるまでの初期化が遅延することです。初期化された後、埋め込みモジュールは、モジュール全体が同じ場所で設定されていたかのように動作することが期待されます。
子モジュールの設定はインスタンスごとに1回初期化されることに注意してください。これは変数の初期化にコストがかかりますが、多数のインスタンスで再利用される場合、子モジュールの設定は1回だけ読み込む必要があります。
埋め込みモジュールとループレイアウトの使用により、ビルダーは非常に大きく複雑なモジュールを容易に設定することができます。ビルダーは、特に読み込みに時間がかかるものを含め、一度に表示されるウィジェットと変数の総数を意識する必要があります。
埋め込みモジュールウィジェットとループレイアウトは、現在のモバイルモードではサポートされていません。