Salesforce 自定义元数据类型

自定义元数据类型的优点

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);
}

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

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

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

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

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

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

新建“欧冠联赛”软件包

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

软件包详细信息页面

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

加入到软件包页面

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

上载软件包

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,871评论 6 13
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,803评论 1 32
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 10,794评论 0 9
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 7,947评论 2 9
  • 一个刚会走路的孩子走了进来,旁边一位老人看护着,后面跟着一年轻男子。 这是谁啊?孩子她妈挑逗着孩子。 大概老人是孩...
    时空暗格阅读 1,306评论 0 0