课程章节介绍
各位同学,大家好!今天我们来看Apex当中,两个非常实用的方法,它们能够动态地帮我们拿到Salesforce应用程序和对象的元数据信息。
先看第一个:Schema.describeTabs()。
通过这个方法,你可以获取到当前组织中所有应用程序的信息,以及这些应用里包含了哪些选项卡。
对于每一个应用,你都能拿到它的标签、Logo的URL,还有它包含的选项卡列表。
而每一个选项卡,又会告诉你它关联的是哪个sObject,图标的URL是什么,选项卡的颜色,以及它到底是一个标准选项卡,还是自定义的。
这个功能在做动态菜单、自定义导航的时候特别有用。
接下来看第二个方法:Schema.getGlobalDescribe()。
它返回的是一个映射结构,把所有sObject的名称映射到对应的sObject令牌上。
有了这个映射,你在代码里就可以很方便地根据对象名,动态去获取它的元数据描述了。
这个方法生成的映射,是基于当前运行用户的权限来决定的,所以不同用户调用,看到的对象集合可能不一样。
从API 28.0版本开始,映射的键,也就是对象的名字,总是会以命名空间开头,前提是这个对象有命名空间的话。
这里还有一个细节:如果你是从一个已安装的托管包里调用getGlobalDescribe,即使这个安装组织没有启用Chatter,方法返回的映射里,也依然会包含Chatter相关的sObject,比如协作组这些对象。
这样设计,是为了保证托管包里的代码,不管在什么样的组织里,都能可靠地引用到这些基础对象。
好了,今天这两个方法的讲解就到这里,大家可以打开开发者控制台,亲自动手试一试,感受一下它们返回的数据结构。我们下节课再见!
关键词
Apex
Salesforce
Developer Guide