Dateiinhalt

Auf dieser Seite wird der Inhalt der einzelnen Konfigurationspaketordner im Paket von Manufacturing Data Engine (MDE) beschrieben.

In jedem Konfigurationspaketordner erwartet MDE eine JSON-Datei pro Konfigurationsobjekt. Wenn Sie zwei Buckets erstellen möchten, benötigen Sie zwei separate Dateien. Die Namen der Dateien werden ignoriert. Es wird jedoch empfohlen, die Dateien nach dem Namen des Konfigurationsobjekts zu benennen, das Sie erstellen möchten. Das tatsächliche JSON-Schema für jedes Objekt hängt vom Typ der Konfigurationsentität ab, die Sie erstellen möchten. Es entspricht jedoch dem JSON-Schema der entsprechenden API-Antwort.

Um das Konfigurationspaket weiter zu organisieren, können Sie in einem bestimmten Feld auf andere JSON-Dateien verweisen, die in die Datei eingebettet werden sollen. Im folgenden JSON-Beispiel wird ein MDE-Bucket mit einem Schema angegeben, das in einer anderen JSON-Datei definiert ist. Das verbessert die allgemeine Lesbarkeit und Wartungsfreundlichkeit des Konfigurationspakets.


{
  "type": "TAG",
  "name": "second-tag-bucket",
  "attributes": {
    "instanceOverwriteMode": "true"
  },
  "versions": [
    {
      "version": 1,
      "schema": "'{{schemas/generic-schema.json}}'",
      "provider": "local",
    }
  ]
}

Wenn Sie auf eine andere Datei verweisen möchten, können Sie die Anweisung {{relative-path/file.json}} verwenden, die den relativen Pfad der Datei enthält, die in die vorhandene Datei eingefügt werden muss. MDE löst die Datei auf und fügt den JSON-Inhalt als Wert des Felds ein, das die Referenzanweisung enthält. Der Wert des Felds schema im vorherigen Beispiel enthält ein eingebettetes JSON-Unterobjekt, das dem Inhalt der Datei entspricht.

Bei bestimmten Objekten müssen Sie den JSON-Inhalt als String einbetten. Das Feld schema im Bucket-Objekt erfordert beispielsweise, dass das Bucket-Schema als String eingebettet wird. In diesem Fall sollte die Referenzanweisung in einfache Anführungszeichen ' eingeschlossen werden. Dadurch wird MDE angewiesen, den Inhalt unverarbeitet als String einzubetten. Die Referenzanweisung lautet dann: '{{relative-path/file.json}}'.

Die referenzierte Datei kann sich in einem beliebigen Verzeichnis befinden. Sie können verschiedene Verzeichnisse erstellen, um Ihre Dateien zu organisieren. Das Verzeichnis schemas im vorherigen Beispiel ist beispielsweise eine beliebige Ordnerstruktur, um gemeinsame Dateien zu gruppieren. Die Dateitypen, die eingebettet werden können, sind entweder JSON oder WSTL für Whistle-Skripts.

Im Folgenden finden Sie Beispielkonfigurationen für jede MDE-Entität.

Bucket

In diesem Abschnitt finden Sie eine Beispielkonfiguration für einen MDE-Bucket.


{
  "type": "TAG",
  "name": "second-tag-bucket",
  "attributes": {
    "instanceOverwriteMode": "true"
  },
  "versions": [
    {
      "version": 1,
      "schema": "'{{schemas/generic-schema.json}}'",
      "provider": "local"
    }
  ]
}


Aufnahmespezifikation

In diesem Abschnitt finden Sie eine Beispielkonfiguration für eine MDE-Aufnahmespezifikation.


{
    "name": "csv-full-ingestion-specification",
    "source": "CSV",
    "folderName": "test-csv-folder",
    "separator": ",",
    "skipRows": 10,
    "headers": {
        "headerNames": {
            "names": [
                "one",
                "two",
                "three"
            ]
        }
    },
    "insertMetadata": true,
    "disabled": false
}

Nachrichtenklassen

In diesem Abschnitt finden Sie eine Beispielkonfiguration für MDE-Nachrichtenklassen.


{
  "name": "default-numeric-message-class",
  "priority": 970,
  "expression": "#root.event['value'] instanceof T(Number) && #root.event['timestamp'] != null && #root.event['tagName'] != null && #root.event['cluster'] == null"
}

Metadateninstanzen

In diesem Abschnitt finden Sie eine Beispielkonfiguration für MDE-Metadateninstanzen.


{
    "bucketReference": {
        "bucketName": "default-tag-bucket",
        "bucketType": "TAG",
        "version": 1
    },
    "naturalKey": "cloud-natural-key",
    "instance": {
        "site": "simulated-site",
        "factory": "test-factory"
    }
}

Parser

In diesem Abschnitt finden Sie eine Beispielkonfiguration für MDE-Parser.


{
  "name": "default-numeric-parser",
  "messageClassName": "default-numeric-message-class",
  "typeReference": {
    "name": "default-numeric-type",
    "version": 1
  },
  "disabled": false,
  "script": "'{{scripts/parser-script.wstl}}'"
}

Typ

In diesem Abschnitt finden Sie eine Beispielkonfiguration für einen MDE-Typ.


{
  "archetype": "NUMERIC_DATA_SERIES",
  "name": "default-numeric-type",
  "disabled": false,
  "versions": [
    {
      "version": 1,
      "dataSchema": "",
      "storageSpecs": [
        {
          "sink": "PUBSUB_PROTO",
          "disabled": true,
          "materializeCloudMetadata": false
        },
        {
          "sink": "BIG_QUERY",
          "disabled": false,
          "materializeCloudMetadata": true
        },
        {
          "sink": "GCS",
          "disabled": false,
          "materializeCloudMetadata": false
        },
        {
          "sink": "PUBSUB_JSON",
          "disabled": true,
          "materializeCloudMetadata": false
        },
        {
          "sink": "BIG_TABLE",
          "disabled": false,
          "materializeCloudMetadata": false
        }
      ],
      "metadataBuckets": [
        {
          "bucketName": "default-record-bucket",
          "version": 1,
          "required": false
        },
        {
          "bucketName": "second-tag-bucket",
          "version": 1,
          "required": false
        },
        {
          "bucketName": "default-tag-bucket",
          "version": 1,
          "required": false
        }
      ],
      "transformations": [
        {
          "window": {
            "id": "10-minutes-window",
            "durationMinutes": 10,
            "valueExpression": "#message['data']['numeric'].toString()"
          }
        },
        {
          "eventChange": {
            "keyExpression": "#message['tagName']",
            "valueExpression": "#message['data']['numeric'].toString()"
          }
        }
      ]
    }
  ]
}