式で NOT_SET を使う

NOT_SET とは何か?

NOT_SET は、式内でスカラー値に適用される値です。 値が定義されていないことを示すために使用します。    Architect では、スカラー値は非コレクション値です。    例:   次の文字列では、戻り値は 文字列:

ToString(NOT_SET)

未定義の文字列値は空白文字列と同じではありません。 以下の式をランタイムに評価すると、式は false を返します。

ToString(NOT_SET) == ""

NOT_SET 値は多くのオーバーロードおよび関数のパラメーター値としては使用できません。    [式のヘルプ] ダイアログ ボックスで、関数オーバーロード パラメーターは NOT_SET 値を使用できるかどうかを示します。   各パラメータには「NOT_SETAllowed:」が含まれています 指定されたタイプのNOT_SETパラメーターを受け入れるかどうかを示すエントリー。  Architect は、ランタイムに無効な NOT_SET 値を持つパラメーターを評価するとエラー ハンドラーを呼び出します。

渡された値が NOT_SET かどうかわからない場合

ランタイム エラーを避けるために、式内に NOT_SET があるかチェックします。 次の例は、ランタイムに失敗する式のシナリオを示します。

Flow.MyInteger は、NOT_SET の値を持つ整数変数です。    この場合、フロー作成者には、この式を別の整数変数に割り当てるデータ更新アクションがあります。

5+Flow.MyInteger

Flow.MyIntegerには、入力時に値が割り当てられていないため、コールフローランタイムにundefined 5を追加するように要求します。 この式には答えがないため、エラーとなります。 フロー作成者が Flow.MyInteger に値(NOT_SET 以外の値)を持たせると、5+Flow.MyInteger は正常に実行されます。 ただし、Flow.MyIntegerに valueの場合、フロー作成者はこれを式で明示的にチェックして適切に処理する必要があります。

次の例では、式内での NOT_SET の使い方を示します。

この例では、加算の論理は NOT_SET 条件下での Flow.MyInteger のインスタンスをあたかもそれが 0 かのように取り扱います。

5+If(IsSet(Flow.MyInteger),Flow.MyInteger,0)

式は基本的に「Flow.MyIntegerには値が存在しますか? 存在すれば、それを使用して、 そうではなく、Flow.MyInteger に値が存在しなければ、値として 0 を使用する」というものです。 この例では、フロー作成者は値が NOT_SET の場合の Architect の動作について意識的な決定を行い、実行を継続します。

IsNotSetOrEmpty

IsNotSetOrEmptyも役に立ちます ランタイム関数で、IsSetに似ています。 この関数は コレクションなど、NOT_SET または空白値を使用する場合に便利です。 この機能の詳細については、 式のヘルプ

NOT_SET とコレクション

コレクション全体は NOT_SET にできません。 ただし、コレクションに NOT_SET アイテムを含めることはできます。