1

我想知道为什么我们在实体中使用 implementsInterface 元素。我知道一个例子,他们用它来使它成为可分配的实体。但我无法理解其他用途以及在实体中使用它的方式/原因。

示例:Injuryincident 实体具有claimantsupplier 和coveragesupplier 接口

4

1 回答 1

2

我喜欢从这个角度来看,简化并假设你有一些java背景:

正如您可能已经知道的那样,拥有一个实体最终意味着拥有一个 Java 类……嗯,通过在实体中使用 implementsInterface 元素,类似于在 Java 类中实现接口。

在这里你有一个简单的例子......

考虑以下:

我的实体

<?xml version="1.0"?>
<entity
  xmlns="http://guidewire.com/datamodel"
  entity="MyEntity"
  table="myentity"
  type="retireable"/>

接口.gs

package mypkg
interface AnInterface {
  function doSomething()
}

AnInterfaceImpl.gs

package mypkg

class AnInterfaceImpl implements AnInterface {
  override function doSomething() {
    print("Hello!")
  }
}

需要MyEntity具备“doSomething”能力的图片,只需添加implementsInterface:

<?xml version="1.0"?>
<entity
  xmlns="http://guidewire.com/datamodel"
  entity="MyEntity"
  table="myentity"
  type="retireable">
  <implementsInterface
    iface="mypkg.AnInterface"
    impl="mypkg.AnInterfaceImpl"/>
</entity>

通过这样做,以下代码必须工作:

var myEntity = new MyEntity()
myEntity.doSomething() //this will call the  method defined in the interface-implementation

更好的是,您可以让您实现识别 MyEntity 的相关对象并根据您的需要使用它:

package mypkg

class AnInterfaceImpl implements AnInterface {
  
  private final var  _relatedEntity : MyEntity

  construct(relatedTo : MyEntity) {
    _relatedEntity = relatedTo 
  }

  override function doSomething() {
    var createUser = _relatedEntity.CreateUser // you can accees to whatever you need
    print("Hello!, this is the related instace of MyEntity: ${_relatedEntity}")
  }
}

希望它有帮助,问候!

于 2021-08-10T22:44:56.710 回答