Przykład projektu GRAVITY z użyciem operatora OUTPUT DATA.
KONFIGURACJA OPERATORA
Pole Output Data Name wskazuje nazwę jaką będzie miał zbiór danych generowanych przez operator w sekcji “Output_data”
danych JSON zwracanych klientowi, który wywołał webService.
Operator udostępnia dwa sposoby przetwarzania danych wejściowych (pole Source type) w dane wyjściowe w formacie JSON
- Create json → Pozwala tworzyć szablon formatu JSON na podstawie bitów magistrali. Aby tego dokonać użyj opcji DEFINE JSON SCHEME, która uruchomi wygodny
Edytor formatu JSON. Za pomocą edytora zbudujesz downie 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 (od dowolnego węzła) na wyjście operatora.
- Source data bit → bit magistrali zawierający dane w formacie JSON
- Path to the node extract → wskazanie węzła, 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_data
jest 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
output_data[*].data
- [indeks] → oznacza konkretny element
output_data[1].data
- jeśli nazwa węzła lub właściwości jest zapisana ze spacjami nazwę należy traktować jako specjalną i zapisać w nawiasach ujętą w apostrofy
['output_data'][*].
['data'][*].
['sub data'][0]
- Result node name → nazwa węzła pod który 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 struktura zawiera poziomy. Dane wejściowe zostaną pogrupowane zgodnie z poziomami zagłębień.

Jeśli chcesz przesłać całą zawartość bitu na wyjście operatora pozostaw pole puste. Jeśli chcesz pobrać dane z 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
{
"process_id": 0,
"state": "Success",
"output_data": [
{
"output_description": "OutputData1",
"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"
}
]
}
]
}
]
}
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 na magistrali może być wiele rekordów z danymi, a każdy rekord zawiera bit z wartością przechowującą dane w formacie JSON wykorzystany jako Source data bit.
W takim wypadku wynikiem przetwarzania będzie JSON zawierający sumę danych wygenerowany na podstawie wszystkich rekordów.
przekł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 i finalnie do klienta zostanie wysłany rezultat:
{
"process_id": 0,
"state": "Success",
"output_data": [
{
"output_description": "OutputData1",
"data_out": [
{
"pos": 11,
"pos_name": "pos11"
},
{
"pos": 12,
"pos_name": "pos12"
},
{
"pos": 21,
"pos_name": "pos21"
}
]
}
]
}