我想知道为什么我们在实体中使用 implementsInterface 元素。我知道一个例子,他们用它来使它成为可分配的实体。但我无法理解其他用途以及在实体中使用它的方式/原因。
示例:Injuryincident 实体具有claimantsupplier 和coveragesupplier 接口
我喜欢从这个角度来看,简化并假设你有一些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}")
}
}
希望它有帮助,问候!