データマネージャー
データマネージャーは、商品コンフィグレーターの状態管理およびオーケストレーションコンポーネントです。このコンポーネントは商品データを保存し、フローイベントを使用してフロー画面の他のコンポーネントにデータを伝達します。
必要なエディション
| 使用可能なインターフェース: Lightning Experience |
| 使用可能なエディション: Revenue Management (旧 Revenue Cloud) の Enterprise Edition、Unlimited Edition、および Developer Edition (Revenue Cloud Growth ライセンスまたは Revenue Cloud Advanced ライセンス付属) |
データ管理者の責務
- トランザクションコンテキストと設定状態を維持する
- コンフィグレーター API を呼び出して応答を処理する
- UIコンポーネントからのLMS(Lightning Message Service)イベントの処理
- UI にデータを提供し、反応型プロパティを子コンポーネントに公開する
- お気に入りの設定の保存と読み込みをサポート
データマネージャー API 参照名
S01_DataManager
データマネージャーの入力プロパティ
データマネージャーは、ユーザーが設定した親コンポーネントまたはフローコンポーネントのプロパティからデータを受け入れます。
| プロパティ | タイプ | 必須 | 説明 |
|---|---|---|---|
| transactionLineId | String | はい | ルート商品または取引品目 ID |
| currentTransactionLineId | String | はい | 参照中の現在の行 |
| transactionId | String | はい | 販売トランザクション ID (見積、注文など) |
| parentName | String | はい | 設定に関連する親トランザクションの名前またはタイトル。 |
| origin | String | はい | トランザクションレコードの親オブジェクトの名前。例: 「Opportunity」、「Quote」、「Order」、「Asset」など。これにより、設定を起動する Salesforce オブジェクト種別が識別されます。ナビゲーションや UI の表示ラベルなどに使用されます。 |
| addedNodes | Array | いいえ | 親レコード トランザクションに関連付けられた Apex ProductConfig__SalesTransactionItem レコードのコレクションが含まれるフロー リソース。 |
| isNonBlockingEnabled | Boolean | いいえ | ノンブロッキングモードを有効にします。有効にすると、API コールがバックグラウンドで処理されている間、ユーザーは UI の操作を続行できます。変更はキューに入れられ、UI をブロックすることなく非同期で処理されます。無効にすると、API コール中に UI がロックされます。 |
| areMessagesFixed | Boolean | いいえ | メッセージコンポーネントの位置が固定されているかどうか。true の場合、メッセージコンポーネントは画面の上部に固定され、スクロールしても表示されたままになります (固定位置)。false の場合、メッセージコンポーネントはページコンテンツ (相対位置) と共にスクロールします。設定時に検証エラー/警告を常に表示しておくのに便利です。 |
| contextId | 文字列 | いいえ | 商品コンフィグレーターに指定されたトランザクションコンテキストの ID |
| enableARCValidation | Boolean | いいえ | 商品設定中に ARC (Asset Renewal Configuration) 検証を実行するかどうかを示します。 |
| transactionLineGroupId | 文字列 | いいえ | 設定している現在の取引品目が含まれるグループの ID。見積の場合は見積品目グループ ID、注文の場合は注文品目グループ ID です。 |
| explainabilityEnabled | Boolean | いいえ | [説明可能性] が有効になっている場合、商品コンフィグレーターでは、商品が非表示、無効、または推奨される理由に関する詳細な説明が提供されます。ルール実行の詳細とビジネスロジックの理由が表示されるため、ユーザーは設定の制約を理解できます。 |
| userContext | オブジェクト | いいえ | ユーザー資格データが含まれるフロー変数の API 参照名。この変数は ProductConfig__UserContext 型で、ユーザー固有の属性に基づいて商品の対象資格を決定します。 1. Flow Builder で、「userContextData」などの変数 API 参照名を作成します。 2. [割り当て] 要素または [レコードを取得] 要素を使用して変数を入力し、ロール、地域、accountType などの項目を設定します。例: {!userContextData.role} = {!$User.UserRole.Name} 3. データマネージャーで、[ユーザーコンテキスト] に [{!userContextData}] を選択します。コンフィグレーター API はこのデータを使用して、適格性ルールを評価し、使用可能な商品を絞り込みます。たとえば、「エンタープライズ商品をエンタープライズの営業担当にのみ表示」などのルールがある場合、API はこのコンテキストからユーザーのロールを確認します。 ロールやテリトリーなど、ユーザー固有の属性に依存する商品評価ルールがある場合にのみ、ユーザーコンテキストを選択します。すべてのユーザーがすべての商品を使用できる場合は、この項目を空のままにします。 |
| instantPricing | Boolean | いいえ | インスタント価格設定がデフォルトで有効になっているかどうかを示す Boolean 値。 |
データマネージャーの出力プロパティ
データマネージャーは、顧客が参照できる出力プロパティを記述します。次の例のように、内部メソッドでデータが生成され、FlowAttributeChangeEventが関連するプロパティーにデータがディスパッチされます。
this.dispatchEvent(
new FlowAttributeChangeEvent(FLOW_REACTIVITY_MESSAGES, messages)
);
次の表に、データマネージャーが他のコンポーネントに提供するデータを示します。[データソース] 列は、データを生成する内部プロセスを識別します。
| プロパティ | データ型 | 説明 | Data Source (データソース) |
|---|---|---|---|
| ヘッダー | オブジェクト | 現在の商品ヘッダー情報 | mergeContexts() |
| メッセージ | Array | 検証/エラーメッセージ | API 応答 + ルール |
| optionGroups | Array | 商品コンポーネントグループ (オプション) | mergeContexts() |
| attributeCategories | Array | 商品属性カテゴリ | mergeContexts() |
| summary | オブジェクト | 設定の概要 (マージされたトランザクションツリー) | mergeContexts() |
| navigationRoute | Array | 現在のナビゲーションパスまたはブレッドクラム | buildNavigationInfo() |
| searchInfo | Array | 商品カタログのデータを検索する | buildSearchInfo() |
| タブ | Array | マルチルートバンドルで使用可能なタブ | buildTabs() |
| currencyCode | 文字列 | 価格設定の通貨コード | API 応答 |
| transactionRecord | オブジェクト | 取引レコードの詳細 | populateTransactionRecord() |
| headerTitle | 文字列 | ヘッダータイトルテキスト | generateHeaderTitle() |
| isInstantPricingToggleEnabled | Boolean | インスタント価格設定切り替えが表示されるかどうか | setToggleStates() |
| isInstantPricingEnabled | Boolean | 現在のインスタント価格設定の状態 | 切り替え/API |
| isProductValidationEnabled | Boolean | 現在の検証状態 | 切り替え/API |
| showPrices | Boolean | 価格を表示するかどうか | 状態ロジック |
| showSummaryTotalSection | Boolean | 集計セクションを表示するかどうか | 保険の上書き |
| favoriteData | 文字列 (JSON) |
お気に入りの設定データ | getFavoriteData() |
| isConfiguratorDisabled | Boolean | コンフィグレーターが無効かどうか | UI の状態 |
| isApiInProgress | Boolean | API コールが進行中かどうか | API ライフサイクル |
| isPriceRampEnabled | Boolean | 価格上昇が有効かどうか | コンテキストチェック |
| isGroupRampEnabled | Boolean | グループランプが有効かどうか | グループ計算 |
| salesTransactionItems | Array | すべての取引項目 | API 応答 |
| layoutMode | 文字列 | レイアウトモード (標準またはコンパクト) | 切り替え |
| searchResultOptionId | 文字列 | 選択した検索結果オプション ID | 検索ナビゲーション |
| rootProductId | 文字列 | ルート商品 ID | カタログデータ |
| currentGroupName | 文字列 | 現在のグループ名 | getCurrentGroupName() |
| contextMetadata | オブジェクト | カスタマイズ可能な販売取引品目属性のコンテキストメタデータ。UI に表示できるカスタム属性の項目定義 (表示ラベル、データ型、選択リスト値) が含まれます。 | コンテキスト解析 |
| eligiblePromotions | Array | 対象プロモーションリスト | プロモーション API |
データマネージャーがリスンするイベント
Data Manager は Lightning Message Service (LMS) イベントとワイヤー アダプタをリスンします。
LMS イベントを聞くために、データマネージャーはメッセージチャネルを登録し、他のコンポーネントがそこで公開した LMS イベントを受信します。次の表に、LMS イベントアクション、ハンドラーメソッド、およびアクションの動作を示します。
| イベントアクション | ハンドラメソッド | 機能 |
|---|---|---|
| valueChange | setState() | 設定状態 (選択、数量、属性) を更新します。 |
| 移動 | navigate() | バンドル階層内を移動する |
| closePreview | closePreview() | プレビューウィンドウを閉じる |
| toggleInstantPricing | setInstantPricing() | インスタント価格設定のオン/オフを切り替え |
| toggle説明可能性 | setExplainability() | 説明可能性のオン/オフを切り替え |
| toggleRulesValidation | setProductValidation() | 検証のオン/オフを切り替え |
| updatePrices | updatePrices() | 価格設定の手動トリガー |
| validateProduct | validateProduct() | 手動で検証をトリガーする |
| cloneItems | cloneItems() | トランザクション項目をコピーする |
| toggleCompactLayout | setLayoutModeOnToggle() | レイアウトモードを切り替え |
| contextDefinitionChanged | setContextDefinition() | コンテキスト定義を更新 |
| saveFavConfiguration | handleSaveConfiguration() | 設定をお気に入りとして保存 |
| loadFavorite | handleLoadFavorite() | お気に入りの設定を読み込む |
ワイヤーアダプターは、Salesforce Platform からのデータの変更を自動的にリスンし、データの変更をデータマネージャーに渡します。次の表に、Data Manager がリスンするワイヤーアダプターイベントを示します。
| ワイヤアダプタ | ソース | What it listen for | ハンドラメソッド | 目的 |
|---|---|---|---|---|
MessageContext |
Lightning/messageService | LMS のメッセージコンテキスト | 該当なし (コンテキストを提供) |
LMS 通信を有効にします。 |
getContextServiceDefinition |
Lightning/industriesContextApi | コンテキスト定義の変更 | getContextDefinition() |
コンテキスト定義データをリスンする |
getObjectInfos (2nd) |
Lightning/uiObjectInfoApi | 取引項目オブジェクト情報 | getObjectInfos() | トランザクション項目メタデータをリスンする |
イベントデータマネージャーの火災
データマネージャーは、カスタムイベント、トーストイベント、フロー属性変更イベントを起動します。
次の表に、バブルイベントと構成済みイベントを含む、データマネージャーが起動するカスタムイベントを示します。
| イベント名 | バブル | 構成済み | When it Fires. | 目的 |
|---|---|---|---|---|
| 読み込み中 | はい | はい | 初期読み込み中 | 読み込み中の状態を親に通知する |
| proceed | はい | はい | ルートでキャンセルまたはウィンドウを閉じる | 保存せずにコンフィグレーターを閉じる |
| 保存 | はい | はい | ナビゲーションを保存して終了する | 設定を保存して終了する |
| close_modal | はい | はい | プレビューを閉じる | プレビューウィンドウを閉じる |
| showConflictToast | はい | はい | ノンブロッキング API の競合が検出されました | 競合警告トーストを表示 |
次の表に、データマネージャーが起動するトーストイベントを示します。
| イベント名 | いつ起動されますか | 目的 |
|---|---|---|
| ShowToastEvent | お気に入りが正常に読み込まれた後 | お気に入りの読み込みが成功したことをユーザーに通知 |
データマネージャーは、UI の更新ごとにすべての反応型プロパティの FlowAttributeChange イベントをディスパッチします。
