是否有办法在Guidewire中执行make表查询?



我想知道是否有一种方法可以在Guidewire中执行make table查询,以便我们可以在其上执行更快的后续查询。

我们的主要目标是提高记录检索的性能,在目前的状态下,我们做的(有点)如下:

SELECT * WHERE x ='y'AND a='b'记录类型1

SELECT * WHERE x ='y'AND a='c'为2型记录

SELECT * WHERE x ='y'AND a='d'为3型记录

这些查询执行得相当频繁,这会导致浪费时间在整个表上查询SQLServer forSELECT * WHERE x ='y'。但是我还没有找到一种方法来执行表查询(或任何帮助我们)通过gw.api

Guidewire/Gosu有一个广泛的查询生成器库,查询生成器api提供了从InsuranceSuite应用程序数据库检索信息的支持。

你会寻找这样的东西

var query = Query.​make(entity-type)
.compare(Entity#x, Relop.Equals, "a")
.compare(Entity#y, Relop.Equals, "b")
query.​select()

Guidewire关于查询生成器的文档可以在这里为ClaimCenter提供。您可能需要凭据才能访问文档:https://docs.guidewire.com/cloud/cc/202302/integration/integration/topics/querybuilderapi/c_ba3266101.html

很抱歉,我有一段时间没有访问我的系统,所以我不能创建示例

您可以创建一个主查询(例如Contact查询),然后添加后续查询,以给您x=y后面跟着a=b。见下文

uses gw.api.database.Query
uses gw.api.database.Relop
var contact = Query.make(Contact) //x=y
var company_manning = contact.compare(Contact#Subtype, Relop.Equals, TC_COMPANY).startsWith(Contact#Name, "Man", false).select()
company_manning.each(elt -> print(elt))

需要注意的一点是,每次使用主查询时,都需要重新构造它,因为select()使用该查询。

contact = Query.make(Contact) //x=y
var person_startswithC = contact.compare(Contact#Subtype, Relop.Equals, TC_USERCONTACT).select()
person_startswithC.where(t -> t typeis Person && t.FirstName.startsWith("C")).each(elt -> print(elt))

用于进一步阅读性能等我写了两篇关于查询命令的文章,如果你没有访问guidewire文档。这也涉及到sql.

的性能方面。高性能查询

深度性能查询

最新更新