Operator INPUT DATA służy do wprowadzenia danych z zewnętrznych systemów do projektu GRAVITY w momencie jego uruchomienia jako usługa Web Service, lub database notification.
Współpracuje on z triggerami wywołującymi aplikację, takimi jak:
- WebService (REST API) – gdy aplikacja GRAVITY jest wywoływana jako usługa HTTP,
- Database – gdy uruchomienie następuje z poziomu bazy danych PostgreSQL.
Gdy dane zostaną przesłane w formacie JSON, operator INPUT DATA:
- odbiera dane wejściowe,
- konwertuje je do postaci rekordów magistrali danych (w strukturze kolumnowo-wierszowej),
- przekazuje dane dalej do przetwarzania w projekcie GRAVITY.
Operator INPUT DATA stanowi zatem punkt wejściowy dla danych przychodzących z zewnątrz i odgrywa kluczową rolę w integracji aplikacji GRAVITY z innymi systemami. W parze z nim wykorzystywany jest zwykle operator OUTPUT DATA , który odpowiada za zwrócenie przetworzonych danych na zewnątrz.
Przykład projektu GRAVITY z użyciem operatora INPUT DATA.
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.
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)
- opcję Template source ustaw na Template file
- użyj przyciski Choose aby wskazać plik z przykładowym wzorem obiektu JSON
- jako wzór w formie templatu
- opcję Template source ustaw na Entered JSON
- Wprowadź wzór obiektu JSON w polu JSON Template
- 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.
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ś.