上一主题: UUID

下一主题: Where 子句

列表

某些 Web 服务方法会返回由唯一整型句柄表示的列表。 列表只是一个由相同类型对象组成的集合。 列表在处理较大的对象集合(例如,系统中的所有联系人)时特别有用,因为您可以在列表范围内检索有关项目的信息。 缺点是,您必须进行更多的方法调用以获得列表句柄、检索信息,最后释放该列表句柄。 如果预期的列表行数少,则可以使用不包含列表句柄的方法,如 doSelect()。

以下内容描述了有关列表的详细信息:

列表是同质的

列表可能只包含单一类型的对象,例如,联系人列表、组织列表等等。

列表是静态的

例如,如果在获得所有联系人的列表对象后,又将另一个联系人添加至系统,则不会在列表中反映该更新。 必须获得另一个列表句柄才能获取最新数据。

列表句柄

列表请求会返回表示相同类型对象列表的整型句柄。 不向客户端发送其它信息。 客户端可以查询列表中有关列表行的特定信息。 客户端完成一个列表后,必须使用 freeListHandles() 释放句柄。 CA SDM 服务器负责维护列表,因此会占用系统资源。 因此,释放列表非常重要。 与对象句柄不同,列表句柄在各个会话间并不持续。

整型索引

一些方法要求列表中存在整型索引。 由于列表是零基的,因此第一个元素的索引等于 0。

如前所述,对于可能多次查询的大型数据集,使用列表句柄最有用。 但是对于某些操作,列表是多余的。 有多种方法可用,但是最值得注意的是 doSelect(),它可以返回所请求的有关数据集的信息,无需进行列表句柄。

决定使用列表句柄还是方法(如 doSelect())取决于能否提高性能以及是否方便。 例如,假设您的应用程序正在处理系统中全部 15,000 个联系人。 doSelect() 方法可以在一个调用中检索所有联系人数据,但是当它汇编和返回超大数据集时,应答将会延迟,并且对系统总性能产生负面影响。 在这种情况下,doQuery() 方法则可以非常迅速地返回一个列表引用。 可以从列表中查询数据的范围,以缩短服务器的响应时间。 如果数据集超过 250 项,则最好使用列表引用。

有时使用列表句柄毫无意义。 例如,某个投诉具有一个活动日志列表。 根据安装情况,可以有数个到数十个日志。 与请求列表引用、查询数据然后再释放列表相比,一次请求所有数据可能更快。

返回数据集(而不是返回列表引用)的方法示例包括:

如前所述,如果查询返回较多行数,可能会严重影响服务器的性能。 为避免此情况发生,CA SDM 将返回的行数限制为 250。 这会影响返回对象列表的所有 CA SDM Web 服务方法,包括:

即使您请求采用其中一种方法检索超过 250 行的内容,此限制也将适用。

要检索较多行数,您应该获得结果列表的句柄,然后使用 getListValues() 检索行块,每个块包含 250 行或更少行。 此策略有助于避免服务器在为大量数据提供服务时运行变慢。