변수
객체 초기화 규칙을 작성할 때 변수를 사용할 수 있습니다. VarDef 태그를 사용하여 변수를 정의한 다음 VarRef 태그를 사용하여 참조합니다. 변수를 사용하는 주요 이유는 값을 한 번 생성한 다음 설정한 규칙 내에서 생성된 이 값을 여러 번 사용하거나 복잡한 규칙을 간소화할 수 있기 때문입니다.
VarRef 태그로 변수를 참조할 때 사용할 수 있는 변수 정의는 객체 유형 및 사용 중인 컨텍스트 계층에 따라 결정됩니다. 변수를 참조하는 규칙 요소의 처리가 완료되어야 변수 값을 계산할 수 있습니다. 또한 평가 중인 규칙 세트의 다른 값에 대한 계산에서 변수 정의의 값을 파생할 수 없습니다.
다음 XML 샘플에서는 VarDef 태그를 사용하여 번호를 생성한 다음 VarRef 태그를 사용하여 부품의 이름과 번호를 생성된 번호로 설정합니다.
<AttributeValues objType="wt.part.WTPart">
<VarDef id="GeneratedNumber" algorithm=
”com.ptc.windchill.enterprise.revisionControlled.server.impl.NumberGenerator”>
<Arg>{GEN:wt.enterprise.SequenceGenerator:WTPARTID_seq:10:0}</Arg>
</VarDef>
<AttrValue id="name" algorithm=”wt.rule.algorithm.StringConstant”>
<VarRef id="GeneratedNumber"/>
</AttrValue>
<AttrValue id="number" algorithm=”wt.rule.algorithm.StringConstant”>
<VarRef id="GeneratedNumber"/>
</AttrValue>
<AttrConstraint id="name"
algorithm="com.ptc.core.rule.server.impl.GatherAttributeConstraints">
<Value algorithm="com.ptc.core.rule.server.impl.GetServerAssignedConstraint"/>
</AttrConstraint>
<AttrConstraint id="number"
algorithm="com.ptc.core.rule.server.impl.GatherAttributeConstraints">
<Value algorithm="com.ptc.core.rule.server.impl.GetServerAssignedConstraint"/>
<Value algorithm="com.ptc.core.rule.server.impl.GetImmutableConstraint"/>
</AttrConstraint>
</AttributeValues>
이 샘플 XML에서 GeneratedNumber 변수는 번호 생성기 알고리즘을 사용하여 설정됩니다. 그러면 변수 값이 이름 및 번호 속성의 값을 설정하는 데 사용됩니다.
|
이 예에서는 예제에 나열된 제약 조건이 적용된다고 가정합니다. 이러한 제약 조건이 기본 제약 조건은 아닙니다. 기본 제약 조건의 경우에는 인터페이스에서 이름이 필요하며 생성되지 않습니다.
|
다음은 부품에 대한 번호를 생성한 다음 GeneratedNumber 변수를 정의하는 XML 샘플입니다. 여기서 이 변수의 값을 번호 속성의 값과 동일하게 설정합니다. 그러면 이름 속성이 GeneratedNumber 변수의 값으로 설정됩니다.
<AttributeValues objType="wt.part.WTPart">
<AttrValue id="number" algorithm=
"com.ptc.windchill.enterprise.revisionControlled.server.impl.NumberGenerator">
<Arg>{GEN:wt.enterprise.SequenceGenerator:WTPARTID_seq:10:0}</Arg>
</AttrValue>
<VarDef id="GeneratedNumber" algorithm="wt.rule.algorithm.StringConstant">
< Attr id="number">
</VarDef>
<AttrValue id="name" algorithm=”wt.rule.algorithm.StringConstant”>
<VarRef id="GeneratedNumber"/>
</AttrValue>
.
.
.
</AttributeValues>
정의할 변수 값을 평가 중인 규칙 세트의 다른 값 계산에서 파생할 수 없으므로 이 샘플에서는 이름 및 번호 속성이 동일한 값으로 설정되지 않습니다. 이 경우 VarDef 태그에 식별되는 번호 속성 값은 동일한 규칙의 번호 속성에 대해 지정된 AttrValue 태그에 의해 설정되는 값이 아니라 이전에 캐시된 번호 속성 값(있는 경우)에서 가져옵니다.