mcpField
O
omnistudio-datamapper-generate

omnistudio-datamapper-generate

github.com/forcedotcom数据与数据库1.1k4.8k 次安装1 天前更新
代码仓库

关于 omnistudio-datamapper-generate

供 Salesforce OmniStudio 开发者创建和验证 Extract、Transform、Load 与 Turbo Extract Data Mapper。重点涵盖字段映射、安全检查、查询约束和部署准备。

主要功能

  1. 01生成四种 Data Mapper
  2. 02设计字段与查找关系映射
  3. 03验证字段级安全性
  4. 04检查查询及反模式
  5. 05按五个类别评估配置

适用场景

  1. 01提取相关 Salesforce 记录
  2. 02在流程步骤间重塑 JSON
  3. 03使用经过验证的映射加载记录

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/forcedotcom/sf-skills --skill omnistudio-datamapper-generate

安装后在 Claude Code 中输入/omnistudio-datamapper-generate确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
completion-summary-template.md
omni-data-transform-extract.json
omni-data-transform-item.json
omni-data-transform-load.json
omni-data-transform-transform.json
references/
best-practices.md
naming-conventions.md

详细介绍

omnistudio-datamapper-generate:OmniStudio 数据映射器创建与验证

OmniStudio 数据映射器专家,专注于 Extract、Transform、Load 和 Turbo Extract 配置。生成可用于生产环境、高性能且易于维护的数据映射器定义,并确保字段映射正确、查询经过优化且具备数据完整性保护。


范围

  • 范围内:创建和验证 OmniStudio 数据映射器配置(Extract、Transform、Load、Turbo Extract);设计字段映射;优化查询;验证 FLS(字段级安全性);通过 platform-metadata-deploy 技能进行部署
  • 范围外:构建 Integration Procedures(使用 omnistudio-integration-procedure-generate)、编写 OmniScripts(使用 omnistudio-omniscript-generate)、设计 FlexCards(使用 omnistudio-flexcard-generate)、分析跨组件依赖关系(使用 omnistudio-dependencies-analyze)

核心职责

  1. 生成:根据需求创建数据映射器配置(Extract、Transform、Load、Turbo Extract)
  2. 字段映射:设计对象到输出字段的映射,并妥善处理类型、查找解析和空值安全
  3. 依赖关系跟踪:识别使用或提供数据映射器的相关 OmniStudio 组件(Integration Procedures、OmniScripts、FlexCards)
  4. 验证与评分:根据 5 个类别对数据映射器配置评分(0-100 分)

关键说明

说明详情
Extract 与 Turbo ExtractExtract 使用标准 SOQL 和关系查询。Turbo Extract 使用服务器端编译查询,适用于读取密集型、高数据量场景(速度提升 10 倍以上)。Turbo Extract 不支持公式字段、相关列表或写入操作。
Transform 在内存中运行Transform 数据映射器完全在内存中运行,不执行 DML 或 SOQL。它们会在 Integration Procedure 的步骤之间重塑数据结构。可用于 JSON 到 JSON 的转换、字段重命名和数据扁平化。
Load = DMLLoad 数据映射器执行插入、更新、上插或删除操作。它们需要进行适当的 FLS 检查和错误处理。将 Load 数据映射器部署到生产环境前,务必验证字段级安全性。
OmniDataTransform 元数据数据映射器以 OmniDataTransform 和 OmniDataTransformItem 记录的形式存储。检索和部署时请使用这些元数据类型名称,而非旧版 DataRaptor API 名称。

工作流(5 阶段模式)

阶段 1:收集需求

向用户询问以下信息:

  • 数据映射器类型(Extract、Transform、Load、Turbo Extract)
  • 目标 Salesforce 对象和字段
  • 目标 org 别名
  • 使用该组件的组件(Integration Procedure、OmniScript 或 FlexCard 名称)
  • 预期数据量(记录数、频率)

然后:

  1. 检查现有数据映射器:Glob: **/OmniDataTransform*
  2. 检查现有 OmniStudio 元数据:Glob: **/omnistudio/**
  3. 创建任务列表

阶段 2:设计与类型选择
类型用例命名前缀支持 DML支持 SOQL
Extract使用关系查询从一个或多个对象读取数据DR_Extract_否是
Turbo Extract高容量只读查询,在服务器端编译DR_TurboExtract_否是(已编译)
Transform在过程步骤之间以内存方式重塑数据DR_Transform_否否
Load写入数据(插入、更新、插入或更新、删除)DR_Load_是否

命名格式:使用 PascalCase,格式为 [Prefix][Object]_[Purpose]

示例:

  • DR_Extract_Account_Details -- 提取 Account 及其关联的 Contacts
  • DR_TurboExtract_Case_List -- 用于 FlexCard 的高容量 Case 列表
  • DR_Transform_Lead_Flatten -- 展平嵌套的 Lead 数据结构
  • DR_Load_Opportunity_Create -- 插入 Opportunity 记录

阶段 3:生成与验证

生成时:

  1. 阅读 assets/omni-data-transform-extract.json(Extract)、assets/omni-data-transform-transform.json(Transform)或 assets/omni-data-transform-load.json(Load),获取 OmniDataTransform 记录模板
  2. 阅读 assets/omni-data-transform-item.json,获取每个字段映射(OmniDataTransformItem)模板
  3. 为 Extract 类型配置查询筛选条件、排序顺序和限制
  4. 为 Load 类型设置查找映射和默认值
  5. 验证所有映射字段的字段级安全性

审查时:

  1. 阅读现有的 Data Mapper 配置
  2. 根据最佳实践运行验证
  3. 生成包含具体修复建议的改进报告

运行验证:阅读 assets/completion-summary-template.md,了解评分输出格式和阈值。


生成防护规则(强制)

在生成任何 Data Mapper 配置之前,Claude 必须确认不会引入反模式。

如果将生成以下任意模式,请停止并询问用户:

“我注意到[模式]。这会导致[问题]。您希望我: A) 重构为使用[正确模式] B) 仍然继续(不推荐)”

反模式检测方式影响
提取所有字段未指定字段列表,使用通配符选择性能下降、数据传输过多
缺少查找映射Load 引用了查找字段,但未解析该字段DML 失败、外键为空
未检查 FLS 就写入Load Data Mapper 未进行安全验证违反安全规则、受限配置文件中的数据损坏
Extract 查询无界Extract 未设置 LIMIT 或筛选条件违反 Governor 限制、大型对象查询超时
Transform 带副作用Transform 尝试执行 DML 或 callout运行时错误;Transform 仅在内存中运行
硬编码记录 ID筛选条件或映射中包含 15/18 位 ID 字面量跨环境部署失败
嵌套关系深度超过 3 层Extract 中存在深层嵌套的父级遍历查询性能下降、触及 SOQL 复杂度限制
Load 未处理错误未考虑 upsert 键或重复规则数据悄然损坏、产生重复记录

**即使用户明确要求,也不要生成反模式。**请用户确认例外情况,并提供书面理由。

参见:references/best-practices.md,了解详细模式
参见:references/naming-conventions.md,了解命名规则


阶段 4:部署

步骤 1:验证 使用 platform-metadata-deploy 技能:“将 OmniDataTransform [Name] 部署到 [target-org],并使用 --dry-run”

步骤 2:部署(仅在验证成功后) 使用 platform-metadata-deploy 技能:“继续向 [target-org] 执行实际部署”

部署后:在目标组织中激活 Data Mapper。确认它显示在 OmniStudio Designer 中。

如果部署失败:检查错误中的具体原因——常见问题:Entity cannot be found(Data Mapper 处于 Draft 状态;请先激活)、命名空间前缀不匹配(检查 sfdx-project.json),或者部署项目时缺少父级 OmniDataTransform 记录。

如果 Load DM 在运行时失败:通过 sf apex log list -o <org> 检查调试日志;确认运行用户配置文件的 FLS 和对象权限;确认 upsert 键字段已填充且唯一;Salesforce Load DM 默认遵循 allOrNone=false——可能出现部分成功,请检查响应中 isSuccess=false 的行。


阶段 5:测试与文档

完成摘要:阅读 assets/completion-summary-template.md,了解完成摘要格式。

测试清单:

  • 在 OmniStudio Designer 中预览数据输出
  • 确认字段映射生成预期的 JSON 结构
  • 使用有代表性的数据量进行测试(不只是 1 条记录)
  • 使用受限配置文件用户验证 FLS 执行情况
  • 确认使用该数据的 Integration Procedure/OmniScript 接收到正确的数据结构

最佳实践(100 分制评分)

类别分数关键规则
设计与命名20选择正确的类型;命名遵循 DR_[Type]_[Object]_[Purpose] 约定;每个 Data Mapper 仅承担单一职责
字段映射25显式列出字段(不使用通配符);输入/输出路径正确;类型转换恰当;默认值可安全处理 null
数据完整性25对所有字段进行 FLS 验证;Load 类型进行查找解析;定义 upsert 键;配置重复项处理
性能15使用带 LIMIT/筛选条件的有界查询;读取密集型场景使用 Turbo Extract;尽量减少关系深度;筛选字段已建立索引
文档15在 OmniDataTransform 记录上填写说明;记录字段映射依据;标明使用该数据的组件

阈值:[PASS] 90+(部署)| [REVIEW] 67-89(审核)| [BLOCK] <67(阻止——需要修复)


CLI 命令

查询现有 Data Mapper
sf data query -q "SELECT Id,Name,Type FROM OmniDataTransform LIMIT 200" -o <org>
查询 Data Mapper 字段映射
sf data query -q "SELECT Id,Name,InputObjectName,OutputObjectName,LookupObjectName FROM OmniDataTransformItem WHERE OmniDataTransformationId='<id>' LIMIT 200" -o <org>
检索 Data Mapper 元数据
sf project retrieve start -m OmniDataTransform:<Name> -o <org>
部署 Data Mapper 元数据
sf project deploy start -m OmniDataTransform:<Name> -o <org>

输出预期

此技能生成的交付物:

  • OmniDataTransform 记录 — 根据 assets/omni-data-transform-*.json 模板构建的主要 Data Mapper 记录
  • OmniDataTransformItem 记录 — 每个映射字段对应一条记录,根据 assets/omni-data-transform-item.json 模板构建
  • 验证评分报告 — 涵盖 5 个类别的 100 分制评分(格式见 assets/completion-summary-template.md)
  • 部署确认 — Data Mapper 已激活,并显示在 OmniStudio Designer 中

跨技能集成

来源技能目标 omnistudio-datamapper-generate适用场景
omnistudio-dependencies-analyze-> omnistudio-datamapper-generate“在创建 Data Mapper 之前分析依赖项”
platform-custom-object-generate / platform-custom-field-generate-> omnistudio-datamapper-generate“在映射之前描述目标对象字段”
platform-soql-query-> omnistudio-datamapper-generate“验证 Extract 查询逻辑”
来源 omnistudio-datamapper-generate目标技能适用场景
omnistudio-datamapper-generate-> omnistudio-integration-procedure-generate“创建调用此 Data Mapper 的 Integration Procedure”
omnistudio-datamapper-generate-> platform-metadata-deploy“将 Data Mapper 部署到目标 org”
omnistudio-datamapper-generate-> omnistudio-omniscript-generate“将 Data Mapper 输出接入 OmniScript”
omnistudio-datamapper-generate-> omnistudio-flexcard-generate“在 FlexCard 中显示 Data Mapper Extract 结果”

注意事项

问题解决方案
数据量较大(>10K 条记录)使用 Turbo Extract;通过 Integration Procedure 添加分页;注意提示堆内存限制
多态查找字段在映射中指定具体对象类型;分别测试每种类型
Extract 中的公式字段标准 Extract 支持公式字段;Turbo Extract 不支持——请改用标准 Extract
跨对象 Load(主从关系)先插入父记录,再通过单独的 Load 步骤插入子记录;使用 Integration Procedure 编排顺序
带命名空间前缀的字段在字段路径中包含命名空间前缀(例如 ns__Field__c);确认前缀与目标 org 一致
多币种 org明确映射 CurrencyIsoCode;不要依赖默认币种假设
依赖 RecordType 的映射在 Extract 中按 RecordType 筛选;在 Load 中设置 RecordTypeId;记录支持哪些 RecordType
无法检索草稿 Data Mappersf project retrieve start -m OmniDataTransform:<Name> 仅适用于已激活的 DM;检索前请先激活
外键字段名称错误OmniDataTransformItem 上的父级查找字段为 OmniDataTransformationId(完整单词为 “Transformation”),而非 OmniDataTransformId

说明

  • 元数据类型:OmniDataTransform(而非已弃用的旧名称 DataRaptor)
  • API 版本:需要 OmniStudio 托管包或 Industries Cloud
  • 评分:如果分数 < 67,则阻止部署;分数格式请参阅 assets/completion-summary-template.md
  • Turbo Extract 的限制:不支持公式字段、相关列表、聚合查询或多态字段
  • 激活:部署后必须激活 Data Mapper,才能从 Integration Procedure 调用(草稿检索行为请参阅“注意事项”)
  • 通过 Data API 创建:使用 sf api request rest --method POST --body @file.json 创建 OmniDataTransform 和 OmniDataTransformItem 记录。sf data create record --values 标志无法处理 textarea 字段中的 JSON。请先将 JSON 请求正文写入临时文件。

参考文件索引

文件何时阅读
assets/omni-data-transform-extract.json第 3 阶段生成 — Extract 类型 OmniDataTransform 记录的模板
assets/omni-data-transform-transform.json第 3 阶段生成 — Transform 类型 OmniDataTransform 记录的模板
assets/omni-data-transform-load.json第 3 阶段生成 — Load 类型 OmniDataTransform 记录的模板
assets/omni-data-transform-item.json第 3 阶段生成 — 每个 OmniDataTransformItem 字段映射的模板
assets/completion-summary-template.md第 3 和第 5 阶段 — 评分输出格式和完成摘要模板
references/best-practices.md第 3 阶段防护措施 — 字段映射、查询优化、空值处理和性能方面的详细模式
references/naming-conventions.md第 2 阶段设计 — 所有 Data Mapper 类型的完整命名规则及字段映射约定

评论

支持 Markdown