课程章节介绍
好,我们来看这一页幻灯片,内容稍微有点技术,但我会把它拆得简单清楚,让你一听就明白。
首先,它说的是:当你在 Salesforce 里,用 API 版本 15.0 或者更高的版本来保存 Apex 代码的时候,Apex 能理解和处理 Web 服务描述语言(就是我们常说的 WSDL)里的某些结构模式。
这些结构模式的名字你可能看着眼熟,它们都是以 “xsd:” 开头的,比如 xsd:all、xsd:annotation、xsd:attribute、xsd:choice,还有加了特定限制的 xsd:element(特别是带有 ref 属性的那个),以及 xsd:order。简单理解,就是当外部系统通过 Web 服务跟你的 Apex 代码沟通时,如果它的定义文件里用了这些结构,Apex 是能认出来的,不会报错,能正常处理。
接下来,它特别提醒了几个关于 xsd:element 的 ref 属性的限制,这一点在日常工作中容易踩坑,得注意一下:
第一个限制:这个 ref 属性不能去引用不同命名空间里的元素。也就是说,你只能在同一个命名空间里用 ref 来指向另一个元素,不能跨空间指。
第二个限制:全局元素不能使用 ref 属性。什么叫全局元素?就是在 WSDL 里顶层直接定义的、没有父元素的那些元素,它们不能再去 ref 别的东西。
第三个限制:如果一个元素用了 ref 属性,那它就不能再同时带上 name 或者 type 属性了。因为 ref 本身就会把被引用的元素的名字和类型带过来,所以你不能再手动指定一遍。
最后一点,讲的是数据类型:blob、decimal 和 enum 这三种类型,在 Apex Web 服务里,它们只支持作为 “in” 参数,也就是只能被外部系统传进来给 Apex 方法用。当 Apex 方法内部要把这些类型的数据作为结果返回出去时——也就是作为 “out” 参数——是不支持的。换句话说,只能收,不能发。
你可以这样记:这三种类型在 Apex Web 服务里是“单向通行”的,只能进,不能出。
好,这一页的要点就这么多,你拿个小本记下关键限制,以后遇到 WSDL 解析报错,可以回头看看是不是犯了这些限制。
关键词
Apex
Salesforce
Developer Guide