게시 규칙 평가
다음 단원에서는 게시 규칙 평가와 관련된 이벤트 및 논리를 설명합니다.
게시 규칙 평가를 발생시키는 이벤트
게시 규칙 사용에 설명된 것처럼 게시 규칙 평가는 다음 이벤트에 의해 트리거됩니다.
EPMDocument의 체크 인
EPMDocument의 예약된 게시
EPMDocument의 표현 목록 또는 연관된 WTPart의 표현 목록에서 사용자가 새 표현 작업 선택
수동 다시 게시, 변경 시 다시 게시 또는 워크플로 시작됨과 같은 다른 모든 이벤트의 결과인 게시 작업
게시 규칙 로직 평가
이 섹션에서는 게시 규칙 평가 로직을 설명하고 게시 규칙 파일의 일부를 보여줍니다. 별도로 지정되지 않은 경우, 평가 프로세스에서는 대/소문자를 구분하는 문자열 비교를 사용합니다.
게시 규칙 파일은 정식 XML 문서이며 <rules>가 루트 요소입니다.
이 섹션에서는 평가 프로세스에 대한 높은 수준의 개요를 제공합니다. 다음 단원에서는 고유의 게시 규칙 파일을 성공적으로 작성하는 데 필요한 여러 가지 부분을 자세히 설명합니다. 게시 규칙 XML 파일 예도 참조하십시오.
* 
게시 규칙 파일의 매개변수 및 값은 대/소문자를 구분합니다.
1단계: <authoring-application> 일치
<rules> 요소에는 WVS 등록 정보 publish.usesPublishRules에 지정된 각 저작 응용 프로그램마다 한 개의 <authoring-application> 하위 항목이 있어야 합니다.
예를 들어, ArbortextCreo Parametric를 저작 응용 프로그램으로 지정하려면 다음 명령을 사용합니다.
<rules>
<authoring-application name=”ARBORTEXT”>
*
*
*
</authoring-application>
<authoring-application name=”PROE”>
*
*
*
</authoring-application>
</rules>
일반적으로 개념은 다음과 같습니다.
<rules>
<authoring-application name=”MY_AUTH_APP”>
*
*
*
</authoring-application>
</rules>
게시 규칙 평가에서는 EPMDocument의 저작 응용 프로그램과 일치하는 'name' 속성을 가진 <authoring-application> 요소를 검색합니다. 일치하는 항목이 없으면 게시 작업이 발생하지 않습니다. 그렇지 않으면 평가의 2단계가 진행됩니다.
2단계: <epm-number> 일치
1단계에서 일치한 <authoring-application> 요소의 하위 요소 중 'number' 속성이 EPMDocument의 번호와 일치하는 <epm-number> 요소를 검색하는 평가가 계속됩니다.
* 
<authoring-application> 요소에는 <epm-number> 요소 이외에도 여러 하위 요소가 있을 수 있습니다. 이러한 요소가 게시 규칙 XML 파일에서 <epm-number> 요소 전에 나타나더라도 이 단계에서는 무시됩니다.
<authoring-application name=”MY_AUTH_APP”>
<epm-number number=”1111”>
*
*
*
</epm-number>
<epm-number number=”2222”>
*
*
*
</epm-number>
</authoring-application>
일치하는 항목이 있으면 일치하는 <epm-number> 요소가 8단계에서 설명하는 <publish> 요소 검색을 위한 루트가 됩니다. 그렇지 않으면 평가의 3단계가 진행됩니다.
3단계: 현재 'value' 속성으로 <epm-iba> 일치
1단계에서 일치한 <authoring-application> 요소의 하위 요소 중 EPMDocument 내 글로벌 속성 이름/값 쌍에 해당하는 <epm-iba> 요소를 검색하는 평가가 계속됩니다.
* 
<epm-iba>의 'value' 속성은 선택적 속성이며, 3단계에서는 'value' 속성이 있는 <epm-iba> 요소만 고려합니다. 'value' 속성이 없는 경우의 결과는 4단계에서 설명합니다.
<authoring-application name=”MY_AUTH_APP”>
<epm-iba iba=”IBA_NAME_1” value=”IBA_VALUE_1”>
*
*
*
</epm-iba>
<epm-iba iba=”IBA_NAME_2” value=”IBA_VALUE_2”>
*
*
*
</epm-iba>
</authoring-application>
일치하는 항목이 있으면 일치하는 <epm-iba> 요소가 8단계에서 설명하는 <publish> 요소 검색을 위한 루트가 됩니다. 그렇지 않으면 평가의 4단계가 진행됩니다.
4단계: 'value' 속성이 없는 <epm-iba> 일치
1단계에서 일치한 <authoring-application> 요소의 하위 요소 중 'iba' 속성이 EPMDocument 내 글로벌 속성 이름과 일치하는 <epm-iba> 요소를 검색하는 평가가 계속됩니다.
* 
<epm-iba>의 'value' 속성은 선택적 속성이며, 4단계에서는 'value' 속성이 없는 <epm-iba> 요소만 고려합니다. 이 기준과 일치하는 <epm-iba> 요소는 게시 규칙 XML 파일에서 나타나는 순서대로 고려됩니다.
<authoring-application name=”MY_AUTH_APP”>
<epm-iba iba=”IBA_NAME_1”>
*
*
*
</epm-iba>
<epm-iba iba=”IBA_NAME_2”>
*
*
*
</epm-iba>
</authoring-application>
일치하는 항목이 있으면 일치하는 <epm-iba> 요소가 8단계에서 설명하는 <publish> 요소 검색을 위한 루트가 됩니다. 그렇지 않으면 평가의 5단계가 진행됩니다.
5단계: <epm-type> 일치
1단계에서 일치한 <authoring-application> 요소의 하위 요소 중 'type' 속성이 EPMDocument의 객체 유형과 일치하는 <epm-type> 요소를 검색하는 평가가 계속됩니다. 'type' 속성의 값은 EPMDocument의 내부 이름입니다. 내부 이름은 Windchill 유형 및 속성 관리 유틸리티에서 정의됩니다.
처리 시 글로벌 속성을 설정하려면 먼저 유형 및 속성 관리 유틸리티에서 유형에 대한 글로벌 속성을 정의해야 합니다. 자세한 내용은 유형 및 속성 관리 유틸리티 작업을 참조하십시오.
<authoring-application name=”MY_AUTH_APP”>
<epm-type type=”MyLogicalId”>
*
*
*
</epm-type>
<epm-type type=”AnotherLogicalId”>
*
*
*
</epm-type>
</authoring-application>
일치하는 항목이 있으면 일치하는 <epm-type> 요소가 8단계에서 설명하는 <publish> 요소 검색을 위한 루트가 됩니다. 그렇지 않으면 평가의 6단계가 진행됩니다.
6단계: 일치하는 항목이 없는 경우
평가의 이전 단계에서 검색 루트를 찾을 수 없으면 <authoring-application> 요소가 <publish> 요소 검색을 위한 루트가 됩니다. 게시 요소는 8단계에서 설명합니다.
다음은 일치하는 항목이 없는 경우 게시의 예입니다.
<authoring-application name=”MY_AUTH_APP”>
<epm-number number=”1111”>
*
*
*
</epm-number>
<epm-type type=”MyInternalName”>
*
*
*
</epm-type>
<!-- Begin: Fall-through search root -->
*
*
*
<!-- End: Fall-through search root -->
</authoring-application>
이 예에서 EPMDocument의 번호가 1111이 아니거나 내부 이름 "MyInternalName"이 없는 경우, 위의 Begin 및 End 추가 정보 라인 사이에 설명된 것처럼 <authoring-application>이 검색 루트가 됩니다.
* 
일치하는 항목이 없는 경우의 검색 방법은 특정 저작 응용 프로그램에 대한 EPMDocument 게시 무시 기능을 제어할 수 없으므로 바람직한 방법이 아닙니다. 일치하는 항목이 없는 경우의 방법은 <authoring-application> 일치에만 중점을 둘 수 있으므로 게시 규칙을 테스트할 때 유용합니다.
7단계: <structure-type> 일치
1단계에서 일치한 <authoring-application> 요소의 하위 요소 중 type 속성이 게시되는 구조의 유형과 일치하는 <structure-type> 요소를 검색하는 평가가 계속됩니다. type 속성의 값은 epm, part, epm_plus_parts, part_and_epm, epm_wc_structure, epm_wc_structure 또는 type_based_object_structure일 수 있습니다. 2~6단계는 <publish> 요소를 검색하기 위한 루트를 결정합니다. 이 루트는 <epm-number>, <epm-iba>, <epm-type> 또는 <authoring-application> 요소가 됩니다.

<authoring-application name=”PARTLIST”>
<structure-type type=”type_based_object”>
*
*
</structure-type>
<structure-type type=” type_based_object_structure”>
*
*
</structure-type>
</authoring-application >
일치하는 항목이 있으면 일치하는 <structure-type> 요소가 <publish> 요소 검색을 위한 루트가 됩니다. 그렇지 않으면 <authoring-application> 요소가 <publish> 요소 검색을 위한 루트가 됩니다. 이 경우 <authoring-application> 요소를 6단계에서 설명한 "완료되지 않는" 조건으로 간주할 수 있습니다. <publish> 요소 검색은 다음 단계에서 설명합니다.
단계 8: <publish> 일치
2~6단계는 <publish> 요소를 검색하기 위한 루트를 결정합니다. 이 루트는 <epm-number>, <epm-iba>, <epm-type> 또는 <authoring-application> 요소가 됩니다.
게시 작업은 'on' 속성이 게시 규칙 평가를 호출하는 이벤트와 일치하는 루트의 각 <publish> 하위 요소마다 작성됩니다. <publish> 요소가 일치하지 않으면 게시 작업이 작성되지 않습니다.
< … root for publishing … >
<publish on=”checkin” param-set=”SET1”/>
<publish on=”checkin”/>
<publish on=”schedule” output=”VALID_WORKER_OUTPUT” param-set=”SET1”/>
<publish on="checkin" overlay-recipe-file="RECIPE_FILE_NAME"/>

</ … end of root for publishing … >
각 일치 항목마다 일치하는 <publish> 요소의 속성이 처리됩니다. 사용 가능한 속성은 다음과 같습니다.
on - 가능한 'on' 값은 이 섹션 시작 부분에서 설명한 트리거와 관련이 있습니다. 이들은 "checkin", "schedule", "create-representation" 및 "unknown-source"입니다. "manual-post"라고 하는 다섯 번째 트리거는 이 문서의 뒷부분에서 설명합니다. 자세한 내용은 수동 사후 게시 항목을 참조하십시오. 위의 예에서는 세 개의 "on" 값이 있습니다. 그 중 두 개는 checkin 값이며 나머지 하나는 schedule 값입니다. 게시 규칙 평가를 위한 트리거가 EPMDocument 체크 인용인 경우 두 게시 작업이 작성됩니다. 트리거가 EPMDocument의 예약된 작업용인 경우 하나의 게시 작업이 작성됩니다. 사용자 인터페이스의 새 표현 마법사를 직접 사용하여 트리거가 발생한 경우에는 게시 작업이 작성되지 않습니다.
output - 위의 세 번째 <publish> 행에 표시된 것처럼 'output' 속성이 있는 경우 작업자가 사용할 수 있는 게시 작업의 일부 정보로 포함됩니다. 모든 작업자가 이 속성을 사용할 수 있는 것은 아닙니다.
param-set - 'param-set' 속성이 있는 경우 게시 규칙 XML 파일에서 <param-set> 속성 값과 일치하는 'name' 속성을 가진 'param-set' 요소를 검색합니다. 9단계에서는 일치하는 <param-set> 요소의 처리에 대해 설명합니다. 위의 예에서는 param-set 값이 "SET1"입니다.
param-set-ref - <param-set-ref...> 하위 요소가 <publish on =...> 요소 블록에 있으면 게시 규칙 XML 파일에서 param-set-ref "name" 속성 값과 일치하는 'name' 속성이 포함된 <param-set...> 요소를 검색합니다. 하나의 <publish on =...> 요소 블록에 대해 여러 개의 사후 게시 위임을 호출하기 위해 동일한 XML 파일에서 각각 다른 param-set 정의를 참조하는 여러 개의 <param-set-ref...> 하위 요소를 추가할 수 있습니다.
overlay-recipe-file - 'overlay-recipe-file' 속성이 있는 경우(위의 네 번째 <publish> 행에 표시됨) 시각화 구성 관리 UI에서 RECIPE_FILE_NAME 값과 일치하는 파일이 검색되고, 검색되면 해당 파일이 게시 작업을 위해 다른 파일과 함께 작업자로 전송됩니다. 그러면 작업자는 이 오버레이 레시피 파일을 사용하여 표현 또는 보기 가능 항목을 생성합니다.
* 
지정된 이름의 오버레이 레시피 파일이 없으면 게시 작업이 실패합니다. 이러한 경우, 필요하지 않을 경우 게시 규칙에서 'overlay-recipe-file' 속성을 제거하거나 올바른 파일 이름을 입력합니다.
9단계에서는 일치하는 <param-set-ref> 요소의 처리에 대해 설명합니다.
9단계: <param-set-ref> 처리
하나의 <publish on =...> 요소 블록 내의 <param-set-ref> 하위 요소를 사용하여 동일한 XML 파일에서 여러 <param-set> 요소 정의를 참조합니다. 예를 들어 AdditionalFilesPostPublishDelegate를 사용하여 각 파일 형식에 대해 별도의 WTDDocument 객체를 만들기 위해 다양한 추가 파일 형식의 사후 게시를 구성할 수 있습니다.
<publish on="checkin” display-label="CAD Part - Check-in" additional-files="part_files">
<param-set-ref name="Additional Files Post Publish to STEP Document"/>
<param-set-ref name="Additional Files Post Publish to IGES Document"/>
</publish>
구문 일러스트레이션의 경우 <Windchill>/codebase/com/ptc/wvs/server/xml에 있는 기본 제공 PublishRules-AdditionalFiles.xml 파일을 참조하십시오.
단계 10: <param-set> 처리
<param-set> 요소는 게시 규칙 XML 파일 내 <rules> 태그 사이 임의 지점에 나타날 수 있습니다. 흔히 몇 개의 <publish> 요소에서 동일한 <param-set> 요소를 참조하는 것이 유용합니다. <param-set> 요소의 하위 요소에는 게시 작업의 일부 정보가 포함됩니다. 이 정보는 다음 요소에 포함되어 있습니다.
post-publish - 이러한 요소는 PostPublishDelegate에 필요한 정보를 전달하는 데 사용됩니다. 자세한 내용은 사후 게시를 참조하십시오.
iba - 이러한 요소는 PostPublishDelegate에 선택적 정보를 전달하는 데 사용됩니다. 자세한 내용은 사후 게시를 참조하십시오.
처리 시 글로벌 속성을 설정하려면 먼저 유형 및 속성 관리 유틸리티에서 유형에 대한 글로벌 속성을 정의해야 합니다. 게시 규칙이 문자열을 포함하는 XML 파일 안에 들어 있으므로 사후 게시 위임으로 전달하기 위해 문자열이 아닌 값을 어떻게 표현할지 알고 있어야 합니다. 자세한 내용은 유형 및 속성 관리 유틸리티 작업을 참조하십시오.
다음은 지원되는 글로벌 속성 유형 목록과 각 글로벌 속성에 대한 예제 값입니다.
<iba name="com.ptc.MyTypeBoolean">Yes</iba>
<iba name="com.ptc.MyTypeDateTime">2007-07-13 11:12:32</iba>
<iba name="com.ptc.MyTypeInteger">36</iba>
<iba name="com.ptc.MyTypeRealNumber">0.12321345</iba>
<iba name="com.ptc.MyTypeRealUnitsArea">25 m**2</iba>
<iba name="com.ptc.MyTypeString">string test</iba>
<iba name="com.ptc.MyTypeURL">http://www.ptc.com (PTC)</iba>
worker - 이 요소는 작업자에서 지원되는 경우 추가 정보를 작업자에게 전달하는 데 사용됩니다. 작업자는 평가 중에 사용되는 EPMDocument의 저작 응용 프로그램에서 결정합니다.
이러한 요소는 동일한 구조로 되어 있습니다. 각 요소마다 매개변수를 식별할 수 있는 'name' 속성이 있고 요소의 텍스트 컨텐트는 매개변수의 값입니다.
<param-set name=”SET1”>
<post-publish name=”name1”>VALUE1</post-publish>
<post-publish name=”name2”>VALUE2</post-publish>
<iba name=”iba_name1”>IBA_VALUE1</iba >
<iba name=”iba_name2”>IBA_VALUE2</iba >
<worker name=”worker_info_name”>WORKER_INFO_VALUE</ worker >
</param-set>
<param-set> 요소에는 임의 개수의 <worker>, <post-publish> 및 <iba> 요소가 있을 수 있지만, 대부분의 다른 평가 단계와는 달리 나타나는 순서가 중요합니다. 8단계에서 <publish> 요소가 일치할 경우 평가 프로세스는 각 요소의 내부 테이블(예: <worker> 테이블, <post-publish> 테이블 및 <iba> 테이블)을 구성합니다. <param-set> 요소의 하위 요소는 파일에 나타나는 순서대로 읽어들입니다.
각 하위 요소가 처리되고 테이블이 이름/값 쌍으로 채워집니다. 매개변수 이름은 각 테이블 내에서 유일해야 하지만 모든 테이블에서 유일할 필요는 없습니다. 예를 들어, 동일한 <post-publish> 이름 및 <iba> 이름이 있을 수 있지만 두 <post-publish> 이름이 동일할 수는 없습니다.
하위 요소가 처리될 때 이전에 매개변수 식별자가 발견된 경우 테이블 엔트리가 새 매개변수 값으로 업데이트되어 동일한 이름에 대해 이전에 발견된 값을 대체합니다.
<param-set> 요소에는 <include> 하위 요소가 있을 수 있습니다. <include> 요소는 지정된 <param-set>와 연관된 매개변수를 테이블에 추가합니다. 이는 서브루틴 호출과 유사합니다.
<param-set name=”SET1”>
<include param-set=”COMMON”/>
<post-publish name=”name”>From SET1</post-publish>
</param-set>
<param-set name=”COMMON”>
<post-publish name=”name”>From COMMON</post-publish>
</param-set>
위의 코드 부분에서 게시 규칙 파일에 SET1 <param-set>가 참조된 경우 SET1에서 <post-publish> 요소 앞에 <include> 요소가 나타나므로 <post-publish> 매개변수의 'name'은 'From SET1' 값을 갖게 됩니다. 요소가 반대로 될 경우 값은 'From COMMON'이 됩니다.
<include> 요소를 효과적으로 사용하면 <param-set> 요소를 함께 연결할 수 있습니다. 전체 체인이 처리된 후에는 처리가 11단계로 넘어갑니다.
11단계: 텍스트 값 대체
<param-set> 요소가 처리되고 9단계의 매개변수 테이블이 채워진 후에는 테이블의 매개변수 값에서 대체 키가 검색됩니다. 대체 키는 사전 정의된 문자 시퀀스(항상 열기 괄호로 시작하여 닫기 괄호로 끝남)로, 이 시퀀스가 발견되면 아래 표에 표시된 정보로 대체됩니다.
대체 키
대체되는 데이터
{AUTHORING_APP}
소스 EPMDocument의 저작 응용 프로그램
{EPM_NAME}
소스 EPMDocument의 이름
{EPM_NUMBER}
소스 EPMDocument의 번호
{EPM_TYPE}
소스 EPMDocument의 유형
{OUTPUT_TYPE}
<publish> 요소의 'output' 속성 값
{PARAM_SET_NAME}
<publish> 요소의 'param-set' 속성 값
{PARAM_SET_REF_NAME}
<publish> 요소의 'param-set-ref' 속성 값
{ADDITIONAL_FILE_PRIMARY_BASENAME}
파일 확장자가 없는 주요 추가 파일의 베이스 이름
{ADDITIONAL_FILE_PRIMARY_EXTENSION}
주요 추가 파일의 파일 확장자
{ADDITIONAL_FILE_SECONDARY_BASENAME}
파일 확장자가 없는 보조 추가 파일의 베이스 이름. 보조 파일이 여러 개 있는 경우 이 이름을 위해 한 파일이 무작위로 선택됩니다.
{ADDITIONAL_FILE_SECONDARY_EXTENSION}
보조 추가 파일의 파일 확장자. 보조 파일이 여러 개 있는 경우 이 이름을 위해 한 파일이 무작위로 선택됩니다.
예를 들어, <param-set>에서 다음 요소가 발견된 경우
<post-publish name=”name”>{EPM_NUMBER} authored by
{AUTHORING_APP}</post-publish>
대상 객체의 이름은 다음과 비슷합니다. (이 예에서 EPMDocument의 번호는 000047입니다.)
000047 authored by MY_AUTH_APP
모든 대체가 완료되고 나면 매개변수 테이블이 게시 작업과 연관되고 8단계로 돌아가서 추가 <publish> 요소를 검색합니다.
12단계: 평가 완료
게시 규칙을 평가한 후에는 단일 EPMDocument에 대한 여러 게시 작업이 0이 됩니다. 또한, 작성된 모든 게시 작업 또는 일부 게시 작업에 대해 사후 게시 및 작업자별 매개변수를 정의했을 수도 있습니다.
게시 작업이 성공하면 표현이 작성됩니다. 그런 다음 게시 규칙에 따라 사후 게시 동작을 정의할 수 있습니다.
도움이 되셨나요?