Compiler-Meldungen der CK Language 2
Der Compiler und die Engine melden Probleme der CK Language 2 mit den unten aufgeführten Meldungsnummern (Error 112 types/types.yaml: ...). Dieselben Prüfungen laufen, wenn ein kompiliertes Modell aufgelöst wird – beim Veröffentlichen und beim Import in einen Tenant –, sodass auch ein Modell zurückgewiesen wird, das den Compiler umgangen hat. Alle Meldungen sind Fehler, sofern nicht als Warnung markiert.
Die Nummern 111 und 114–117 sind reserviert und nicht in Verwendung. Die Codes des Kompatibilitäts-Gates OCTO-CK200–OCTO-CK204 sind in den Versionierungsregeln beschrieben. Die Meldungen 70–77 gehören zu Secret-Attributen.
Sprachversion und Engine
| Code | Schlüssel | Bedeutung | Behebung |
|---|---|---|---|
| 90 | CkLanguageFeatureRequiresV2 | Ein Schlüssel der CK Language 2 (interfaces, implements, methods, access, visibility, derivable, targetCkInterfaceId) wird in einem Modell ohne ckLanguage: 2 verwendet. | ckLanguage: 2 zur ckModel.yaml hinzufügen (den derivable-Standard beachten) oder den Schlüssel entfernen. |
| 91 | CkLanguageNotSupported | Ein kompiliertes Modell – oder eine seiner Abhängigkeiten – deklariert eine ckLanguage, die diese Engine nicht unterstützt. Abhängige einer solchen Abhängigkeit werden übersprungen. Beim Import in einen Tenant wird die Ablehnung als Importfehler mit demselben Text gemeldet (nicht als nummerierte Meldung). | Eine Engine verwenden, die die CK-Language-Version des Modells unterstützt. |
| 126 | CkModelRequiresNewerEngine | Die minEngineVersion des kompilierten Modells (oder einer Abhängigkeit) liegt über der laufenden Engine-Version (Major.Minor.Patch; ckLanguage: 2-Modelle verlangen 3.5.1; Engines unter 1.0 überspringen die Prüfung). Siehe Engine-Versionsvertrag. | Den Dienst bzw. das Tool aktualisieren, bevor das Modell importiert oder dagegen kompiliert wird. |
Interfaces
| Code | Schlüssel | Bedeutung | Behebung |
|---|---|---|---|
| 92 | CkInterfaceIdNotUnique | Dieselbe Interface-Id wird zweimal deklariert. Named-1 und Named-2 sind verschiedene Ids. | Das Duplikat entfernen oder ihm eine neue Elementversion geben. |
| 93 | CkInterfaceNameCollidesWithType | Ein Interface hat den Namen eines Typs desselben Modells (sie teilen sich den GraphQL-Typ-Namensraum). | Das Interface oder den Typ umbenennen. |
| 94 | CkInterfaceAttributeUnknown | Ein Attribut-Member referenziert ein unbekanntes Attribut. | Die Id korrigieren oder die Abhängigkeit hinzufügen, die das Attribut definiert. |
| 95 | ImplementsUnknownCkInterface | Ein implements-Eintrag benennt ein unbekanntes Interface. | Die Id korrigieren oder die Abhängigkeit hinzufügen. |
| 96 | CkInterfaceMemberMissing | Ein Typ, der ein Interface implementiert, weist einen erforderlichen Attribut-Member (eigen oder geerbt) nicht zu. | Das Attribut mit der Id und dem Namen des Members zuweisen. |
| 97 | CkInterfaceMemberMultiplicityMismatch | Ein erforderlicher Member wird mit isOptional: true zugewiesen. | Die Zuweisung erforderlich machen. |
| 98 | CkInterfaceMemberNameMismatch | Das Attribut des Members wird unter einem anderen Namen zugewiesen. | Den Namen des Members verwenden. |
| 99 | CkInterfaceMemberHidden | Ein Member wird mit access: Hidden zugewiesen. | Interface-Member müssen sichtbar sein; einen anderen access-Wert verwenden. |
| 118 | CkInterfaceExtendsInvalid | Ein extends-Eintrag ist unbekannt, das Interface selbst oder Teil eines Zyklus. | Die Referenz korrigieren; den Zyklus entfernen. |
| 119 | CkInterfaceMemberConflict | Über ein Interface und seine Eltern hinweg steht ein Name für zwei Attribute, oder ein Attribut tritt unter zwei Namen auf. | Die Member an die Eltern-Interfaces angleichen. |
| 120 | CkInterfaceAssociationInvalid | Ein Assoziations-Member hat eine unbekannte Rolle oder ein unbekanntes Ziel oder nicht genau eines von targetCkTypeId / targetCkInterfaceId. | Genau ein bekanntes Ziel und eine bekannte Rolle setzen. |
| 121 | CkInterfaceAssociationMissing | Einem Typ, der das Interface implementiert, fehlt eine ausgehende Assoziation mit der Rolle des Members, einem kompatiblen Ziel und einer mindestens so strengen Multiplizität. | Die Assoziation am Typ (oder an einem Basistyp) hinzufügen oder einschränken. |
| 122 | CkInterfaceMethodConflict | Ein Typ deklariert eine Interface-Methode mit einem anderen Aufrufvertrag neu: kind, die Parameter (nach Name: Typ, Record/Enum, isOptional, sensitive), das Ergebnis oder die Menge der Fehlercodes. Beschreibungen, Autorisierung, Ausführung sowie die Reihenfolge der Parameter und Fehler dürfen abweichen – es gelten die Autorisierung und Ausführung des Typs. | Die Neudeklaration entfernen oder ihren Aufrufvertrag angleichen. |
| 123 | CkInterfaceHasNoMembers | Ein Interface hat keinen Attribut-, Assoziations- oder Methoden-Member und erweitert nichts. | Einen Member oder einen extends-Eintrag hinzufügen. |
| 124 | CkInterfaceDeprecated | Warnung. implements, extends, ein Interface-Assoziationsziel oder ein targetCkInterfaceId referenziert ein Interface mit deprecated: true. | Auf die Nachfolgeversion (Named-2) wechseln. |
| 110 | CkElementsInWrongFolder | Warnung. Eine Datei deklariert Elemente unter einem Wurzelschlüssel, der nur aus einem anderen Ordner gelesen wird (z. B. interfaces: in einer Datei unter types/). Die Elemente werden ignoriert. | Sie in den erwarteten Ordner verschieben (interfaces/, types/, attributes/, ...). |
| 127 | CkInterfaceMemberNotUnique | Ein Interface deklariert dasselbe Attribut zweimal oder zwei Member mit demselben Namen (Groß-/Kleinschreibung unbeachtet). | Das Duplikat entfernen. |
| 128 | UnknownTargetCkInterfaceOfAssociation | Das targetCkInterfaceId einer Typ-Assoziation benennt ein unbekanntes Interface. | Die Id korrigieren oder die Abhängigkeit hinzufügen. |
Methoden
| Code | Schlüssel | Bedeutung | Behebung |
|---|---|---|---|
| 100 | CkMethodIdNotUnique | Eine Methoden-Id tritt zweimal an einem Typ auf, oder ein Typ deklariert eine geerbte Methoden-Id neu (keine Overrides). | Die Methode umbenennen oder entfernen; eine geänderte Signatur als neue Version veröffentlichen. |
| 101 | CkMethodParameterInvalid | Unbekannte Record-/Enum-Referenz, doppelter Parametername, oder Record/Enum ohne (bzw. ein anderer Werttyp mit) valueCkRecordId/valueCkEnumId. | Die Parameter- oder Ergebnisdefinition korrigieren. |
| 102 | CkMethodNameReserved | Die Methode heißt Create, Update oder Delete (Groß-/Kleinschreibung unbeachtet). | Einen anderen Namen wählen. |
| 103 | CkMethodErrorCodeInvalid | Doppelter Fehlercode oder ein Code, der mit METHOD_ beginnt (für Plattformfehler reserviert). | Den Fehlercode umbenennen. |
| 104 | CkMethodAuthorizationInvalid | allowSelf: true an einer Static-Methode oder ein ungültiger Rollen- bzw. Scope-Name (erlaubt: Buchstaben, Ziffern und _ - . : /, beginnend mit einem Buchstaben oder einer Ziffer). | allowSelf entfernen oder die Methode Instance machen; die Rolle oder den Scope umbenennen. |
| 125 | CkMethodGeneratedNameCollision | Zwei Methoden des Modells erzeugen denselben generierten C#-Namen (User + ChangePassword vs. UserChange + Password). | Einen der Typen oder eine der Methoden umbenennen. |
Zugriff und Hidden-Attribute
| Code | Schlüssel | Bedeutung | Behebung |
|---|---|---|---|
| 105 | RestrictedAttributeInDerivedRule | Eine Anzeigeregel oder ein Text-Indexpfad erreicht ein Hidden-Attribut, oder ein ownerAttributePath erreicht ein Hidden- oder MethodOnly-Attribut – diese Werte sind über rtDisplayName, Filter oder Suche lesbar. | Das Attribut aus der Regel bzw. dem Index- oder Owner-Pfad entfernen. |
| 106 | HiddenAttributeIndexed | Ein Nicht-Text-Index (Unique, UniqueNotDeleted, Ascending, ...) erreicht ein Hidden-Attribut; ein Unique-Index offenbart Werte über Duplicate-Key-Fehler. | Den Index oder den Hidden-Zugriff entfernen. |
| 107 | HiddenAttributeAutoCompleteValues | Eine Hidden-Zuweisung deklariert autoCompleteValues (sie werden im Modell veröffentlicht). | Die Werte oder den Hidden-Zugriff entfernen. |
| 108 | HiddenAttributeOnAssociationRole | Ein Attribut einer Assoziationsrolle ist Hidden (Assoziationsattribute haben keinen Zugriffsschutz). | ReadOnly/MethodOnly verwenden oder das Attribut an einen Typ verschieben. |
| 109 | UnknownIndexAttributePath | In einem Modell mit ckLanguage: 2 benennt ein Indexpfad-Segment kein Attribut des Typs oder des durchlaufenen Records. Pfade werden ohne Beachtung der Groß-/Kleinschreibung abgeglichen; Pfade, die mit Rt/CkTypeId (Systemfelder) beginnen, sind ausgenommen. | Den Indexpfad korrigieren. |
Sichtbarkeit und Ableitbarkeit
| Code | Schlüssel | Bedeutung | Behebung |
|---|---|---|---|
| 112 | CkReferenceToInternalElement | Ein anderes Modell referenziert ein Element mit visibility: Internal (Basistyp/-Record, Attributzuweisung, Wert-Record/-Enum, implements, extends, Assoziationsrolle/-ziel, Methodenparameter/-ergebnis). | Das Element in seinem Modell Public machen oder die Referenz aufgeben. |
| 113 | CkElementNotDerivable | Ein Typ oder Record leitet von einem Typ/Record eines anderen Modells ab, dessen effektives derivable Model ist. | Das Basismodell deklariert derivable: Any an diesem Element, oder von einer anderen Basis ableiten. |
| 129 | CkInconsistentVisibility | Ein öffentliches Element referenziert ein internes Element seines eigenen Modells (Basistyp/-Record, implements, zugewiesenes Attribut, Assoziationsrolle/-ziel/-zielattribute, Wert-Record/-Enum, extends, Interface-Member, Methodenparameter/-ergebnis einer öffentlichen Methode); ein öffentliches Interface deklariert eine interne Methode; oder ein Typ deklariert die Methode eines öffentlichen Interfaces als intern neu. | Das referenzierte Element Public machen oder das referenzierende Element Internal machen. |
| 130 | InvalidCompatibilityAcknowledge | Ein Eintrag von compatibility.acknowledge in ckModel.yaml hat ein leeres change, einen Platzhalter, ein leeres reason oder wiederholt einen Schlüssel. In einem Modell mit ckLanguage 1 ist der Abschnitt Meldung 90. | Den exakten von OCTO-CK203 ausgegebenen Änderungsschlüssel verwenden, eine Begründung angeben, jede Änderung nur einmal auflisten. |
Verwandte Meldungen
| Code | Bedeutung |
|---|---|
| 27 | Schema-Validierungsfehler – z. B. ckLanguage: 3, kleingeschriebenes visibility: internal, eine interfaceId ohne Elementversion. |
| 66 | Mehrere Versionen eines Modells wurden in einem Compile aufgelöst – siehe Range Retention. |