Salesforce 元数据

89 阅读6分钟

🧩 一、什么是 Salesforce 元数据(Metadata)

在 Salesforce 中,元数据(Metadata) 是指系统配置和定制的定义信息,用来描述应用的结构与行为。
换句话说:

数据(Data) 是业务运行的内容,
元数据(Metadata) 是告诉系统“数据该怎么组织和运行”的规则。

类型示例说明
数据(Data)Account 记录、Contact 记录业务数据
元数据(Metadata)Account 对象定义、字段定义、验证规则、页面布局系统配置定义

🧱 二、元数据模型的核心层级

Salesforce 的元数据模型是分层的,类似下图结构:

┌───────────────────────────────┐
│ Salesforce Org(组织)        │
│  ├── Object(对象定义)       │
│  │    ├── Field(字段定义)   │
│  │    ├── ValidationRule      │
│  │    ├── RecordType          │
│  │    └── PageLayout          │
│  ├── ApexClass / Trigger      │
│  ├── Workflow / Flow / PB     │
│  ├── PermissionSet / Profile  │
│  ├── CustomApplication        │
│  ├── LightningPage / Tab      │
│  └── SharingRules / Queues    │
└───────────────────────────────┘

每个元数据组件(Metadata Component)都可以独立定义、导出、部署。


🧩 三、元数据的主要类型(Metadata Types)

🧱 1、数据模型(Data Model Metadata)

定义 Salesforce 数据结构(对象、字段、关系等)

分类元数据类型说明
对象定义CustomObject, ExternalObject, PlatformEvent自定义对象、外部对象、平台事件
字段定义CustomField, Index, GlobalValueSet, ValueSet字段、索引、选择列表定义
记录类型与布局RecordType, PageLayout, CompactLayout记录类型与界面布局
关系与命名Relationship, FieldSet, BusinessProcess对象间关系、字段集、业务流程
数据规则ValidationRule, DuplicateRule, MatchingRule数据校验与重复检测
数据模板CustomMetadata, CustomSetting元数据记录与设置数据

⚙️ 2、自动化与逻辑(Automation & Logic Metadata)

定义系统的自动化行为与业务逻辑。

分类元数据类型说明
工作流与审批Workflow, WorkflowRule, ApprovalProcess, OutboundMessage自动化规则与审批流
流程与自动化Flow, ProcessBuilder, FlowDefinition, FlowCategoryFlow(Lightning Flow)定义
触发与编程逻辑ApexClass, ApexTrigger, ApexPage, ApexComponent, ApexTestSuiteApex 代码与触发器
调度与任务ApexScheduledJob, BatchJobDefinition, Queue定时任务与队列
平台事件PlatformEventChannel, PlatformEventSubscriberConfig事件驱动架构配置

🎨 3、用户界面(User Interface Metadata)

定义 Salesforce 的 UI 层,包括 Lightning、页面、组件、导航等。

分类元数据类型说明
页面与布局PageLayout, LightningPage, FlexiPage, HomePageLayout页面布局与 Lightning 页面
组件与模板AuraDefinitionBundle, LightningComponentBundle, LWCResourceAura / LWC 组件
应用与导航CustomApplication, AppMenu, CustomTab, CustomPageWebLink, CustomHelpMenuSection应用、导航菜单、标签页
主题与品牌Theme, BrandingSet, CustomThemeLayout主题与品牌样式
快捷操作与按钮QuickAction, GlobalQuickAction, WebLink, ListView快捷操作与按钮定义
移动配置MobileApplicationDetail, CompactLayoutAssignment移动端界面配置

🔐 4、安全与访问控制(Security & Access Metadata)

定义用户访问权限、共享规则、角色层级等。

分类元数据类型说明
用户权限Profile, PermissionSet, PermissionSetGroup, MutingPermissionSet权限与访问控制
角色与共享Role, SharingRules, SharingSet, SharingOwnerRule, Territory2共享与区域规则
登录与认证AuthProvider, ConnectedApp, SamlSsoConfig, SingleSignOnSettings单点登录与认证配置
会话与策略SessionSettings, PasswordPolicies, LoginFlow, NetworkAccess登录策略与安全控制
审计与追踪FieldAuditTrail, TransactionSecurityPolicy, EventMonitoring审计与安全事件监控

🧭 5、应用与导航结构(App & Navigation Metadata)

定义 Salesforce 应用、导航、主页、选项卡等。

分类元数据类型说明
应用定义CustomApplication, AppMenu, AppMenuItem应用与菜单
导航配置NavigationMenu, AppPage, LightningPage导航与页面结构
标签与主页CustomTab, HomePageComponent, HomePageLayout标签页与主页布局
主题与品牌Theme, BrandingSet, CustomThemeLayout视觉主题与样式

📊 6、分析与报表(Analytics Metadata)

定义报表、仪表盘、报表类型等。

分类元数据类型说明
报表Report, ReportType, ReportFolder报表与报表类型
仪表盘Dashboard, DashboardFolder, DashboardComponent仪表盘配置
Einstein AnalyticsWaveDashboard, WaveDataset, WaveLens, WaveRecipeTableau CRM(旧名 Einstein Analytics)组件
报表安全FolderShare, ReportSharingSettings报表文件夹共享

🔄 7、集成与外部系统(Integration Metadata)

定义外部连接、API、命名凭据、外部对象等。

分类元数据类型说明
外部数据ExternalDataSource, ExternalObject, ExternalServiceRegistration外部数据连接
认证与凭据NamedCredential, AuthProvider, ConnectedApp外部系统认证
API 定义ApexRestService, PlatformEventChannel, ExternalService外部接口定义
集成事件PlatformEvent, EventRelayConfig, ChangeDataCapture事件与数据同步
Outbound 集成OutboundMessage, WorkflowOutboundMessage外部消息推送

🧩 8、AI 与 Einstein(AI / ML Metadata)

分类元数据类型说明
预测模型PredictionDefinition, PredictionFieldEinstein Prediction Builder
推荐模型RecommendationDefinition, RecommendationStrategyEinstein Recommendations
AI 设置EinsteinSettings, AIApplicationAI 应用配置

🧰 9、开发与部署(Development & Deployment Metadata)

分类元数据类型说明
代码与资源ApexClass, ApexTrigger, StaticResource, Document, ContentAsset代码与静态资源
部署与包Package, PackageVersion, UnlockedPackage, InstalledPackage包与版本管理
环境配置CustomLabel, CustomPermission, CustomMetadata环境常量与权限
测试与监控ApexTestSuite, TestSettings, MonitoringSnapshot测试与监控配置

🧮 10、平台与系统设置(Platform Settings Metadata)

分类元数据类型说明
公司与组织设置CompanySettings, OrgPreferenceSettings, EmailAdministrationSettings组织级设置
用户界面设置UserInterfaceSettings, ChatterSettings, LightningExperienceSettingsUI 行为控制
安全策略SecuritySettings, SessionSettings, PasswordPolicies安全策略
特性开关FeatureParameter, FeatureManagementSettings功能启用配置
本地化与语言Translations, LanguageSettings, LocaleSettings多语言与本地化

🧾 11、部署与 DevOps 支持(Deployment Metadata)

分类元数据类型说明
部署容器DeploymentSettings, DeploymentPlan, DeploymentArtifact部署计划与配置
变更集ChangeSet, DeploymentConnection环境迁移
源代码管理SourceMember, ScratchOrgDefinition, DevHubSettingsSFDX 与源跟踪

🧠 四、元数据模型的访问方式

Salesforce 提供多种方式访问与管理元数据:

工具 / 接口说明典型用途
Setup UISalesforce 设置界面直接配置对象、字段、布局等
Metadata APIXML 格式导出/部署元数据DevOps、CI/CD、版本控制
Tooling API以对象化方式访问元数据定义IDE、代码分析、Schema 浏览
Salesforce DX (SFDX)命令行工具源代码管理、版本化部署
Change Set组织间迁移工具沙盒 → 生产环境迁移
VS Code + Salesforce Extension开发者工具代码与元数据同步

⚙️ 五、元数据的存储与结构(内部模型)

在 Salesforce 内部,元数据以 XML 文件元数据对象(Metadata Objects) 的形式存在。
例如,一个自定义对象 Invoice__c 的元数据定义文件(简化版)如下:

<?xml version="1.0" encoding="UTF-8"?>
<CustomObject xmlns="http://soap.sforce.com/2006/04/metadata">
    <label>Invoice</label>
    <pluralLabel>Invoices</pluralLabel>
    <nameField>
        <type>AutoNumber</type>
        <label>Invoice Number</label>
        <displayFormat>INV-{0000}</displayFormat>
    </nameField>
    <fields>
        <fullName>Amount__c</fullName>
        <label>Amount</label>
        <type>Currency</type>
    </fields>
    <fields>
        <fullName>DueDate__c</fullName>
        <label>Due Date</label>
        <type>Date</type>
    </fields>
    <deploymentStatus>Deployed</deploymentStatus>
    <sharingModel>ReadWrite</sharingModel>
</CustomObject>

这就是 Salesforce 元数据模型的“底层结构”形式。


🧩 六、元数据与数据的关系

对比项元数据数据
作用定义结构与逻辑存储业务内容
存储位置Metadata RepositoryDatabase Record
修改方式Setup / Metadata APIUI / DML / API
示例自定义字段、布局、验证规则Account 记录、Case 记录
迁移方式Change Set / Metadata APIData Loader / ETL

🔗 七、元数据模型的可视化(简化结构)

graph TD
    A[Org] --> B[CustomObject]
    B --> C[CustomField]
    B --> D[ValidationRule]
    B --> E[PageLayout]
    A --> F[Profile]
    A --> G[PermissionSet]
    A --> H[Workflow / Flow]
    A --> I[ApexClass / Trigger]
    A --> J[LightningPage]
    A --> K[Report / Dashboard]

🧰 八、元数据模型管理的最佳实践

  1. 使用版本控制(Git)管理元数据

    • 使用 Salesforce DX 将元数据文件化(Source Format)
    • 每次修改通过 Pull Request 审查
  2. 环境分层

    • 开发环境(Dev Sandbox)
    • 测试环境(UAT Sandbox)
    • 生产环境(Production)
  3. 自动化部署

    • 使用 CI/CD 工具(如 GitHub Actions、Jenkins、Azure DevOps)
    • 通过 sfdx force:source:deploy 自动部署
  4. 模块化设计

    • 将元数据按功能模块拆分(对象、自动化、权限)
  5. 元数据依赖管理

    • 注意对象、字段、布局、权限之间的依赖顺序

✅ 九、总结对比

项目数据模型元数据模型
定义内容业务数据结构(对象、字段、关系)系统配置与逻辑定义
存储位置数据库(Record)元数据仓库(XML / Metadata Repo)
访问方式SOQL / API / UIMetadata API / Tooling API / Setup
迁移方式Data Loader / APIChange Set / SFDX / Metadata API
示例Account 记录、Contact 记录Account 对象定义、布局、权限集