Operator OUTPUT DATA służy do przekazania na zewnątrz wyniku przetwarzania projektu GRAVITY, w kontekście jego wywołania jako usługi Web Service.
W szczególności:
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 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.
<aside> <img src="/icons/info-alternate_green.svg" alt="/icons/info-alternate_green.svg" width="40px" />
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ń.
</aside>
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.
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:
output_data.data
(jeśli output_data
jest tablicą zostanie wzięty pod uwagę każdy element)output_data[0].data
output_data[*].data
output_data[1].data
['output_data'][*].*['data'][*].*['sub data'][0]
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"
}
]
<aside> <img src="/icons/info-alternate_red.svg" alt="/icons/info-alternate_red.svg" width="40px" />
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.
</aside>
Result node name → nazwa węzła pod który zostaną wstawione dane na wyjściu operatora
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"
}
]
}
]
}
<aside> <img src="/icons/info-alternate_green.svg" alt="/icons/info-alternate_green.svg" width="40px" /> Zapoznaj się z Edytor formatu JSON
</aside>
<aside> <img src="/icons/info-alternate_green.svg" alt="/icons/info-alternate_green.svg" width="40px" /> Zapoznaj się z sposobami wywołania projektu jako web service Tworzenie wyzwalacza typu Webservice, Wywołanie i odpowiedź REST API
</aside>