데이터 관리 기능 > 부품 구조 관리 > Windchill 옵션 및 파생 기능 > 구성 가능 모듈에 대한 고급 선택 로직 개발 > 고급 선택을 정의하는 기본 단계 > 고급 로직에서 숫자 연산자 및 함수 사용
  
고급 로직에서 숫자 연산자 및 함수 사용
여러 다른 유형의 매개 변수를 정의할 수 있습니다. 이 섹션에서는 고급 로직에서 숫자 매개 변수에 연산자 및 함수를 사용하는 예를 제공합니다.
숫자 매개 변수에 대한 연산자
정수 또는 실수 유형으로 매개 변수를 정의할 수 있습니다. 이러한 유형은 매개 변수를 매핑할 수 있는 Windchill 유형 정의에 해당하지만, 정수와 실수의 Java 원시 형상 유형에 각각 내부적으로 매핑되어 모든 유효한 Java 표현식에서 정수 및 실수 변수로 사용할 수 있습니다.
표현식은 다음 위치에서 정의할 수 있습니다.
매개 변수의 실제 값 또는 기본값을 정의하는 매개 변수의 표현식 필드입니다. 매개 변수의 표현식 사용에 대한 추가 정보는 매개변수 편집 창의 정보 탭을 참조하십시오.
표현식 유형의 제약 조건을 사용하려면 부울로 평가하는 표현식이 필요합니다. 표현식의 제약 조건 유형에 대한 추가 정보는 표현식 편집기를 참조하십시오.
표현식은 고급 케이스 테이블에서도 사용할 수 있습니다. 고급 케이스 테이블에 대한 추가 정보는 케이스 테이블 편집기를 참조하십시오.
산술 연산자
산술 연산자는 표현식에서 숫자 매개 변수와 함께 사용할 수 있습니다. 여기에는 이항 더하기(+), 빼기(-), 곱하기(*) 및 나누기(/) 연산자가 포함됩니다. 예를 들어, 다음은 표현식 제약 조건의 예입니다.
2 * a – 3 * b == c / d + e / 3
A == 2.5 * B / C – D / 7.5
단일 엔트리 또는 단항 연산자 - 및 +도 사용할 수 있습니다(+A는 A와 동일함).
A == -B + 2 * C
D = +A – (-C)
모듈로(%) 연산자를 사용하여 첫 번째 인수를 두 번째 인수로 나눈 나머지를 계산할 수 있습니다.
A == B % 7
관계 연산자
관계 연산자는 부울로 평가해야 하는 표현식 제약 조건의 숫자 하위 표현식을 비교하는 데 사용됩니다. 여기에는 다음 연산자가 포함됩니다.
같음(==)
보다 큼(>)
보다 작음(<)
크거나 같음(>=)
작거나 같음(<=)
같지 않음(!=)
* 
"같음" 연산자는 "="가 아니라 "=="로 작성되어야 합니다.
"==" 연산자와 함께 표현식의 왼쪽 또는 오른쪽에 단일 표현식이 포함된 경우 표현식은 지정(=)으로 처리됩니다. 예를 들어, 다음 표현식 제약 조건을 살펴보겠습니다.
A == 2 * B + 3 * C
B / 4 - C / 3 == A
매개 변수 B 및 C의 값을 알게 되면 매개 변수 A의 값이 수식에 따라 계산됩니다. 위 예에서는 매개 변수 A를 입력되지 않는 매개 변수로 정의하므로 해당 값은 사용자가 입력하고 수식으로 계산하는 것이 아니라 수식으로 계산합니다. 이는 또한 A가 나타나기 전에 B와 C가 정의된 경우 입력 순서가 중요하다는 것을 의미합니다. 매개 변수 A의 값이 매개 변수 B와 C보다 먼저 할당되는 다른 순서로 정의된 경우 표현식은 부울식으로 처리됩니다. 여기서 매개 변수 A의 값은 B와 C의 값을 기반으로 평가된 수식의 값과 비교됩니다.
* 
양쪽에 둘 이상 단일 매개 변수가 포함된 경우 표현식 제약 조건을 평가하기 전에 모든 매개 변수를 알고 있어야 합니다.
함수의 숫자 매개 변수에 대한 방법 또는 표현식 조각 참조
OOTB, 표준 Java 및 사용자 정의 함수에서 숫자 매개 변수를 인수로 사용할 수도 있습니다. 다음 섹션에서는 방법 또는 표현식 조각을 참조하는 방법을 제공합니다.
아래 예제에서는 D_1, D_2, D_3, D_4, D_5 및 D_6을 실수(Java double) 매개 변수로 P_1, P_2, P_3 및 P_4를 정수(Java long) 매개 변수로 고려합니다. 또한 GeomFunctions는 형상 함수를 포함하는 패키지 ext.geom의 사용자 정의 클래스 이름입니다.
메소드에 대한 전체 클래스 경로 사용
전체 이름(<package path>.<class name>.<method name>)을 사용하여 매개 변수를 인수로 전달하는 함수를 지정할 수 있습니다. 다음 예제에서는 이 접근 방법에 대해 설명합니다.
D_1 == java.lang.Math.cos(D_2) + java.lang.Math.sin(D_3)
P_1 == java.lang.StrictMath.addExact(P_2, P_3)
D_4 == ext.geom.GeomFunctions.area(D_5, D_6)
가져오기 선언 사용
다음과 같이 WT_HOME/codebase/com/ptc/wpcfg/exparser/LookUpService.properties 파일에 가져올 클래스를 지정할 수 있습니다.
exparser.import.1=java.lang.Math
exparser.import.2=java.lang.StrictMath
exparser.import.3=ext.geom.GeomFunctions
위의 가져오기 선언이 사용되는 경우 표현식에 함수를 지정할 때 패키지 경로를 생략할 수 있습니다.
D_1 == Math.exp(D_2)
P_1 == StrictMath.round(D_3)
D_3 == ext.geom.GeomFunctions.volume(D_4, D_5, D_6)
정적 가져오기 선언 사용
정적 가져오기 선언은 먼저 다음과 같이 WT_HOME/codebase/com/ptc/wpcfg/exparser/lookupservice.properties 파일에 지정할 수 있습니다.
exparser.static.import.1=java.lang.Math
exparser.static.import.2=ext.geom.GeomFunctions
정적 가져오기 선언을 사용할 때 표현식에 함수를 지정할 경우 패키지 경로와 클래스 이름을 모두 생략할 수 있으며 메소드 이름만 남깁니다.
D_1 == exp(D_2)
P_1 == round(D_3)
D_3 == ext.geom.GeomFunctions.volume(D_4, D_5, D_6)
정적 가져오기에 등록된 여러 클래스에 동일한 이름을 갖는 메소드가 있을 경우 예외 오류가 표시됩니다. 예를 들어, java.lang.Mathjava.lang.StrictMath에는 여러 메소드 이름이 공통적으로 포함되어 있습니다. 두 클래스를 모두 정적 가져오기로 등록하면 수식에서 이러한 공통 메소드를 사용할 때 오류 조건이 발생합니다.
메소드에 약어(별칭) 사용
메소드의 약어와 메소드에 대한 전체 경로 사이의 매핑은 다음과 같이 WT_HOME/codebase/com/ptc/wpcfg/exparser/lookupservice.properties 파일에서 정의할 수 있습니다.
exparser.abbreviation.1=SURFACE_AREA=ext.geom.GeomFunctions.area
exparser.abbreviation.2=ARC_TAN=java.lang.StrictMath.atan
메소드 약어와 전체 경로 사이의 매핑이 정의되면 다음 별칭을 사용하여 표현식에서 함수에 액세스할 수 있습니다.
D_1 == ARC_TAN(D_2)
D_3 == SURFACE_AREA(D_4, D_5)
이 기법은 Java 클래스에서 Microsoft Excel과 같은 다른 응용 프로그램의 함수 이름과 같도록 메소드를 재정의하려는 경우에 유용합니다. WT_HOME/wt.properties 파일에서 ato.expression.rendering.context=com.ptc.wpcfg.logic.XLSExpressionRenderingContext 등록 정보를 설정하면 시스템은 적절한 별칭을 추가하여 Microsoft Excel 응용 프로그램에서 사용되는 이름으로 대부분의 숫자, 텍스트 및 논리 함수에 대한 액세스를 제공합니다. 숫자 함수에는 ABS, ACOS, ASIN, ATAN, CEILING, COS, DEGREES, FLOOR, INT, LN, LOG, MAX, MIN, MOD, POWER, RADIANS, ROUND, ROUNDDOWN, ROUNDUP, SIN, SQRT, TAN, ACOSH, ASINH, ATANH, COMBIN, COSH, EXP, FACT, LOG10, SIGN, SINH, TANH이 포함됩니다.
매크로 사용
단일 함수의 전체 함수 경로에 대한 별칭을 제공하는 약어와 달리 매크로는 표현식 조각의 별칭입니다. 이는 표현식 조각이 여러 표현식에서 반복적으로 사용되는 경우에 유용합니다. 가져오기, 정적 가져오기 및 약어 선언은 표현식을 구문 분석할 때 즉시 해결됩니다. 먼저 표현식의 매크로가 매크로 조각으로 대체된 다음 표현식이 분석됩니다. 다른 파서 등록 정보와 마찬가지로 매크로 매핑은 다음과 같이 WT_HOME/codebase/com/ptc/wpcfg/exparser/LookUpService.properties 파일에 정의됩니다.
exparser.macro.1=AREA=SURFACE_AREA(D_2, D_3)
exparser.macro.2=SUM=java.lang.StrictMath.addExact(P_2, P_3)
그런 다음, 다음 표현식에서 매크로를 사용할 수 있습니다.
D_1 == AREA + 10.2
P_1 == SUM + P_4