Operator OUTPUT DATA służy do przekazania na zewnątrz wyniku przetwarzania projektu GRAVITY podczas jego wywołania jako usługi Web Service.
W szczególności:
- operator pobiera strumień danych z magistrali wejściowej (rekordy i kolumny),
- konwertuje go automatycznie do formatu JSON korzystając z
Edytor formatu JSON
- a następnie zwraca te dane do systemu zewnętrznego, który uruchomił aplikację GRAVITY jako Web Service.
Operator OUTPUT DATA działa w parze z operatorem INPUT DATA , który odbiera dane wejściowe od klienta. Razem tworzą pełny kanał komunikacyjny umożliwiający integrację projektów GRAVITY z zewnętrznymi systemami – zarówno po stronie odbioru danych, jak i ich zwrotu po zakończeniu przetwarzania.
Przykład projektu GRAVITY z użyciem operatora OUTPUT DATA.
KONFIGURACJA OPERATORA
Pole Output Data Name określa nazwę zbioru danych generowanego przez operator w sekcji “Output_data” struktury JSON, zwracanej do klienta, który wywołał usługę WebService.
Operator udostępnia dwa sposoby przetwarzania danych wejściowych (pole Source type) na dane wyjściowe w formacie JSON
- Create json → Pozwala tworzyć szablon formatu JSON na podstawie bitów magistrali. Aby to zrobić, użyj opcji DEFINE JSON SCHEME, która uruchomi
Edytor formatu JSON. Za pomocą edytora zbudujesz dowolnie skomplikowaną strukturę danych w sposób prosty i intuicyjny.
- Use direct json from bit → Użyj tej opcji, jeśli na magistrali wejściowej jest bit danych, który przechowuje dane w formacie JSON i chcesz przekazać te dane (z dowolnego węzła) na wyjście operatora.
- Source data bit → Bit magistrali zawierający dane w formacie JSON.
- Path to the node extract → Wskazuje węzeł, od którego dane mają zostać przekazane do wyjścia operatora.
- (.) → dostęp do właściwości obiektu np.
output_data.data(jeślioutput_datajest tablicą, zostanie wzięty pod uwagę każdy element), - [] → indeksowanie tablic, dostęp po nazwie lub indeksie np.
output_data[0].data - * → oznacza wszystkie elementy tablicy, np.
output_data[*].data, - [indeks] → oznacza konkretny element, np.
output_data[1].data, - jeśli nazwa węzła lub właściwości zawiera spacje, należy ją traktować jako specjalną, i zapisać w nawiasach ujętą w apostrofy, np.
['output_data'][*].['data'][*].['sub data'][0] - Result node name → Nazwa węzła, pod którym zostaną wstawione dane na wyjściu operatora.
W trakcie działania procesu, operator przetworzy dane z magistrali wejściowej zgodnie z definicją schematu JSON. Jeśli schemat zawiera poziomy zagnieżdżeń, dane wejściowe zostaną pogrupowane według tych poziomów.
Jeśli chcesz przesłać całą zawartość bitu na wyjście operatora, pozostaw pole puste. Jeśli chcesz pobrać dane ze wskazanego węzła, użyj zapisu opartego na notacji JSONPath.
Ogólne zasady tworzenia wyrażenia:
Przykład użycia:
Dane w formacie JSON
Przykłady:
output_data.data
[
{
"id": 1,
"name": "name1",
"sub data": [
{
"pos": 11,
"pos_name": "pos11"
},
{
"pos": 12,
"pos_name": "pos12"
}
]
},
{
"id": 2,
"name": "name2",
"sub data": [
{
"pos": 21,
"pos_name": "pos21"
}
]
}
]output_data.data[0]
{
"id": 1,
"name": "name1",
"sub data": [
{
"pos": 11,
"pos_name": "pos11"
},
{
"pos": 12,
"pos_name": "pos12"
}
]
}['output_data'][*].['data'][*].['sub data']
[
{
"pos": 11,
"pos_name": "pos11"
},
{
"pos": 12,
"pos_name": "pos12"
},
{
"pos": 21,
"pos_name": "pos21"
}
]Należy pamiętać, że magistrala może zawierać wiele rekordów danych, z których każdy zawiera bit w formacie JSON, wykorzystany jako Source data bit.
W takim wypadku wynikiem przetwarzania będzie obiekt JSON zawierający sumę danych wygenerowaną na podstawie wszystkich rekordów.
Przykład dla warunku: ['output_data'][*].['data'][*].['sub data'] i wartości ustawionej w polu data_out:
"data_out" : [
{
"pos": 11,
"pos_name": "pos11"
},
{
"pos": 12,
"pos_name": "pos12"
},
{
"pos": 21,
"pos_name": "pos21"
}
]Wynik ten zostanie uzupełniony o dane operatora oraz informacje o procesie, a następnie do klienta zostanie wysłany rezultat: