Erweiterungssyntax für Schemadefinitionen
Eine Schemadefinitionserweiterung entspricht den folgenden syntaktischen Konventionen:
- Die Erweiterung für die Zielressource wird durch ein JSON-Objekt definiert, das im Feld
definitionsder Schemaerweiterungsdatei enthalten ist - Der Name der Erweiterung muss mit dem der Schemadefinition für die Zielressource übereinstimmen
- Die Erweiterung muss über ein
properties-Attribut verfügen, in dem die erweiterten Eigenschaften gespeichert werden - Der Name jeder erweiterten Eigenschaft trägt das Suffix
_Ext - Jede erweiterte Eigenschaft enthält eine Wertetypdeklaration
Das folgende Beispiel ist für eine Schemadefinitionserweiterung für die Activity-Ressource in der Common API. Die Erweiterung fügt der Ressource die Eigenschaft shortSubject_Ext hinzu und definiert den Wertetyp der Eigenschaft als Zeichenfolge:
{
. . .
"definitions": {
"Activity": {
"properties": {
"shortSubject_Ext": {
"type": "string"
}
}
}
}
}
Activity: Der Name der Schemadefinition für die zu erweiternde RessourceshortSubject_Ext: Der Name der Eigenschaftserweiterungtype: Eine Deklaration des Wertetyps der Eigenschaft
Eigenschaftsnamen
Guidewire empfiehlt, für den Namen von Eigenschaften Groß- und Kleinschreibung zu verwenden und ihnen _Ext hinzuzufügen. Dieses System zur Namensgebung ist wichtig, um Aktualisierungskonflikte zu vermeiden, wenn dem Kernprodukt in der Zukunft eine Eigenschaft mit demselben Namen hinzugefügt wird. Das Suffix _Ext ist auch dann erforderlich, wenn Eigenschaften aus einer Basisentität hinzugefügt werden.
Wenn ein ClaimCenter-Entitätsfeldname beispielsweise ShortSubject lautet, lautet der Name der erweiterten Ressourceneigenschaft shortSubject_Ext.
Wertetyp der Eigenschaft
Jede durch die Schemadefinition erweiterte Eigenschaft muss eine Deklaration des Wertetyps der Eigenschaft enthalten und dieser Typ muss mit dem Feldtyp der zugehörigen ClaimCenter-Entität übereinstimmen. Diese Typen fallen in die folgenden allgemeinen Kategorien:
- Skalare
- Objekte
- Arrays
Darüber hinaus können Wertetypen von Eigenschaften mit einem der folgenden Attribute definiert werden:
type: Nutzt eine Zeichenfolge, die den Wertetyp der Eigenschaft angibt. Verwenden Sie dieses Attribut für Skalare und Array-Wertetypen.$ref: Nutzt einen URI-Verweis auf eine Definition an einer anderen Stelle im Schema. Verwenden Sie dieses Attribut für Wertetypen für Objekte.
Skalare
Sie können einen Eigenschaftswertetyp für einen Skalar deklarieren, indem Sie ein type-Attribut zur Ressourceneigenschaft hinzufügen und ihm einen primitiven JSON-Schema-Typ zuweisen, bei dem es sich entweder um boolean, integer, number oder string handelt. Wenn der Skalar ein Datums- oder Datums-/Uhrzeitfeld ist, sollten Sie ihm auch ein format-Attribut hinzufügen und ihm den Wert date bzw. date-time zuweisen.
| ClaimCenter-Skalar-Typ | Primitiver JSON-Typ |
|---|---|
bit |
boolean |
dateonly |
string im Format date |
datetime |
string im Format date-time |
decimal |
number |
integer |
integer |
longint |
integer |
longtext |
string |
mediumtext |
string |
money |
number |
percentage |
number |
shorttext |
string |
text |
string |
varchar |
string |
Das folgende Beispiel zeigt die Basisressourcen-Eigenschaften, die die ClaimCenter-Wertetypen datetime, bit und varchar unterstützen:
{
. . .
"definitions": {
"Activity": {
"properties": {
"closeDate": {
"type": "string",
"format": "date-time"
},
"mandatory": {
"type": "boolean"
},
"shortSubject": {
"type": "string"
}
}
}
}
}
Objekte
Sie können einen Eigenschaftswertetyp für ein Objekt deklarieren, indem Sie ihm einen URI-Verweis auf ein Inline-Ressourcenschema zuweisen. In der Regel werden Objekte über das SimpleReference-Schema formatiert. Weitere Details zu Inline-Ressourcen finden Sie im Cloud-API-Geschäftsabläufe- und Konfigurationshandbuch.
Im folgenden Beispiel ist assignedByUser_Ext eine Eigenschaftserweiterung mit dem Wertetyp „Objekt“. Dieser Wertetyp wird über eine URI-Referenz zum SimpleReference-Schema deklariert:
{
. . .
"definitions": {
"Activity": {
"properties": {
"assignedByUser_Ext": {
"$ref": "#/definitions/SimpleReference"
}
}
}
}
}
In den Schemas werden Eigenschaftswertetypen, die mit ClaimCenter-Typenschlüsseln übereinstimmen, im Allgemeinen als Objekte formatiert. Um einen Eigenschaftswertetyp für einen Typenschlüssel zu deklarieren, weisen Sie ihm einen URI-Verweis auf das TypeKeyReference-Schema zu. Es ist auch notwendig, den Typenschlüssel explizit über das x-gw-extensions.typelist-Attribut mit seiner ClaimCenter-Typenliste zu verknüpfen.
Das folgende Beispiel zeigt eine AssignmentStatus_Ext-Eigenschaftserweiterung. Der Wertetyp ist ein Typenschlüssel, der mit der Typenliste AssignmentStatus verknüpft ist:
{
. . .
"definitions": {
"Activity": {
"properties": {
"assignmentStatus_Ext": {
"$ref": "#/definitions/TypeKeyReference",
"x-gw-extensions": {
"typelist": "AssignmentStatus"
}
}
}
}
}
}
Arrays
Sie können einen Eigenschaftswertetyp für ein Array deklarieren, indem Sie ein type-Attribut zur Ressourceneigenschaft hinzufügen und ihr den Wert des array zuweisen. Außerdem muss der Wertetyp der Array-Mitglieder angegeben werden. Dies kann durch Hinzufügen eines items.type-Attributs für Skalare oder eines URI-Verweises für Objekte erfolgen.
Die folgende Eigenschaftsdeklaration gilt für ein Zeichenfolgenarray:
{
. . .
"definitions": {
"Activity": {
"properties": {
"exceptionSubtypes_Ext": {
"type": "array",
"items": {
"type": string"
}
}
}
}
}
}
Die folgende Eigenschaftsdeklaration für die data-Eigenschaft der RelatedCollections-Ressource verwendet einen URI-Verweis, um den Typ der Array-Mitglieder als Objekt festzulegen, das dem Schema SimpleReference entspricht:
{
. . .
"definitions": {
"RelatedCollection": {
"properties": {
. . .
"data": {
"type": "array",
"items": {
"$ref": "#/definitions/SimpleReference"
}
}
}
}
}
}
Virtuelle Eigenschaften
Viele ClaimCenter-Entitätsfelder sind virtuelle Eigenschaften, die ihren Wert über eine Gosu-Methode ableiten. Der von der Methode zurückgegebene Wert ist in der Regel dynamisch, z. B. eine Verkettung anderer Felder oder ein Zeiger auf ein bestimmtes Mitglied eines Arrays (z. B. das zuletzt hinzugefügte Mitglied). Im ClaimCenter-Datenwörterbuch listet der Feldeintrag für die virtuelle Eigenschaft den Rückgabetyp der Methode auf, die dem Feld zugrunde liegt. Dieser Typ ist entweder ein Skalar, ein Objekt, ein Typenschlüssel oder ein Array, wie oben beschrieben. Nachdem Sie den Rückgabetyp ermittelt haben, können Sie den oben beschriebenen Anweisungen zur spezifischen Formatierung folgen.
Fremdschlüssel
ClaimCenter-Entitätsfelder basieren häufig auf Fremdschlüsseln zu anderen Entitäten oder Typenlisten. Um einen Eigenschaftswertetyp für einen Fremdschlüssel zu deklarieren, müssen Sie zunächst den abschließenden Wertetyp der Fremdschlüsselreferenz in der ursprünglichen Quelle ermitteln. Dieser Typ ist entweder ein Skalar, ein Objekt, ein Typenschlüssel, ein Array oder eine virtuelle Eigenschaft, wie oben beschrieben. Anschließend können Sie den spezifischen Formatierungsanleitungen für den jeweiligen Typ folgen.
ClaimContact-Entität einen Fremdschlüssel zur Contact-Entität, die eine DisplayName Eigenschaft vom Zeichenfolgentyp ist. Der verkettete Name dieser Eigenschaft lautet ClaimContact.Contact.DisplayName. Die Schemadefinition für diese Eigenschaft lautet wie folgt:"ClaimContact": {
"type": "object",
"x-gw-extensions": {
"discriminatorProperty": "contactSubtype"
},
"properties": {
. . .
"displayName": {
"type": "string",
"readOnly": true
},
. . .
}
}