====== Universelles Daten Objekt ====== ===== Head ===== ==== Selbstbeschreibung ==== === Identität und Klassifikation === ''elementKey : UUID'' - Objektidentität. Nicht null. ''elementType : "udo" (String)'' - Das universelle Datenobjekt wird mit dem String: //udo// gekennzeichnet. ''elementName : String'' - Menschenlesbarer Name / Mnemonik. Dieser Wert kann zur Darstellung des Objektes in einer Auswahl verwendet werden und sollte nicht null sein. === Motivation === ''elementIntent : String in '' Legt fest, welches Protokoll für dieses Element vorgesehen ist. Das Daten Modell erlaubt also eine unverzweigte Verkettung von Datenelementen. Die Kette kann nur Rückwärts interpretiert werden. == Werte für ''intentType'' == - ''"request"'' : Anfrage, die beantwortet werden kann/soll - ''"posting"'' : Datenobjekt, das als Inhalt alleine steht - ''"response"'' : Datenobjekt, das eine Antwort auf einen Request darstellt - ''"responserequest"'' : Datenobjekt, das eine Antwort auf einen Request darstellt, aber einen folgenden //request// begründet. === Assoziationsattribute, intern === ''elementParentKey : String'' - Schlüssel des //request// Elements, welches durch dieses Element beantwortet wird. Es wird voraus gesetzt, daß dieses Element vom Typ //response// oder //responserequest// ist. === Assoziationsattribute, extern === ''tagOrder : String'' - Schlüssel, zu der Zugehörigkeit zum Auftragsobjekt. Optional. ''tagCustomer : String'' - Schlüssel, zu der Zugehörigkeit zum Auftraggeber. Optional. ''tagWorker : String'' - Schlüssel, zu der Zugehörigkeit zum Ausführenden. Optional. ''tagTask : String'' - Schlüssel, zu der Zugehörigkeit zu einem Kontext. Optional ===== Body ===== ==== Contentattribute ==== ''dataDescription : String'' - Erläuterungstext zu dem erfassten Wert | null ''dataValue: Object'' - Wert | null ''dataLabel : String'' - Beizeichnung des Wertes (Label) ''dataType : String in '' - Typ des eingetragenen Wertes == Werte für ''dataType'' == Basistypen: "text" | null : String - eine Zeichenkette, zu der keine spezielle Verwendungsfähigkeit oder Herkunft bekannt ist. "number" : Long - großer ganzzahliger Wert "decimal" : Double - Fließkommazahl mit großer Genauigkeit "boolean" : Boolean - Wahrheitswert true|false Zweckgebundene Zieltypen (Darstellung): "cost" : Double - Geldmengenangaben. Betragsangabe, die auf 2 Stellen Genauigkeit angezeigt werden sollte. "percent" : Double - Angabe eines Anteils im Bereich von 0 bis 100. "graphicUrl" : String - Eine gültige URL zeigt auf eine Grafik, die dargestellt werden kann. "cypher" : String - Ein (ASCII-)Code, der nur von einer spezifischen Anwendung verstanden werden kann. "trafficLight" : ["red"|"yellow"|"green"] - Farbdarstellung eines Ampel-Schemas Zweckgebundene Quelltypen: "scan" : String - Eingescannte ASCII-Sequenz aus einem BarcodeScan "rfid" : String - Eingescannte ASCII-Sequenz aus einem RFID-Chip === 4D-Attribute === ''dataLongitude : Double'' - Längengrad, zum Zeitpunkt der Erfassung, falls vorhanden | null ''dataLatitude : Double'' - Breitengrad, zum Zeitpunkt der Erfassung, falls vorhanden | null ''dataCts : Long'' - UNIX_Timestamp der Erfassung, falls vorhanden , 0 sonst ==== Request Attribute ==== Requestattribute sind optional und werden nur beigefügt, falls ''elementIntent == "request"''. === Beschreibung === ''requestLabel : String'' - Titel (Label) des Requests ''requestDescription : String'' - Beschreibung des Requests ''requestCts : Long'' - UNIX_Timestamp: Zeitpunkt der Erstellung des Requests, falls vorhanden , 0 sonst ===Assoziationsattribute, intern === ''requestKey : UUID'' - Identität des Objektes auf den dieses Objekt antwortet, falls es eine Response auf eine Antwort darstellt. Optional. Nur sinnvoll, falls ''intentType == "response"'' === Lifetime === ''requestLifetime : Long'' - Permanenz der Anfrage. Mögliche Werte: - ''requestLifetime=0'' | ''null'' - Permanenter Request. Dh eine Erzeugung eines Response-Elementes soll durch einen Klon erzeugt werden. Das Request-Objekt existiert weiter. - ''requestLifetime=1'' - Einmaliger Request. Nach der Erstellung eines Resonse-Objektes ist der Request zu löschen. - ''requestLifetime>1'' - n-malige Verwendung dieses Response-Objektes. Die Anzahl der erzeugten Response-Objekte sollen gezählt und von n abgezogen werden. === Request Type === ''requestType : String in '' - Typ der Anfrage. ''requestSelectList : List'' - Liste der alternativen Auswahlmöglichkeiten. Der Typ von ''Object'' richtet sich nach dem ''dataType'' ''requestSelectMin : Object'' - Unterer Grenzwert für eine erlaubte Eingabe. Der Typ von ''Object'' richtet sich nach ''dataType'' ''requestSelectMax : Object'' - Oberer Grenzwert für eine erlaubte Eingabe. Der Typ von ''Object'' richtet sich nach ''dataType'' == Werte für ''requestType'' == "free" | null - Freie Eingabemöglichkeit "select" - Vorgegebene Liste an möglichen Auswahlelementen "range" - Vorgebenes Interval (nur bei ordinalen Typen Sinnvoll) === Request 4D Attribute=== ''requestLongitude : Double'' - Längengrad, als Zielvorgabe zur Erfassung, falls vorhanden | null ''requestLatitude : Double'' - Breitengrad, als Zeilvorgabe zur Erfassung, falls vorhanden | null ''requestDueTs : Long'' - UNIX_Timestamp: Fälligkeitstermin dieses Requests, falls vorhanden sonst 0|null ===== Beispiele ===== ==== Data-Posting ==== Ein einfaches Datenposting, zB gedacht um eine Publikation ins Publish-Plugin einzustellen. { "elementKey" : "1234hgf-56436-fdghfdhg-5743654", "elementType" : "udo", "elementName" : "Kontrolle G23 - 08.04.2015", "elementIntent" : "posting", "tagCustomer" : "Black & Schladerbampf", "tagTask" : "Beleuchtungskontrolle", "dataDescription" : "Kontrolle der Beleuchtungseinrichtung im Fluchwegebereich Stockwerk 3 / Flur 17 - Ostflügel", "dataValue" : "green", "dataLabel" : "Prüfergebnis", "dataType" : "trafficLight", "dataLongitude" : 10.14257488, "dataLatitude" : 47,956372, "dataCts" : 1428615970550 } ==== Data-Request ==== Dieser Datarequest soll eine Ampelabfrage anbieten. Wir gehen davon aus, daß die Ampelabfrage und Ihre Symbolik als produktweiter Typ bekannt sind. Deshalb ist der "requestType" als //free// klassifiziert und nicht wie es zB. zu erwarten wäre als //select// mit ''"requestSelectList" : ["red","yellow","green"]''. { "elementKey" : "1234-aaaa-567890", "elementType" : "udo", "elementName" : "Kontrolle G24 - 09.04.2015", "elementIntent" : "request", "tagCustomer" : "Black & Schladerbampf", "tagTask" : "Beleuchtungskontrolle", "requestLabel" : "Kontrolle Beleuchtung", "requestDescription" : "Kontrolle der Beleuchtungseinrichtung im Fluchwegebereich Stockwerk 3 / Flur 18 - Ostflügel", "requestLongitude" : 10.14257488, "requestLatitude" : 47,956372, "requestCts" : 1428615970550 "requestLifetime" : 1, "requestDueTs" : 1431574561000, "requestType" : "free", "dataType" : "trafficLight", "dataLabel" : "Prüfergebnis" }