Search

Home

INPUT DATA

INPUT DATA

icon
W kontekście wywołania aplikacji GRAVITY jako funkcji WEB SERVICE przez zewnętrzne oprogramowanie masz do dyspozycji dwa operatory komunikujące się z wnętrzem projektu: INPUT DATA oraz OUTPUT DATAOUTPUT DATA.

Przykład projektu GRAVITY z użyciem operatora INPUT DATA.

image

INPUT DATA jest operatorem do którego mogą trafić dane odebrane przez triggera typu WebService (po wywołaniu go jako REST API) lub Database (wywołanego z bazy PostgreSQL).

Operator ma za zadanie przyjąć dane oraz przetworzyć je z formatu JSON do rekordów, a następnie przesłać je na magistralę danych.

Przetwarzanie dla triggera typu WebService

Trigger przyjmując dane (w formacie JSON) przetwarza je i jeśli w obiekcie parameters jest obiekt odpowiadający nazwie Parameters name na operatorze przekazuje dane tego obiektu do operatora.

Przykład

Załóżmy, że WebService został wywołany z body:

{
    "call_alias": "postArticle",
    "process_id": "-1",
    "get_data": [
        {
            "description": "OutputData1",
        }        
    ],
    "parameters": {
        "InputData1": 
        { 
            "index" : "FC985GFR55", 
            "index_name" : "Very important new article" , 
            "code" : "3434343434334343", 
            "unit" : "t"
        }
    }
}

Obiekt zawiera obiekt parameters. W wywołaniu REST API sekcja parameters służy do przekazania parametrów do uruchamianego projektu. Obiekt INPUT DATA jest traktowany jako specyficzny rodzaj parametru procesu, dostępny tylko dla triggera wywołującego projekt o nazwie nadanej w polu Parameter name na właściwościach operatora.

image

Trigger interpretując sekcję parameters w body wywołania REST API szuka parametru w systemie o nazwie odpowiadającej poszczególnym właściwościom obiektu parameters w body i jeśli znajdzie taki parametr przekazuje wartość właściwości do tego parametru. Dla INPUT DATA zwykle jest to obiekt, który operator konwertuje do bitów magistrali.

Przetwarzania dla triggera typu Database (PostgreSQL)

Przetwarzanie odbywa się w podobny sposób jak dla triggera typu WebService z tą różnicą, że funkcja pg_notify powinna jako wiadomość przesłać tylko wartość obiektu parameters.

{
    "InputData1": 
    { 
        "index" : "FC985GFR55", 
        "index_name" : "Very important new article" , 
        "code" : "3434343434334343", 
        "unit" : "t"
    }
}

Konwersja obiektu JSON do bitów magistrali

Aby operator mógł poprawnie dokonać konwersji obiektu JSON niezbędny jest wzór obiektu jaki otrzyma przy wywołaniu procesu. Jako wzór służy struktura danych obiektu JSON.

Wzór JSON możesz podać na dwa sposoby:

  • jako plik (metoda nie zalecana, gdyż wymagany jest fizyczny plik na dysku)
image
  1. opcję Template source ustaw na Template file
  2. użyj przyciski Choose aby wskazać plik z przykładowym wzorem obiektu JSON
icon
Możesz użyć przycisku Use file content as entered json, aby zamienić wzór z pliku na Entered JSON
  • jako wzór w formie templatu
image
  1. opcję Template source ustaw na Entered JSON
  2. Wprowadź wzór obiektu JSON w polu JSON Template
  3. wygeneruj drzewo obiektów JSON klikając przycisk Generate Tree

Na zakładce JSON - node selection zobaczysz drzewo obiektów JSON wygenerowane na podstawie wzoru.

image

Możesz zaznaczyć właściwości, których wartości chcesz mieć na magistrali danych.

Łącząc operator z kolejny magistralą danych będzie ona zbudowana z bitów odpowiadających właściwością jakie zaznaczyłeś.

icon
Jeśli obiekt JSON będzie posiadał obiekty podrzędne i wybierzesz zarówno właściwości obiektu głównego jak i obiektów podrzędnych, magistrala danych będzie posiadała tyle rekordów ile było w sumie obiektów podrzędnych, a wartości bitów odpowiadających obiektowi głównemu zostaną powielone wraz z wartością w ramach elementów podrzędnych.
icon
W systemie GRAVITY wiele operatorów potrafi grupować dane magistrali w trakcje przetwarzania np: OUTPUT DATAOUTPUT DATA, OUTPUT SQLOUTPUT SQL, OUTPUT FILEOUTPUT FILE, CONVERT BITS TO FORMATCONVERT BITS TO FORMAT, GROUPINGGROUPING itp.