自定义元数据类型的优点

Salesforce中的设定都是以元数据(Metadata)存在的。在Salesforce中,用户可以新建自定义对象、自定义字段等,这些数据结构都以元数据的形式存储在系统中。当用户迁移Salesforce数据时,如果不使用数据迁移工具(比如Data Loader或者导入导出工具),那么Salesforce中只能迁移元数据,而其中的记录就无法被同时迁移。

自定义元数据类型的优势在于用户可以像新建自定义对象和字段一样新建自定义元数据类型,而且可以向其中添加记录,然后可以将数据结构和数据记录一起打包到软件包中,并直接导入到其他系统中。

示例:自定义元数据类型的创建和使用

在这里通过一个例子说明如何新建和使用自定义元数据类型。比如要建立一个实现欧冠联赛规则的自定义元数据类型。

新建自定义元数据类型

在设置界面中搜索“自定义元数据类型”,点击“自定义元数据类型”链接,即可进入“全部自定义元数据类型”的一览表界面。

点击新建按钮,即可像新建自定义对象一样新建一个自定义元数据类型。

注意在“可见性”的设置中,需要选择是否让所有Apex代码和API都可以使用此类型,并且在“设置”中可见。如果需要更高的安全性,可以选择“仅相同的受管软件包中的 Apex 代码可以看到此类型”一项。

点击保存之后,可以看到自定义元数据类型已经成功建立,在详细信息页面,可以看到“API名称”一项,是以“__mdt”结尾,这一点和自定义对象类似,不过自定义对象是以“__c”结尾。

在此界面中,可以新建“自定义字段”、“验证规则”、“页面布局”等,和自定义对象中的类似。“自定义字段”的“API名称”和自定义对象中的自定义字段一样,都以“__c”结尾。

注意自定义元数据类型的标准字段名字和自定义对象中的不完全一样。

在此建立一些自定义字段,结果如图:

添加数据记录

至此,只完成了自定义元数据类型的数据结构的建立,还没有数据记录。现在的“欧冠联赛规则”自定义元数据类型和自定义对象没有区别。

在详细信息页面中,点击“管理 欧冠联赛规则”按钮,即可添加数据记录。

建立数据记录的结果如图:

在Apex中使用自定义元数据类型

在Apex中,可以像使用自定义对象一样使用自定义元数据类型。比如使用刚才建立的“欧冠联赛规则”自定义元数据类型:

List<Champions_League_Rule__mdt> clRuleList = [SELECT MasterLabel, Stage__c, Description__c, Count_Away_Goals__c FROM Champions_League_Rule__mdt];

for(Champions_League_Rule__mdt clRule : clRuleList) {
System.debug('名字:' + clRule.MasterLabel + '\n比赛阶段:' + clRule.Stage__c + '\n描述:' + clRule.Description__c);
}

在控制台中会输出相应的记录内容。

虽然自定义元数据类型和自定义对象在大多数方面类似,但是自定义元数据类型和其包含的记录在单元测试中都是可见的,所以在进行单元测试时,也可以直接调用自定义元数据类型及其记录。

将自定义元数据类型加入软件包

下一步就是将自定义元数据类型及其数据记录加入软件包。

在设置界面下搜索“软件包”,点击“软件包”链接,即可进入软件包的管理界面。

在“软件包”部分点击“新建”按钮,并输入数据即可新建一个软件包。在这里新建一个“欧冠联赛”软件包。

保存后,进入“欧冠联赛”软件包的详细信息页面。在“组件”标签下点击“添加”,即可进入添加组件的页面。

在“组件类型”下拉列表中,可以看到刚才建立的自定义元数据类型“欧冠联赛规则”,选中之后,页面中会自动出现所有记录。在这里可以选择若干或所有记录。点击“添加到软件包”按钮,即可将此自定义元数据类型和选中的记录加入到软件包中。

当成功保存后,回到软件包的详细信息页面,点击“上载”按钮,设定软件包的信息,即可上载软件包,供其他用户使用。

当其他用户安装了此软件包,“欧冠联赛规则”的记录就可以供其使用了。

Salesforce 自定义元数据类型的更多相关文章

  1. .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)

    阅读目录: 1.需求背景介绍(Model元数据设置项应该与View绑定而非ViewModel) 1.1.确定问题域范围(可以使用DSL管理问题域前提是锁定领域模型) 2.迁移ViewModel设置到外 ...

  2. Java和C#中的自定义元数据

    Java的annotation和C#的Attribute,可用来为语言增加语义,定义元数据. 转自:http://rednaxelafx.iteye.com/blog/464889 http://bl ...

  3. wordpress添加post_type自定义文章类型

    wordpress很强大,能当博客也能进行二次开发出很完善的内容管理系统满足企业运营需求,比如可以添加products产品模型.汽车模型等,如何实现呢?添加post_type自定义文章类型就可以了 p ...

  4. 自定义委托类型 - .Net自带委托类型

    委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递. 与其他的类不同,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用. 一.自定义委托类型 1.语法结构:访问修 ...

  5. C:Wordpress自定义文章类型(图视频)

    自定义文章类型,包括: 1:单独的"文章内容模板" 2:单独的"文章列表模板" 3:单独的"控制后台"(文章分类.添加文章) 创建自定义文章 ...

  6. sharepoint2010问卷调查(3)-实现问卷的开始和结束时间(采用自定义字段类型)

    接着上面的图片调查,sharepoint自带的问卷调查是没有开始和结束时间的.这个在项目过程不太实用.问卷一般有开始和结束时间的.因此需要自己 动手开发一个自定义字段类型字段.如下图: 开发添加栏目会 ...

  7. sharepoint2010问卷调查(2)-实现问卷的图片调查(采用自定义字段类型)

    1. 首先建立个图片库上传图片 并建立文件夹1和2,1下有1.1文件夹,2下2.1文件夹,2.1下有文件夹2.1.1. 在1文件夹下放如下图片: 2.建立自定义字段类型,如下图: 3.部署后建立栏目的 ...

  8. Gradle学习系列之九——自定义Task类型

    在本系列的上篇文章中,我们学习了多Project构建,在本篇文章中,我们将学到如何自定义Task类型. 请通过以下方式下载本系列文章的Github示例代码: git clone https://git ...

  9. Unity3D ShaderLab 创建自定义高光类型

    Unity3D ShaderLab 创建自定义高光类型 在上一篇,我们认识了Unity基础的高光实现,本次主要是研究如何对Phong高光类型进行顶点操作,以及在表面着色器中使用Input结构体的新参数 ...

随机推荐

  1. Python Dataframe 分组排序和 Modin

    Python Dataframe 分组排序和 Modin 1.按照其中一列进行排序 在dataframe中,按照其中的一列排序:比如q值倒排 (1)rank方法 data['new_rank'] = ...

  2. mysql-新增数据库

    一.新增数据库 1.检查mysql 新增数据库之前,先检查是否安装了数据库,本次我们使用的是mysql数据库,检查是否安装mysql直接使用 mysql --version即可: 显示了mysql的版 ...

  3. RStudio 不中断下载依赖包

    修改下载方式:

  4. 『CSP2019初赛后的总结』

    初赛已经过去了,分数大概也已经知道了,接下来的一个月停课应该就是全部准备复赛. 联赛前几次讲课的内容是组合计数,计数\(dp\),字符串,概率期望,数论,数据结构,多数知识点难度都是大于联赛难度的,不 ...

  5. Java Scanner 类——获取用户的输入

    创建Scanner对象语法 Scanner scan = new Scanner(System.in); 使用next()获取输入的字符串 import java.util.Scanner; publ ...

  6. 转 让FPGA替代GPU的6大顾虑,你确定不看看吗?

    最近FPGA又频频被各AI领域的巨头看好,比如微软.百度.科大讯飞都对FPGA应用前景有所期待.那么如果让你选择FPGA作为AI计算系统的主力军,你会有什么样的顾虑? 这几天,已经退役的AlphaGo ...

  7. php 5.5 编译安装

    链接:https://pan.baidu.com/s/1Iy5kdugWqmvtsrYG0WYAdA 提取码:knk9 上面的链接 php5.5.8 编译安装的包 ./configure  --pre ...

  8. winform子窗口调用父窗口的控件及方法-一般调用

    首先新建一个窗体应用程序,在项目属性中点击右键->添加->添加新项,选择Windows窗体->添加. 在Form1和Form2窗口中各添加一个按钮,并双击添加事件处理函数:     ...

  9. The connection string name is missing for the MySqlSiteMapProvider

    在ASP.NET-WebForm程序中,添加SiteMapPath控件时出现问题,如下图所示: 解决办法:找到上图源文件指向的machine.config配置文件,将siteMap节点注释即可.

  10. C# 调用腾讯即时通信 IM

    IM SDK API 概述 https://cloud.tencent.com/document/product/269/33543 /// <summary> /// IM SDK 初始 ...