跳至内容
白白随笔

白白随笔

Salesforce官方讲师

学习目录

近期文章

  • Salesforce CLI 配置和提示
  • Salesforce CLI 设置指南
  • 持续集成
  • 开发解锁包
  • 解锁包
  • 构建和发布应用
  • 部署
  • 沙盒
  • 临时组织
  • 授权
  • Salesforce 开发人员体验如何改变您的工作方式
  • 将 Experience Cloud 站点从沙盒部署到生产环境
  • 开发安全站点: CSP、LWS 和 闪电 柜子
  • 开发安全站点:经过身份验证的用户和来宾用户
  • 自定义模板的主题布局
  • 自定义体验生成器模板的外观
  • Experience Cloud 开发人员指南
  • 部署和检索元数据
  • 快速入门:元数据 API
  • 元数据 API 开发人员指南

归档

  • 2024 年 4 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2024 年 1 月
  • 2023 年 12 月
  • 2023 年 11 月
  • 2021 年 1 月
  • 2020 年 12 月
  • 2020 年 6 月
  • 2020 年 5 月
  • 2020 年 4 月
  • 2019 年 11 月
  • 2019 年 10 月
  • 2019 年 9 月
  • 2019 年 8 月
  • 2019 年 7 月
  • 2019 年 6 月
  • 2019 年 4 月
  • 2018 年 12 月
  • 2018 年 11 月
  • 2018 年 10 月
  • 2018 年 9 月
  • 2018 年 8 月
  • 2018 年 7 月
  • 2018 年 5 月
  • 2018 年 4 月
  • 2018 年 3 月
  • 2018 年 2 月
  • 2018 年 1 月
  • 2017 年 12 月
  • 2017 年 11 月
  • 2017 年 8 月

分类

  • Analytics Cloud
    • Analytics Administration
    • Analytics Apps Basics
    • Analytics Basics
    • Analytics Dashboard
    • Analytics Data Integration
    • Analytics Exploration
    • App Design
    • App Template
    • Build Advanced Analytics
    • Build Analytics
    • Custom Map
    • Einstein Analytics
    • Einstein Basics
    • Einstein Discovery Basics
    • Einstein Discovery Stories
    • Einstein Discovery Story Insights
    • Einstein Prediction Builder
    • Embed an Einstein Analytics
    • Event Monitoring
    • Gauge Chart
    • Mobile Exploration
    • Sales Analytics
    • Service Analytics
  • Apex
    • Apex Trigger
    • Apex 开发人员指南
    • Apex-Metadata API
    • Apex-基础
    • Apex-大数据处理
    • Apex-异步
    • Apex-测试
    • 事件驱动
    • 大对象
  • AppExchange合作伙伴
    • AppExchange合作伙伴基础
    • AppExchange应用试用管理
    • ISVforce 指南
    • 合作伙伴社区
    • 合作伙伴诚信道德
    • 安全审查
    • 应用升级
    • 应用程序策略
    • 应用程序部署
    • 应用许可证
    • 试用版管理
  • Commerce Cloud
    • Commerce Cloud功能
    • Commerce Cloud和客户成功平台
    • Commerce Cloud基础
    • Commerce Cloud爱因斯坦实施
    • Commerce的体系结构
    • Salesforce B2B Commerce基础
    • Salesforce B2C Commerce for 合作伙伴
    • Salesforce B2C Commerce SEO URL
    • Salesforce B2C Commerce启动准备
    • Salesforce B2C Commerce客户分析
    • Salesforce B2C Commerce导入/导出
    • Salesforce B2C Commerce店面实施
    • Salesforce B2C Commerce按需沙盒
    • Salesforce B2C Commerce程序员
    • Salesforce B2C Commerce网站准备情况评估
    • Salesforce B2C Commerce项目管理
    • Salesforce B2C Commerce预定作业
    • Salesforce B2C商业信任网站
    • Salesforce B2C商业复制
    • Salesforce B2C商业活动和促销
    • Salesforce B2C商务
    • Salesforce B2C商务功能咨询策略
    • Salesforce B2C商务角色和权限
    • Salesforce B2C商家贸易
    • Salesforce订单管理
    • 使用Commerce Cloud Einstein进行更智能的搜索
    • 使用Salesforce B2C Commerce的假期准备
    • 爱因斯坦对Commerce Cloud的产品建议
  • Community社区云
    • Community-基础
    • Community-搜索
    • Community-知识库和聊天
    • Community-部署
    • Experience Cloud 开发人员指南
    • 分布式组织中的品牌定位
    • 合作伙伴关系管理
    • 合作伙伴渠道销售
    • 渠道管理和合作伙伴门户
  • Dreamforce
  • Field Service
    • Field Service基础
    • Field Service配置
    • FSL Managed Package
  • Financial Services
    • 智能推荐和金融服务云计分
    • 金融服务云中的行动计划
    • 金融服务云发布准备
    • 金融服务云基础
    • 金融服务云定制
    • 金融服务云数据建模
    • 金融服务云数据模型基础知识
    • 金融服务云的客户名单增长
    • 金融服务云的抵押掌握
    • 金融服务云社区
  • Integrate
    • Canvas
    • Heroku
    • REST API 开发人员指南
    • Salesforce Connect
    • Salesforce-API
    • 元数据 API 开发人员指南
  • Lightning Web Components
    • Lightning Web 组件开发人员指南
    • Salesforce DX 开发人员指南
    • 使用Lightning Web Components开放源代码访问Salesforce数据
    • 使用Lightning Web Components开源构建您的第一个应用程序
    • 使用Lightning Web组件构建Bear-tracking应用程序
    • 在闪电Web组件之间通信
    • 将Lightning Web Components开源转换为Salesforce
    • 快速入门:探索Lightning Web Components OSS食谱示例应用程序
    • 快速入门:探索Visualforce至LWC示例应用程序
    • 快速入门:闪电Web组件
    • 构建可重复使用的闪电组件
    • 设置您的Lightning Web Components开发人员工具
    • 适用于Aura开发人员的Lightning Web Components
    • 适用于Visualforce开发人员的Lightning Web组件
    • 闪电Web组件和Salesforce数据
    • 闪电Web组件基础
    • 闪电Web组件测试
  • Lightning-开发
    • Lightning-应用程序
    • Lightning-开发基础
    • Lightning-数据访问
    • Lightning-组件
    • Lightning-覆盖标准按钮
    • Lightning-设计
    • LWC中的Javascript
  • Lightning-配置
    • Lightning – Chatter
    • Lightning – 基础
    • Lightning – 实施上线
    • Lightning – 报表
    • Lightning – 特征
    • Lightning – 自定义设置
    • Lightning – 面向销售
    • Lightning-流
    • Linghting – AI
  • Marketing Cloud
    • Email Studio
  • Sales Cloud
    • Campaign基础
    • 销售区域计划
    • 销售区域预测
  • Salesforce CPQ
  • Salesforce-开发
    • Big Objects
    • GitHub
    • Platform Cache
    • Salesforce CLI 设置指南
  • Salesforce管理员
    • Outlook集成
    • 公式
    • 移动配置
    • 管理员-公司组织设置
    • 管理员-基础
    • 管理员-数据清理
    • 管理员-数据管理
    • 管理员-数据结构
    • 管理员-用户基础知识
    • 管理员-设置
  • Service Cloud
    • Omni-Channel
    • Service Cloud基础
    • 个案
    • 呼叫中心集成
    • 服务控制台
  • Visualforce
    • Visualforce 开发人员指南
    • Visualforce-基础
    • Visualforce-邮件模板
  • VSCode的Salesforce扩展
  • 开发方法论
    • Kanban
    • Salesforce 敏捷开发
    • Scrum
    • 应用程序生命周期和开发模型
    • 开发生命周期
    • 敏捷模型
  • 未分类
  • 第三方打通
    • 百度地图
  • 认证考试
    • 初级开发
  • 产品介绍
    • 服务云
    • 销售云
    • 营销云
    • 电商云
  • 公司介绍
  • 关于我们
  • 博客首页
  • 培训课程
    • DEX450
    • DEX502
    • ADX201
    • ADX211
    • DEX403
  • 学习目录
  • 学习视频
    • 系统管理员视频课
    • 高级系统管理员视频课
  • 示例页面
  • 隐私政策

Apex-Metadata API(3)

学习目标

完成本单元后,您将能够:

  • 描述Apex元数据API如何简化配置过程。
  • 使用Apex元数据API自动执行配置更改。

为管理员自动执行重复性任务

我们已经看到了如何使用Apex元数据API来使用后期安装脚本将自定义字段添加到我们所有组织中的页面布局。现在让我们考虑一下不同的情况。假设您已经创建了一个必须配置并部署到您的组织中的自定义元数据类型。 Apex Metadata API允许您使用Apex内的自定义元数据类型的记录。您可以轻松构建自定义设置UI,使管理员可以使用Apex配置和部署新的自定义元数据类型。

例如,假设您已经创建了代表增值税(VAT)税率的自定义元数据类型。您需要为您所支持的每个国家/地区配置不同的税率。借助Apex Metadata API,您可以创建自己的设置UI,以简化管理员的配置过程。一个可能的解决方案是创建一个Visualforce页面,让管理员在一个地方配置值。该页面使用Apex元数据API将您的自定义元数据类型记录部署到您的组织中。让我们深入细节。

注意

注意:这个例子是故意简单的,所以我们可以把重点放在流程的基础上。在更现实的例子中,我们创建的Visualforce页面可以成为设置向导的一部分。向导可以通过一系列页面引导管理员进行更复杂的配置。但通过了解更简单的情况,您已准备好处理更复杂的情况。

添加一个新的自定义元数据类型

第一步是创建我们的自定义元数据类型。我们在安装程序中创建类型,但正如您在上一个单元中所看到的那样,您也可以使用Apex元数据API以编程方式执行此操作。

  1. 从设置中,输入自定义元数据类型,然后单击 Custom Metadata Types.
  2. 点击新建自定义元数据类型。
  3. 输入标签的增值税税率,带有多个VAT税率标签,然后点击 Save.

保存之后,您将登录增值税详情页面,您可以在其中添加自定义字段。对于我们的自定义元数据类型,我们需要两个自定义字段:单击“新建”以创建类型为“百分比”和标签“速率”的字段,以及类型为“复选框”和标签为“默认”的字段。您可以保留其余的默认选项。

创建增值税率记录

现在让我们创建一些新的自定义元数据类型的记录。

  1. 在增值税详情页面中,点击 Manage VAT Rates,,然后点击New.
  2. 输入US作为标签,然后点击 Save & New 为以下国家/地区添加VAT税率:
    1. UK
    2. SE
    3. IT
    4. RO

这些记录的自定义字段的值在这一点上并不重要。管理员从Visualforce页面配置值,并通过Apex以编程方式更新记录。

构建一个Visualforce页面和控制器

接下来,创建一个使用Apex元数据API的Apex控制器类。该类的构造函数创建一个VAT Rate值列表,我们通过Visualforce页面收集这些值。 save方法为我们的记录检索相应的元数据,并用我们收集的值更新值。最后,新的元数据值被添加到我们的部署容器中,并排队等待部署到组织中。

  1. 在开发者控制台中,点击 File | New | Apex Class.
  2. 命名类VATController,然后单击 OK.
  3. 摆脱任何现有的代码,并复制并粘贴下面的示例代码。
public class VATController {
    
    public final List<VAT_Rate__mdt> VATs {get;set;}
    final Map<String, VAT_Rate__mdt> VATsByApiName {get; set;}
    
    public VATController() { 
        VATs = new List<VAT_Rate__mdt>();
        VATsByApiName = new Map<String, Vat_Rate__mdt>();
        for (VAT_Rate__mdt v : [SELECT QualifiedApiName, MasterLabel, Default__c, Rate__c
                                FROM VAT_Rate__mdt]) { 
                                    VATs.add(v);
                                    VATsByApiName.put(v.QualifiedApiName, v);
                                }
    }
    
    public PageReference save() {        
        
        // 创建一个元数据容器
        Metadata.DeployContainer container = new Metadata.DeployContainer();
        List<String> vatFullNames = new List<String>();
        for (String recordName : VATsByApiName.keySet()) {
            vatFullNames.add('VAT_Rate.' + recordName);
        }
        
        List<Metadata.Metadata> records = 
            Metadata.Operations.retrieve(Metadata.MetadataType.CustomMetadata, 
                                         vatFullNames);
        
        for (Metadata.Metadata record : records) {
            Metadata.CustomMetadata vatRecord = (Metadata.CustomMetadata) record;
            String vatRecordName = vatRecord.fullName.substringAfter('.');
            VAT_Rate__mdt vatToCopy = VATsByApiName.get(vatRecordName);
            
            for (Metadata.CustomMetadataValue vatRecValue : vatRecord.values) {
                vatRecValue.value = vatToCopy.get(vatRecValue.field);
            }
            
            // 将记录添加到容器。
            container.addMetadata(vatRecord);
        }   
        
        // 使用新组件部署容器。
        Id asyncResultId = Metadata.Operations.enqueueDeployment(container, null);
        
        return null;
    }
}
接下来,我们构建一个Visualforce页面,管理员可以为所有五个国家/地区配置增值税率。
  1. 点击设置装置,然后点击开发者控制台,打开 Developer Console.
  2. 在开发者控制台中,点击 File | New | Visualforce Page.
  3. 命名页面VATRateForm并单击 OK.
  4. 摆脱任何现有的代码,并复制并粘贴下面的示例代码。
<apex:page controller="VATController">
    <apex:form >
        <apex:pageBlock title="VAT Rates" mode="edit">
            <apex:pageMessages />
            
            <apex:pageBlockButtons >
                <apex:commandButton action="{!save}" value="Save"/>
            </apex:pageBlockButtons>
            
            <apex:pageBlockTable value="{!VATs}" var="v">
                <apex:column value="{!v.MasterLabel}"/>
                <apex:column headerValue="Rate">
                    <apex:inputText value="{!v.Rate__c}"/>
                </apex:column>
                <apex:column headerValue="Default">
                    <apex:inputCheckbox value="{!v.Default__c}"/>
                </apex:column>
            </apex:pageBlockTable>
        </apex:pageBlock>
    </apex:form>
</apex:page>
您已经创建了一个Apex控制器和一个Visualforce页面来收集和部署元数据值。下一步是测试你的部署。
发布于 2018年1月27日作者 ponybai分类 Apex-Metadata API

文章导航

上一篇 上篇文章: Apex-Metadata API(2)
下一篇 下篇文章: Apex-Metadata API(4)
自豪地采用WordPress