自定义元数据类型的优点
Salesforce中的设定都是以元数据(Metadata)存在的。在Salesforce中,用户可以新建自定义对象、自定义字段等,这些数据结构都以元数据的形式存储在系统中。当用户迁移Salesforce数据时,如果不使用数据迁移工具(比如Data Loader或者导入导出工具),那么Salesforce中只能迁移元数据,而其中的记录就无法被同时迁移。
自定义元数据类型的优势在于用户可以像新建自定义对象和字段一样新建自定义元数据类型,而且可以向其中添加记录,然后可以将数据结构和数据记录一起打包到软件包中,并直接导入到其他系统中。
示例:自定义元数据类型的创建和使用
在这里通过一个例子说明如何新建和使用自定义元数据类型。比如要建立一个实现欧冠联赛规则的自定义元数据类型。
新建自定义元数据类型
在设置界面中搜索“自定义元数据类型”,点击“自定义元数据类型”链接,即可进入“全部自定义元数据类型”的一览表界面。
点击新建按钮,即可像新建自定义对象一样新建一个自定义元数据类型。
注意在“可见性”的设置中,需要选择是否让所有Apex代码和API都可以使用此类型,并且在“设置”中可见。如果需要更高的安全性,可以选择“仅相同的受管软件包中的 Apex 代码可以看到此类型”一项。
点击保存之后,可以看到自定义元数据类型已经成功建立,在详细信息页面,可以看到“API名称”一项,是以“__mdt”结尾,这一点和自定义对象类似,不过自定义对象是以“__c”结尾。
在此界面中,可以新建“自定义字段”、“验证规则”、“页面布局”等,和自定义对象中的类似。“自定义字段”的“API名称”和自定义对象中的自定义字段一样,都以“__c”结尾。
注意自定义元数据类型的标准字段名字和自定义对象中的不完全一样。
在此建立一些自定义字段,结果如图:
添加数据记录
至此,只完成了自定义元数据类型的数据结构的建立,还没有数据记录。现在的“欧冠联赛规则”自定义元数据类型和自定义对象没有区别。
在详细信息页面中,点击“管理 欧冠联赛规则”按钮,即可添加数据记录。
建立数据记录的结果如图:
在Apex中使用自定义元数据类型
在Apex中,可以像使用自定义对象一样使用自定义元数据类型。比如使用刚才建立的“欧冠联赛规则”自定义元数据类型:
ListclRuleList = [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);}
在控制台中会输出相应的记录内容。
虽然自定义元数据类型和自定义对象在大多数方面类似,但是自定义元数据类型和其包含的记录在单元测试中都是可见的,所以在进行单元测试时,也可以直接调用自定义元数据类型及其记录。
将自定义元数据类型加入软件包
下一步就是将自定义元数据类型及其数据记录加入软件包。
在设置界面下搜索“软件包”,点击“软件包”链接,即可进入软件包的管理界面。
在“软件包”部分点击“新建”按钮,并输入数据即可新建一个软件包。在这里新建一个“欧冠联赛”软件包。
保存后,进入“欧冠联赛”软件包的详细信息页面。在“组件”标签下点击“添加”,即可进入添加组件的页面。
在“组件类型”下拉列表中,可以看到刚才建立的自定义元数据类型“欧冠联赛规则”,选中之后,页面中会自动出现所有记录。在这里可以选择若干或所有记录。点击“添加到软件包”按钮,即可将此自定义元数据类型和选中的记录加入到软件包中。
当成功保存后,回到软件包的详细信息页面,点击“上载”按钮,设定软件包的信息,即可上载软件包,供其他用户使用。
当其他用户安装了此软件包,“欧冠联赛规则”的记录就可以供其使用了。