Skip to content
Snippets Groups Projects
Commit 2b092834 authored by Rolf Niepraschk's avatar Rolf Niepraschk
Browse files

Inhalt stark geändert

parent a848fad6
No related branches found
No related tags found
No related merge requests found
......@@ -4,56 +4,50 @@ Erzeugen und Ausliefern von JSON-SCHEMA-Objekten zur Verwendung mit
[JSON-EDITOR](https://github.com/jdorn/json-editor/) in der Web-Applikation
[Ottomane](/../../web-apps).
NOTIZEN:
* List schreiben, die parameter-gesteuert (»cob«, »cus«, »tdo«) eine
SCHEMA-Datenstruktur liefert (aus 000_SCHEMA* und ggf. kombiniert mit
000_SUBSCHEMA*)
Die SCHEMA-Definitionen (z.B. Dokument `000_SCHEMA-cus`) enthalten oftmals
Bestandteile in Form von Variablen, sind also unvollständig. Diese Variablen
müssen durch reale Daten ersetzt werden, die ebenfalls ihren Ursprung in
Datenbankdokumenten haben. Man erreicht so eine bessere Aktualität, wenn die
Ersetzung automatisch geschieht. Die List-View-Kombination in diesem
Repositorium dient diesem Zweck.
* Das Ausgangsdokument mit SCHEMA-Code (z.B. `000_SCHEMA-cob`) kann solche
Struktur haben:
### Die Variablen
Folgende Struktur wird verwendet: `{{XXX@YYY@ZZZ}}`. Bedeutung:
* `XXX`: Kennung der Variablen. Sie bestimmt, woher der konkrete Inhalt
zur Ersetzung beschafft wird. Welche Kennungen derzeit unterstützt werden,
findet man im Quelltext der [List](deploy/lists/getSchema.js).
* `YYY`: Typ der Variablen. Derzeit wird nur der Type `ENUM` (Array) unterstützt.
* `ZZZ`: Erweiterte Kennung.
Beispiel: `{{000_UNITS@ENUM@Pressure}}`. Es wird ein Array aus der
Unterstruktur `Pressure` in der Quelle `000_UNITS` adressiert, in diesem Fall
also alle üblichen Druck-Maßeinheiten.
### Die SCHEMA-Definitionen
Wird ein SCHEMA in Rohform beispielsweise per
http://localhost:5984/vl_db/000_SCHEMA-cob-srg beschafft, so ist darin
ausschnittsweise die folgende Struktur enthalten:
```
"Content": {
"CalibrationObject": {
"Owner": {
...
},
"{{Setup}}": {},
"Device": {
...
}
"properties": {
"Unit": {
"type": "string",
"enum": "{{000_UNITS@ENUM@Pressure}}"
}
}
```
"{{Setup}}" muss ersetzt werden durch einen der Einträge in
`000_SUBSCHEMA-cob` oder ggf. beseitigt werden.
Wenn ein schon bestehendes cob-Dokument als Template benutzt wird, muss für
das SCHEMA das _dazugehörige_ SUBSCHEMA ausgewählt werden.
Weitere Einträge in der zu liefernden SCHEMA-Struktur müssen vorher präpariert
werden (z.B. enum für Gasart u.a.)
### Hinweise zu den SCHEMA-Definitionen
Um einen Ausgangsstand zur späteren Vervollkommnung zu haben, sollte man eine
erste Version der SCHEMA-Definition auf Grundlage eines schon vorhandenen
Datenbankdokument (z.B. `cob-XXX.json') erzeugen. Das kann mit dem Programm
[»GenSON«](https://github.com/wolverdude/GenSON) geschehen:
```
git clone https://github.com/wolverdude/GenSON.git
cd GenSON
sudo python setup.py install
```
Beispiel zur Anwendung:
```
curl http://a73434.berlin.ptb.de:5984/vl_db/cob-tlv-adixen_10478 | \
genson -i2 > 000_SCHEMA-cob-tlv.json
```
Das Dokument »cob-tlv-adixen_10478« sollte möglichst korrekt sein und alle für
diese Dokumentenart wichtigen Einträge enthalten (hier also
»CalibrationObject«). Späteres Ziel in Zusammenhang mit dem Template-Editor
»Ottomane« muss es sein, ein gleichartiges Endprodukt erzeugen zu können.
Erfolgt dagegen der Zugriff über die List `editor-schema`, d.h. per
[http://localhost:5984/vl_db/_design/editor-schema/_list/getSchema/getData?schema=000_SCHEMA-cob-srg]
(http://localhost:5984/vl_db/_design/editor-schema/_list/getSchema/getData?schema=000_SCHEMA-cob-srg),
enthält man eine Struktur mit ersetzten Variblen:
```
"properties": {
"Unit": {
"type": "string",
"enum": ["mbar", "DCR", "Pa", "kPa", "Torr"]
}
}
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment