Search

Home

OUTPUT DATA

OUTPUT 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 DATAINPUT DATA oraz OUTPUT DATA. OUTPUT DATA to operator przekazujący strumień danych w formacie JSON, jako rezultat przetwarzania aplikacji GRAVITY do klienta wywołującego projekt, jako funkcję WEB SERVICE.

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

image

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 JSONEdytor formatu JSON. Za pomocą edytora zbudujesz downie skomplikowaną strukturę danych w sposób prosty i intuicyjny.
  • image
    icon

    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ń.

  • 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.
    1. image
    2. Source data bit → bit magistrali zawierający dane w formacie JSON
    3. Path to the node extract → wskazanie węzła, od którego dane mają zostać przekazane do wyjścia operatora.
      1. 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:

      2. (.) → dostęp do właściwości obiektu np: output_data.data (jeśli output_data jest tablicą zostanie wzięty pod uwagę każdy element)
      3. [] → indeksowanie tablic dostęp po nazwie lub indeksie np: output_data[0].data
      4. * → oznacza wszystkie elementy tablicy output_data[*].data
      5. [indeks] → oznacza konkretny element output_data[1].data
      6. 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]
      7. 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"
        	}
        ]
        icon

        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.

    4. Result node name → nazwa węzła pod który zostaną wstawione dane na wyjściu operatora
    5. 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"
      				}
      			]
      		}
      	]
      }
icon
Zapoznaj się z Edytor formatu JSONEdytor formatu JSON
icon
Zapoznaj się z sposobami wywołania projektu jako web service Tworzenie wyzwalacza typu WebserviceTworzenie wyzwalacza typu Webservice, Wywołanie i odpowiedź REST APIWywołanie i odpowiedź REST API