Describing Tabs & Accessing All sObjects

DEX455 - Dynamic Apex 完全指南:Describe 信息、动态 SOQL/SOSL 与动态 DML

📄 第 206 页 🎬 视频课程

课程章节介绍

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

关键词

Apex Salesforce Developer Guide