数据管理器
数据管理器是产品配置器的状态管理和编排组件。此组件存储产品数据,并使用流事件将数据传播到流屏幕上的其他组件。
所需的 Edition
| 适用于:Lightning Experience |
| 适用于:具有 Revenue Cloud Growth 许可证或 Revenue Cloud Advanced 许可证的 Revenue Management Enterprise、Unlimited 和 Developer Edition(以前称为 Revenue Cloud) |
数据管理员职责
- 维护事务上下文和配置状态
- 调用配置器 API 并处理响应
- 从 UI 组件处理 Lightning 消息服务 (LMS) 事件
- 向 UI 提供数据,并向子组件公开反应性属性
- 支持保存和加载收藏夹配置
数据管理器 API 名称
S01_DataManager
数据管理器输入属性
数据管理器接受来自用户设置的父级或流组件属性的数据。
| 属性 | 类型 | 必填 | 描述 |
|---|---|---|---|
| transactionLineId | 字符串 | 是 | 根产品或交易行 ID |
| currentTransactionLineId | 字符串 | 是 | 正在查看的当前行 |
| transactionId | 字符串 | 是 | 销售交易 ID(报价、订单等) |
| 父名称 | 字符串 | 是 | 配置相关的父交易的名称或标题。 |
| 来源 | 字符串 | 是 | 交易记录的父对象的名称。示例:“业务机会”、“报价”、“订单”、“资产”等。这将标识哪个 Salesforce 对象类型启动配置。用于导航、UI 标签等。 |
| addedNodes | 阵列 | 否 | 包含与父记录事务关联的 Apex ProductConfig__SalesTransactionItem 记录集合的流资源。 |
| isNonBlockingEnabled | 布尔值 | 否 | 打开非阻止模式。当打开时,这允许用户在后台处理 API 调用时继续与 UI 交互。更改会异步排队和处理,而不会阻止 UI。关闭时,UI 会在 API 调用期间锁定。 |
| areMessagesFixed | 布尔值 | 否 | 消息组件是否有固定的位置。为真时,消息组件会固定在屏幕顶部,并在滚动时保持可见(粘滞定位)。为假时,消息组件会随页面内容滚动(相对定位)。用于在配置期间保持验证错误/警告始终可见 |
| contextId | 字符串 | 否 | 为产品配置器指定的事务上下文的 ID |
| enableARCValidation | 布尔值 | 否 | 表示 ARC(资产续订配置)验证是否在产品配置期间运行 |
| transactionLineGroupId | 字符串 | 否 | 包含正在配置的当前交易行的组的 ID。对于报价,这是报价行组 ID。对于订单,这是订单项目组 ID。 |
| explainabilityEnabled | 布尔值 | 否 | 在启用可解释性时,产品配置器会详细说明隐藏、禁用或推荐产品的原因。显示规则执行详细信息和业务逻辑推理,以帮助用户了解配置约束。 |
| userContext | 对象 | 否 | 包含用户资格数据的流变量的 API 名称。此变量的类型为 ProductConfig__UserContext,根据用户特定的属性确定产品资格。 1. 在 Flow Builder 中,创建变量 API 名称,例如 userContextData。 2. 使用“分配”或“获取记录”元素填充变量,并设置字段,例如角色、区域、accountType 等。例如,{!userContextData.role} = {!$User.UserRole.Name} 3. 在数据管理器中,对于用户上下文,选择{!userContextData}。配置器 API 使用此数据评估资格规则,并筛选哪些产品可用。例如,如果您有“仅向企业销售代表显示企业产品”这样的规则,API 会从此上下文中检查用户的角色。 仅当您的产品资格规则取决于特定于用户的属性(例如角色、区域等)时,才选择用户上下文。如果所有产品对所有用户可用,请将此字段留空。 |
| InstantPricing | 布尔值 | 否 | 一个布尔值,指示即时定价是否默认打开。 |
数据管理器输出属性
数据管理器写入客户可以读取的输出属性。内部方法生成数据,FlowAttributeChangeEvent将数据发送到相关属性,如本例所示。
this.dispatchEvent(
new FlowAttributeChangeEvent(FLOW_REACTIVITY_MESSAGES, messages)
);
此表显示了数据管理器向其他组件提供的数据。数据源列标识生成数据的内部流程。
| 属性 | 数据类型 | 描述 | 数据源 |
|---|---|---|---|
| 标题 | 对象 | 当前产品标题信息 | mergeContexts() |
| 消息 | 阵列 | 验证/错误消息 | API 响应 + 规则 |
| 选项组 | 阵列 | 产品组件组(选项) | mergeContexts() |
| attributeCategories | 阵列 | 产品属性类别 | mergeContexts() |
| summary | 对象 | 配置摘要(合并事务树) | mergeContexts() |
| navigationRoute | 阵列 | 当前导航路径或踪迹 | buildNavigationInfo() |
| 搜索信息 | 阵列 | 搜索产品目录的数据 | buildSearchInfo() |
| 选项卡 | 阵列 | 多根捆绑包的可用选项卡 | buildTabs() |
| currencyCode | 字符串 | 定价的货币代码 | API 响应 |
| 交易记录 | 对象 | 交易记录详细信息 | populateTransactionRecord() |
| HeadTitle | 字符串 | 页眉标题文本 | generationHeaderTitle() |
| isInstantPricingToggleEnabled | 布尔值 | 是否显示即时定价切换 | setToggleStates() |
| isInstantPricingEnabled | 布尔值 | 当前即时定价状态 | 切换/API |
| isProductValidationEnabled | 布尔值 | 当前验证状态 | 切换/API |
| showPrices | 布尔值 | 是否显示价格 | 状态逻辑 |
| showSummaryTotalSection | 布尔值 | 是否显示汇总总计部分 | 保险覆盖 |
| favoriteData | 字符串 (JSON) |
收藏夹的配置数据 | getFavoriteData() |
| isConfiguratorDisabled | 布尔值 | 是否禁用配置器 | UI 状态 |
| isApiInProgress | 布尔值 | API 调用是否正在进行 | API 生命周期 |
| isPriceRampEnabled | 布尔值 | 是否启用价格斜坡 | 上下文检查 |
| isGroupRampEnabled | 布尔值 | 是否启用小组坡道 | 小组计算 |
| salesTransactionItems | 阵列 | 所有交易项目 | API 响应 |
| 布局模式 | 字符串 | 布局模式(标准或紧凑) | 切换 |
| searchResultOptionId | 字符串 | 选定搜索结果选项 ID | 搜索导航 |
| rootProductId | 字符串 | 根产品 ID | 目录数据 |
| currentGroupName | 字符串 | 当前小组名称 | getCurrentGroupName() |
| context元数据 | 对象 | 可自定义销售交易项目属性的上下文元数据。包含可在 UI 中显示的自定义属性的字段定义(标签、数据类型、选项列表值)。 | 上下文解析 |
| 合格促销 | 阵列 | 合格促销列表 | 促销 API |
事件数据管理器监听
数据管理器监听 Lightning 消息服务 (LMS) 事件和有线适配器。
为了监听 LMS 事件,数据管理器订阅消息渠道,并接收其他组件在那里发布的 LMS 事件。此表显示了 LMS 事件操作、它们的处理程序方法以及操作的功能。
| 事件操作 | 处理程序方法 | 它的作用 |
|---|---|---|
| valueChange | setState() | 更新配置状态(选择、数量、属性) |
| 导航 | navigate() | 在捆绑层次结构中导航 |
| closePreview | closePreview() | 关闭预览窗口 |
| toggleInstantPricing | setInstantPricing() | 打开/关闭即时定价 |
| toggleExplaiability | setExplainability() | 打开/关闭可解释性 |
| toggleRulesValidation | setProductValidation() | 打开/关闭验证 |
| updatePrices | updatePrices() | 手动触发定价 |
| 验证产品 | validateProduct() | 手动触发验证 |
| cloneItems | cloneItems() | 复制交易项目 |
| toggleCompactLayout | setLayoutModeOnToggle() | 切换布局模式 |
| contextDefinitionChanged | setContextDefinition() | 更新上下文定义 |
| saveFavConfiguration | handleSaveConfiguration() | 将配置保存为收藏夹 |
| loadFavorite | handleLoadFavorite() | 加载收藏夹配置 |
有线适配器自动监听 Salesforce Platform 中的数据更改,并将数据更改传输到数据管理器。此表显示了数据管理器监听的电线适配器事件。
| 电线适配器 | 源 | 它监听的内容 | 处理程序方法 | 目标 |
|---|---|---|---|---|
MessageContext |
Lightning/messageService | LMS 的消息上下文 | 不适用(提供上下文) |
启用 LMS 通信 |
getContextServiceDefinition |
Lightning/industriesContextApi | 上下文定义更改 | gotContextDefinition() |
监听上下文定义数据 |
getObjectInfos (2nd) |
Lightning/uiObjectInfoApi | 交易项目对象信息 | getObjectInfos() | 监听交易项目元数据 |
事件数据管理器触发
数据管理器触发自定义事件、吐司事件和流属性更改事件。
此表显示了自定义事件数据管理器火灾,包括冒泡和合成事件。
| 事件名称 | 泡沫 | 组成 | 何时触发 | 目标 |
|---|---|---|---|---|
| 加载 | 是 | 是 | 在初始加载期间 | 通知父级加载状态 |
| 继续 | 是 | 是 | 在根位置取消或关闭窗口 | 关闭配置器而不保存 |
| 保存 | 是 | 是 | 保存并退出导航 | 保存配置并退出 |
| close_modal | 是 | 是 | 关闭预览 | 关闭预览窗口 |
| showConflictToast | 是 | 是 | 检测到非阻止 API 冲突 | 显示冲突警告吐司 |
此表显示了数据管理器触发的吐司事件。
| 事件名称 | 何时解雇 | 目标 |
|---|---|---|
| ShowToastEvent | 成功加载收藏夹后 | 通知用户收藏夹加载成功 |
数据管理器会在每次 UI 更新时为所有反应性属性派遣 FlowAttributeChange 事件。
