2016-06-29 6 views
1

In dieser Frage habe ich ein Problem, dass die orion Bedingungen nicht erfüllt waren, aber es wurde durch Entfernen der Zitate auf dem besonderen Wert Why this orion subscription don't works as I want?Warum cepheus int nicht ohne Anführungszeichen an orion senden?

Das neue Problem gelöst ist, dass wenn ich ein Ereignis mit cep Prozess, der den MFLAG int berechnet attribute send es an orion, aber anscheinend wird es mit den quotes gesendet (das gleiche Problem wie in der verwandten Frage zuvor beschrieben), weil die Orion-Entity geändert wurde, aber die Benachrichtigung nicht ausgelöst wird.

Die cepheus cep Config out ist wie diese:

"out":[ 
    { 
     "id":"algo", 
     "type":"Event", 
     "brokers":[ 
     { 
      "url":"http://localhost:1026" //orion 
     } 
     ], 
     "attributes":[ 
     { "name":"IdEvent", "type":"int" }, 
     { "name":"mFlag", "type":"int" } 
     ] 
    } 
    ], 

Ist das Problem der cepheus cep oder es ist ein Fehler orion den Typ des Attributs in den Bedingungen nicht zu interpretieren?

Antwort

2

Sie scheinen eine Inkompatibilität in der NGSIv1-Protokollimplementierung zwischen Cepheus und Orion gefunden zu haben.

NGSIv1 wurde für sein XML-Format (als OMA-Standard) gut definiert, nicht jedoch für seine JSON-Version. Das Cepheus-Team hat die JSON-Implementierung als eines der einzigen vorhandenen Dokumente definiert, die das JSON-Format von NGSIv1 definieren: API Walkthough of the Orion documentation.

In diesem Dokument werden alle Werte (wie im XML-Format der stantard) als Strings ausgetauscht. Daher verwendet Cepheus Zeichenfolgen unabhängig vom Typ des Werts.

Wenn wir uns entscheiden würden, eine andere Repräsentation als JSON-Zeichenfolgen für Werte zu verwenden, würden wir ein Dokument (eine genaue Spezifikation für das NGSIv1 JSON!) Benötigen, das definiert, welche Typen als JSON-Nummer dargestellt werden können.

+0

Nun schauen wir uns an, ob @fgalan ein vollständiges ngsi v1-Dokument oder einen Kommentar bereitstellen kann, wenn orion das Typfeld in den Bedingungen nicht interpretiert. Danke für die Antwort –

+1

Soweit ich weiß, gibt es kein "formales" NGSIv1 JSON Dokument. Die Orion-API-Walkthrough (https://fiware-orion.readthedocs.io/en/develop/user/walkthrough_apiv1/index.html) und verwandte Dokumente im Orion-Benutzerhandbuch könnten jedoch als "inoffizielle" Anleitung verwendet werden. Beachten Sie jedoch, dass Zahlen durch Einschränkungen des von Orion verwendeten NGSIv1-Parsers als Zeichenfolgen interpretiert werden. Selbst wenn Cepheus "5" als Attributwert mit NGSIv1 sendet, interpretiert Orion es als "5" (siehe https://fiware-orion.readthedocs.io/en/develop/user/v1_v2_coexistence/index.html#native-json-types). – fgalan

+1

Fazit: Ich würde vorschlagen, das Problem im Rahmen von NGSIv2 zu lösen, d. H. NGSIv2 in Cepheus implementieren. Dies hätte zwei klare Vorteile: 1) der Orion-Parser für NGSIv2 hat keine solche Beschränkung, 2) es ist ein formales Dokument, das NGSIv2-JSON-Formate beschreibt (insbesondere dieses: http://fiware.github.io/specifications)/ngsiv2/stable /) – fgalan