どのシステムも、入力として受け取るデータ、そのデータの処理方法、生成する出力によって定義されます。Circuitの実行では、Circuitへの入力はJSONのキーと値のペアとして提供されます。このJSONは初期ステートへの入力として渡され、処理後の出力はCircuit内の次のステートへの入力として渡されます。各ステートはJSON入力を処理し、終了ステート、またはSuccessやFailureのような終端ステートに到達するまで、JSON形式で出力を生成します。
ここでは、Circuit内でJSONデータが1つのステートから別のステートへ渡される仕組みと、その過程でJSONデータがどのように変換されるかを説明します。これには、Circuitの入力と処理における項目構造と、データの選択やフィルター処理におけるその重要性を理解する必要があります。
Circuitの各ステート間でやり取りされるJSON入力データと出力データの流れは、以下で説明する各種項目を通じて制御、管理、操作できます。
-
InputPath:必要性や関連性に応じて、ステートに渡される入力を制限し、ステートのJSON入力をフィルター処理します。
-
Parameters:特定のステートに限定した新しい値を取り込むために、ステートの入力にキーと値のペアの集合を追加する際に使用します。
-
Result Selector:結果オブジェクト内の必要な要素を取得してキーと値のペアを構成することで、タスク出力(ステートの結果)を絞り込み、フィルター処理します。これにより、次の項目であるResultPathに渡す内容を選択できます。
-
ResultPath:ステートの入力と結果をマージして、ステートの出力をカスタマイズします(Result Selector経由)。これにより、変更したJSONを次のステートに送信して処理できます。タスクの結果を使用して、ステート入力を置換、拡張、調整できます。
-
OutputPath:ステートの最終結果を決定します。これは次のステートの入力となり、情報をさらに絞り込むことができます。定義されていない場合は、ResultPathが後続タスクのステート入力を制御します。
以下の図は、タスクステート内のJSONデータの流れを示しています。

さらに処理するには、入力、出力、結果の各データセット内で、データの場所またはパスを指定することが重要です。入力、出力、結果の各データセットから必要な特定のデータパスを定義する規則については、「JSON Path」の記事で説明しています。