Metadaten

Der REST-Dienst ist weitgehend über Metadaten beschrieben. Diese geben Auskunft über die vorhandenen Entitäten, Methoden, Felder etc. Dies betrifft auch sämtliche kundenspezifische Anpassungen. 

Master-Katalog

Der Katalog der vorhandenen Objekte kann über folgenden Aufruf  gelesen werden:

In dieser Abfrage werden die Objekte der Geschäftslogik-Schicht (Businesslogic-Layer, BL) und diejenigen der View-Schicht (Presentation-Layer, PL) ausgegeben. Das Attribut objectType gibt dabei auskunft, um was für ein Objekt es sich handelt:

objectTypeSchichtBeschreibung
entityBLEntitäten (~Tabellen) mit deren Methoden
queryBLAbfrage, View
detailPLAufbau einer Detail-Ansicht eines Datensatzes
listPLAufbau einer Listenansicht von Objekten einer Entität
menuPLMenü-Struktur
searchPlAufbau einer Suchmaske zu einer Entität

Hinweis: Die Objekte der View-Schicht (PL) sind nur relevant, wenn UI-Elemente anhand der Modellinformationen aufgebaut werden sollen.


Besipiel: Master-Katalog
{
  "resource": [
    {
      "type": "object",
      "meta": {
        "name": "Root",
        "properties": [
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "description",
            "type": "string"
          },
          {
            "name": "modul",
            "type": "string"
          },
          {
            "name": "objectType",
            "type": "string"
          },
          {
            "name": "objectPath",
            "type": "string"
          }
        ]
      },
      "data": [
        [
          "Query",
          "Abfrage",
          "Reporting",
          "entity",
          "Module:Reporting>TAtObjClass:Query"
        ],
        [
          "SelectSubReport",
          "Auswertung",
          "Reporting",
          "detail",
          "Module:Reporting>Detail:SelectSubReport"
        ],
        [
          "SelectTopLevelReport",
          "Auswertung",
          "Reporting",
          "list",
          "Module:Reporting>Link:SelectTopLevelReport"
        ],
        .....
        .....

Businesslogik-Objekte, BL

Die Meta-Daten der Entitäten, also Feldnamen und Feldtypen, sowie die vorhandenen Methoden lassen sich über die folgende URI abfragen:


Dasselbe gilt für Views und Methoden, wobei hier Informationen über Aufrufparameter und Rückgabewerte zurückgegeben werden:


Das Format der Metadaten wird analog zu den Nutzdaten von Client angefordert. 

Besipiel: Tabelle Adresse: ../rest2/Adresse/model
{
    "resource": [{
        "meta": {
            "name": "Adresse",
            "description": "",
            "type": "object",
            "properties": [
            {
                "name": "ID",
                "description": "",
                "primary": true,
                "required": true,
                "type": "number"
            },{
                "name": "AbladevorschriftID",
                "description": "Abladevorschrift",
                "type": "number",
                "links": [
                {
                    "name": "Abladevorschrift",
                    "resource": "Abladevorschrift",
                    "cardinality": 1
                }]
            },{
                "name": "AdresseIDNachfolger",
                ...
                ...
           }],
           "methods": [
           {
               "name": "ExportToFile",
               "description": "Exportieren...",
               "http-verb": "PUT,POST",
               "has-object-signature": false,
               "parameters": [
               {
                   "name": "FileName",
                   "desciption": "Dateiname",
                      ...


Die Metadaten werden so weit als möglich nach Draft 04 von json-schema.org aufgebaut, eine Norm existiert zurzeit noch nicht.

Navigation

Die Verknüpfung der Daten wird mit dem Schlüsselwort links angegeben. Im obigen Beispiel wird bei der AbladevorschriftID damit angezeigt, dass die Referenz aus der Entität Abladevorschrift stammt (Schlüsselwort resource), die normal über die CRUD-Operationen manipuliert werden kann. 

Die Kardinalität (Schlüsselwort cardinality) sagt aus, wer in der Beziehung Master und wer Fremdschlüssel ist: 1 = Fremdschlüssel, 2147483647 = Master, kommt in der Regel nur bei der ID vor.

Mit diesen Informationen ist es möglich durch das gesamte Datenmodell zu navigieren. Gute Startpunkte sind die Entitäten Adresse und Artikel.