Set Targeted JSON Pointer
using JSON Pointer..
ASTER::ACTION::JSON::Set the Targeted JSON Pointer
JSON Pointer をターゲット・パスとして ASTER へ保存します。保存されたターゲットはターゲット・パスに対応した専用の JSON 命令で利用されます。
JSON Pointer は基本的にパスを毎回指定する必要があり、しかしループ処理など同じパスを繰り返し利用する場合には、ターゲット・パスを利用すれば URI の入力を省略できるため処理効率化に貢献します。Targeted JSON Pointer は「ターゲット対応命令」で利用できます。
ターゲット・JSON Pointer 対応命令一覧
- JSON :: ACTION :: Batch Assignment for Oi Alt String[n]
- JSON :: ACTION :: Batch Assignment for Oi Alt Val[n]
- JSON :: ACTION :: Batch Assignment for Oi Flag[n]
- JSON :: ACTION :: Targeted Array :: Set the Val As Bool
- JSON :: ACTION :: Targeted Array :: push_back String
- JSON :: CONDITION :: EvD :: if targeted is Array
- JSON :: CONDITION :: EvD :: if targeted is Type of Bool & Val True
- JSON :: CONDITION :: EvD :: if targeted is type of Bool & Val False
- JSON :: EXPRESSION :: Targeted JSON Pointer :: Get As Number Type
- JSON :: EXPRESSION :: Targeted JSON Pointer :: Get Num of Total Array Elements
Parameter.1
JSON Pointer
の入力
実際の JSON Object の例として
{
"test":[1,2,3,4,5]
}
ルート直下にある「test」というキー名の配列をターゲットに指定
"/test"
Parameter.2
ターゲット設定時にターゲット専用コンディションで利用可能な「固有 ID
」を発行します。固有 ID
毎に違う処理をさせたい場合に便利なパラメータです。
ターゲット登録時に JSON Pointer の有効性確認とデータ型判定が実行されます。データ型判定でデータ構造型が true
だった場合、JSON 配列と JSON Object の二種類どちらかということになります。即時実行条件コンディションが実行され、配列型とオブジェクト型でそれぞれ別のコンディションが有効化されます。
ターゲットの型判定の結果、即時実行条件が利用できる場合、この専用コンディションでイベントを識別する用途で「固有 ID
」が利用されます。
1
例えばパス指定先のデータ型判定が「配列」だった場合、即時実行条件の「 is Array 」が利用できます。固有 ID を利用することで別のタイミングで発行された別のターゲット登録イベント ( 固有 ID == 2
) と直近のイベント ( 固有 ID == 1
) を識別できます。
注意点.1
固有 ID を使ったアクション ( 即時実行条件 ) は独立したイベント行で利用してください。
他アクション実行と行を同じくすると競合する場合があります。
path="/cf2.5/aster/images/8000/8300_aster_action_json_event_set_target_json_pointer.gif"
サンプル画像では行 3
のアクションを行 2
へまとめることはできません。
Targeted JSON Pointer をセットすると ASTER
内部で JSON ポインターアドレスが示す先にある変数の型チェックが実行されます。
変数型が配列だった場合、即時実行条件が実行され行 4
へ行遷移します。
行遷移中はまだ行 3
のイベントが完全に終了していない状態です。
行 4
のアクションが先に実行され実行完了後、行遷移は終了して行 3
へ戻り行 3
のアクションが終了します。
このような即時実行条件を含む処理について CF25 のイベント作成では基本的に独立させた行で利用した方が安全。CF25 の標準機能である高速ループとほぼ同じ仕様であり、仕組み的にも同等です。