표현식에 NOT_SET 사용
NOT_SET이 무엇인가요?
NOT_SET은 표현식의 스칼라 값에 적용되는 값입니다. 값이 정의되지 않았음을 나타내기 위해 사용합니다. Architect에서 스칼라 값은 컬렉션이 아닌 값입니다. 예를 들어: 다음 문자열에서 반환된 값은 NOT_SET 문자열입니다.
ToString(NOT_SET)
정의되지 않은 문자열 값은 빈 문자열과 다릅니다. 다음 표현식이 런타임에 평가되면 표현식이 false로 반환됩니다.
ToString(NOT_SET) == ""
NOT_SET 값은 매개변수 값에 대한 많은 오버로드 및 함수에서 허용되지 않습니다. 에서 표현 도움말 대화 상자에서 함수 오버로드 매개변수는 NOT_SET 값이 허용되는지 여부를 나타냅니다. 각 매개변수에는 "NOT_SET Allowed:"가 포함됩니다. 지정된 유형의 NOT_SET 매개변수를 허용하는지 여부를 나타내는 항목입니다. 런타임 시 Architect가 잘못된 NOT_SET 값으로 매개변수를 평가하는 경우 오류 처리기를 호출합니다.
전달된 값이 NOT_SET인지 확실하지 않습니까?
런타임 시 오류를 방지하려면 표현식에서 NOT_SET을 확인하십시오. 다음 예는 런타임에 실패하는 표현식 시나리오를 보여줍니다.
Flow.MyInteger는 NOT_SET 값을 갖는 Integer 변수입니다. 이 경우 흐름 작성자는 이 표현식을 다른 정수 변수에 할당하는 데이터 업데이트 작업을 가지고 있습니다.
5+Flow.MyInteger
Flow.MyInteger에는 입력된 값이 할당되지 않았기 때문에 호출 흐름 런타임에 undefined를 5에 추가하도록 요청합니다. 이 표현식에는 답이 없기 때문에 오류가 발생합니다. 흐름 작성자가 Flow.MyInteger에 값(예: NOT_SET 이외의 값)이 있음을 확인한 경우 5+Flow.MyInteger가 제대로 실행됩니다. 그러나 Flow.MyInteger에 NOT_SET 값이 있는 경우 흐름 작성자는 표현식에서 이를 명시적으로 확인하고 적절하게 처리해야 합니다.
다음 예는 표현식에서 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 항목이 포함될 수 있습니다.