Zum Hauptinhalt springen

CK Language 2

Modelle mit ckLanguage: 2 ergänzen das Construction Kit um Interfaces, Methodendefinitionen und Zugriffsmodifikatoren. Die constructionKit-API stellt sie bereit. Die neuen aufzählungsartigen Werte sind Strings mit PascalCase-Namen (Public/Internal, Any/Model, ReadWrite/ReadOnly/MethodOnly/Hidden, Instance/Static); Werttypen (valueType, attributeValueType) verwenden das bestehende GraphQL-Enum (STRING, RECORD, ...). Elemente von Modellen in CK Language 1 liefern die v1-Standardwerte (Public, Any, ReadWrite, ckLanguage: 1).

Übersichtsabfrage​

Das Beispiel verwendet das Modell Acme.Assets aus der Übersicht zu CK Language 2. Die System-Modelle sind noch CK Language 1 und liefern daher noch keine Interfaces oder Methoden.

query {
constructionKit {
types(rtCkId: "Acme.Assets/Device") {
items {
visibility
derivable
interfaces { rtCkInterfaceId }
methods {
methodId
kind
parameters { name valueType isOptional sensitive }
authorization { roles allowSelf }
}
attributes(first: 50) { items { attributeName access } }
}
}
interfaces(ckModelIds: ["Acme.Assets"]) {
items {
rtCkInterfaceId
extends { semanticVersionedFullName }
attributes { attributeName isOptional }
implementingTypes { semanticVersionedFullName }
}
}
models(first: 50) {
items {
id { name }
ckLanguage
dependencyRanges { range floor }
}
}
}
}

Interfaces​

interfaces(ckModelIds, rtCkId, rtCkIds) liefert eine Connection von CkInterface:

FeldBeschreibung
ckInterfaceId, rtCkInterfaceIdVersionierte und versionslose Id (Acme.Assets/Named-1)
descriptionBeschreibung
visibilityPublic oder Internal
deprecatedtrue, wenn der Vertrag als veraltet markiert ist
extends, allExtendsDirekt erweiterte Interfaces / alle transitiv erweiterten Interfaces
attributesAttribut-Member inkl. der Member erweiterter Interfaces: ckAttributeId, attributeName, attributeValueType, isOptional
associationsAssoziations-Member: ckAssociationRoleId, targetCkTypeId, targetCkInterfaceId, multiplicity, isOptional, declaringCkInterfaceId
methodsMethodendefinitionen (siehe unten)
implementingTypesTypen, die das Interface implementieren (direkt oder geerbt)

Types, Records, Enums, Attributes, Association Roles​

TypFelder
CkTypevisibility, derivable, declaredInterfaces (in implements deklariert), interfaces (deklariert, geerbt und erweitert), methods (eigene und geerbte)
CkTypeAttributeaccess
CkRecordvisibility, derivable
CkEnum, CkAttribute, CkAssociationRolevisibility

Methoden​

CkMethod beschreibt eine Methoden-Definition (der Aufruf von Methoden ist noch nicht verfügbar):

FeldBeschreibung
methodIdz. B. ChangePassword-1
qualifiedMethodIdz. B. System.Identity/User.ChangePassword-1 (Methoden eines Typs)
declaringCkTypeId / declaringCkInterfaceIdWo die Methode deklariert ist
kindInstance oder Static
description, visibility
parametersname, valueType, valueCkRecordId, valueCkEnumId, isOptional, sensitive, description
resultvalueType, valueCkRecordId, valueCkEnumId; null, wenn die Methode kein Ergebnis hat
errorsDeklarierte Fehlercodes (CkMethodErrorDefinition: code, description)
authorizationroles, allowSelf, scopes
executiontimeoutSeconds (wirksamer Wert), idempotent

Modelle​

FeldBeschreibung
ckLanguage1 oder 2 (1, wenn nicht deklariert)
minEngineVersionMindestversion der Engine: gesetzt für Modelle in CK Language 2 und range-retaining Modelle und vererbt an jedes Modell, das gegen eine solche Abhängigkeit kompiliert wird
dependencyRangesrange und floor je deklarierter Abhängigkeit eines range-retaining Modells; null bei exakt gepinnten Modellen