将实体数组存储到 PolicyCenter 9 中的 Person.etx

0 gosu guidewire

我在 Guidewire PolicyCenter V9 中工作,我有一系列策略,我试图通过原始实体的扩展将它们存储在 Person 实体中。

我尝试在 Person.etx 上创建一个数组,但无法确定如何存储策略数组并将其链接到该实体。

小智 7

创建这样的数组很可能是不明智的,因为它会使已经存在的 Contact 和 PolicyPeriod 之间的关系非规范化。这不仅会代表数据库中的重复数据,还会存在需要维护的问题,并且可能与数据库中存在的现有关系不同步。

虚拟财产可能是这个问题的更好解决方案,因为它不可能引入数据库不一致,并且不会进一步使数据库非规范化。

我假设需要返回PolicyPeriods而不是策略,因为它们是策略交易的典型工作单元,以及包含策略编号的实体,但如果这不是您想要的,那么您只需将 elt.Branch 替换为 elt.Branch.Policy,并更改虚拟属性的返回类型和名称。

package com.acme.enhancements

uses gw.api.database.Query
uses gw.api.database.Relop

enhancement PersonEnhancement : entity.Person {
 
  property get PolicyPeriods() : Set<PolicyPeriod> {
    var policiesImPresentOn = Query.make(PolicyContactRole).compare(PolicyContactRole#ContactDenorm, Relop.Equals,this).select().toList()
    var setToReturn = new HashSet<PolicyPeriod>()
    policiesImPresentOn.each(\elt -> setToReturn.add(elt.Branch))
    return setToReturn
  }
}
Run Code Online (Sandbox Code Playgroud)