속성 세트 정의
AttributeSet 구성 파일
AttributeSet의 마크업 정의는 각 속성 클래스의 기본 include 또는 exclude 동작을 정의하는 기능을 지원합니다. AttributeSet 구성 파일의 위치는 다음과 같습니다.
<Windchill-path>\codebase\com\ptc\arbortext\windchill\siscore\attset\xml
구성 파일에서 속성 세트를 정의할 때 단일 유형의 모든 속성을 그룹화해야 합니다.
여러 가지 구성 파일을 사용할 수 있습니다.
• localizable_attset.xml
번역을 위해 XLIFF 파일로 보낼 속성 세트를 정의합니다. 예를 들어 파일의 두 섹션에서 name 속성을 식별합니다.
<Type name="com.ptc.sis.Base">
<Attribute action="include" name="name"/>
<Attribute action="include" name="organizationName"/>
<Attribute action="include" name="number"/>
</Type>
<Type name="com.ptc.arbortext.windchill.partlist.PartList">
<Attribute action="include" name="name"/>
</Type>
• manifest_attset.xml
매니페스트의 메타데이터로 보낼 속성 세트를 정의합니다. 예를 들어, 파일의 다음 한 섹션은 부품 목록에 대한 속성을 식별합니다.
<Type name="com.ptc.arbortext.windchill.partlist.PartList">
<Attribute action="include" name="name" />
<Attribute action="include" name="organizationName" />
<Attribute action="include" name="number" />
<Attribute action="include" name="versionIdentifer.versionId" />
<Attribute action="include" name="iteration" />
<Attribute action="include" name="thePersistInfo.modifyStamp" />
<Attribute action="include" name="thePersistInfo.createStamp" />
<Attribute action="include" name="type" />
</Type>
• publishable_attset.xml
게시를 위해 메타데이터로 Arbortext Publishing Engine에 보낼 속성 세트를 정의합니다. 예를 들어, 파일의 다음 한 섹션은 게시 구조에 대한 속성을 식별합니다.
<Type name="com.ptc.sis.PsRoot">
<Attribute action="include" name="lifeCycleState" type="enum"
token="wt.lifecycle.State">
</Attribute>
<Attribute action="include" name="thePersistInfo.modifyStamp" />
<Attribute action="include" name="orgid" />
<Attribute action="exclude" name="securityLabels.internalValue" />
<Attribute action="exclude" name="view" />
<Attribute action="include" name="name" />
<Attribute action="exclude" name="lineNumber" />
<Attribute action="exclude" name="quantityAmount" />
<Attribute action="exclude" name="quantityUnit" />
<Attribute action="exclude" name="traceCode" />
<Attribute action="exclude" name="state.state" />
<Attribute action="include" name="thePersistInfo.modifyStamp" />
<!-- don't remove. It is used in downstream -->
<Attribute action="include" name="thePersistInfo.updateStamp" />
<!-- don't remove. It is used in downstream -->
</Type>
Windchill의 열거 유형 속성은 객체의 메타데이터로 게시됩니다. 다음 예제에서 열거 유형은 키 ”INWORK”이고 값 In Work는 이름입니다.
<Property token="lifeCycleState">
<Value key="INWORK">In Work</Value>
</Property>
파일 발췌에서 식별 속성은 lifeCycleState의 이름과 열거 유형을 둘 다 반영합니다. 여기서 연관된 token 속성은 실제로 열거 유형에 대한 전체 Java 클래스 이름(이 경우 wt.lifecycle.State)을 지정합니다.
부품 분류 범주 속성을 지정할 수 있습니다. 지정한 경우 하위 분류 속성이 자동으로 포함 또는 제외됩니다. 기본 분류 속성 자체를 제외하여 해당 분류와 연관된 하위 속성을 모두 제외할 수 있습니다. 분류 속성에 대한 자세한 내용은
Windchill의 부품 분류를 참조하십시오.
|
publishable_attset.xml에서 thePersistInfo.modifyStamp 및 thePersistInfo.updateStamp에 대한 속성 include 작업을 변경하거나 제거하지 마십시오. 이 작업은 파일 전체에 지정되어 있으며 Arbortext Content Delivery에 대한 번들에서 사용됩니다.
사용자 정의 하위 유형을 구현하는 경우 해당 문을 사양에 추가해야 합니다.
|
• referencedObjects_attset.xml
referencedObjects.xml에 번들로 포함할 Windchill의 다른 객체를 참조하는 속성 세트를 정의합니다. 예를 들어, 파일의 한 섹션이 동적 문서(EPMDocuments의 하위 유형)에 대한 속성을 식별합니다.
<Type name="wt.epm.EPMDocument">
<Attribute action="include" name="missingDependents" />
<Attribute action="include" name="placeHolder" />
<Attribute action="include" name="revisionNumber" />
<Attribute action="include" name="derived" />
<Attribute action="include" name="name" />
<Attribute action="include" name="number" />
<Attribute action="include" name="CADName" />
<Attribute action="include" name="docType" />
<Attribute action="include" name="docSubType" />
<Attribute action="include" name="authoringApplication" />
<Attribute action="include" name="versionIdentifer.versionId" />
<Attribute action="include" name="thePersistInfo.modifyStamp" />
<Attribute action="include" name="thePersistInfo.createStamp" />
<Attribute action="include" name="iteration" />
<Attribute action="include" name="type" />/Type>
다른 객체를 참조하는 속성을 참조 속성으로 처리하도록 명시적으로 정의해야 합니다.
• publishinfo_attset.xml
게시하는 서비스 구조와 관련된 페이로드 파일 publishinfo.xml에서 포함 또는 제외될 속성 세트를 정의합니다. 예를 들어 기본적으로 이 파일은 게시 구조 및 정보 구조(해당 유형으로 식별됨)에 게시하는 구조의 이름, 번호 및 조직 이름이 포함됨을 정의합니다.
Type name="com.ptc.sis.PsRoot">
<Attribute action="include" name="name" />
<Attribute action="include" name="number" />
<Attribute action="include" name="orgName" />
</Type>
<Type name="com.ptc.sis.IsRoot">
<Attribute action="include" name="name" />
<Attribute action="include" name="number" />
<Attribute action="include" name="orgName" />
</Type>
AttributeSet 업데이트 명령
예를 들어, 업데이트된 게시 작업이 실행되기를 기다리는 경우 속성 세트 파일의 변경 사항이 즉시 로드되지 않을 수 있습니다. 속성 세트 구성 파일을 변경한 후 Windchill 셸에서 서버를 재시작하여 변경 사항을 적용합니다.
Windchill을 즉시 재시작할 수 없을 경우 대신 수동으로 캐시를 지울 수 있습니다.
1. Windchill 셸을 엽니다.
2. 다음 명령을 입력합니다.
windchill com.ptc.arbortext.windchill.publisher.cmdline.
CleanCacheAttibuteSet
명령에 따라 캐시가 지워지고 변경 사항이 더 신속하게 처리됩니다.
Windchill 속성 카테고리
• LWCIBAAttDefinition – 인스턴스 기반 속성 또는 IBA
• LWCHardAttDefinition – 모델링된 속성 또는 하드 속성
• LWCLogicalAttDefinition – 논리적 속성
• LWCNonPersistedAttDefinition – 비지속 속성
• LWCFlexAttDefinition – 소프트 속성(이전의 Flex 속성)
• LWCAttributeSetAttDefinition – 속성 집합
구조에 적용 가능한 유형 속성
다음 표에는 사용자 정의할 수 있는 유형 속성 목록이 나와 있습니다.
이름 및 유형
|
논리적 형식(전체 유형 이름이 아님)
|
설명
|
부품, 구조 노드
|
wt.part.WTPart
|
부품(모델링됨)
|
정보 베이스, 구조 노드
|
com.ptc.sis.Base
|
모든 게시 구조 및 정보 구조 객체에 대한 WTPart에서 파생된 추상 기본 유형입니다.
|
문서 구성 단위 베이스, 구조 노드
|
com.ptc.sis.BaseDiv
|
게시 구조 및 정보 구조에 사용되는 문서 구성 단위 유형에 대한 추상 기본 클래스입니다.
|
게시 구조, 구조 노드
|
com.ptc.sis.PsRoot
|
게시 구조 루트 객체입니다.
|
게시 섹션, 구조 노드
|
com.ptc.sis.PsSection
|
게시 구조의 문서 구성 단위 또는 섹션입니다.
|
정보 구조, 구조 노드
|
com.ptc.sis.IsRoot
|
정보 구조 루트 객체입니다.
|
정보 그룹, 구조 노드
|
com.ptc.sis.IsGroup
|
정보 구조의 문서 구성 단위 또는 섹션입니다.
|
컨텐트 베이스, 구조 노드
|
com.ptc.arbortext.sis.Content
|
컨텐트 참조 및 특수 노드에 대한 추상 베이스입니다.
|
컨텐트 홀더, 참조 노드
|
com.ptc.sis.ContentRef
|
컨텐트 파일에 대한 일반 참조입니다.
|
일러스트레이션 홀더, 참조 노드
|
com.ptc.sis.IllustrationRef
|
그래픽 동적 문서에 대한 참조입니다.
|
부품 목록 홀더, 참조 노드
|
com.ptc.sis.PartsListRef
|
부품 목록 객체에 대한 참조입니다.
|
텍스트 컨텐트 홀더, 참조 노드
|
com.ptc.sis.TextualContentRef
|
동적 문서에 대한 참조입니다(XML, PDF, 텍스트 등).
|
특별 베이스, 구조 노드
|
com.ptc.sis.PsSpecial
|
생성된 텍스트 마커를 나타내는 추상 베이스입니다.
|
목차, 구조 노드
|
com.ptc.sis.PsToc
|
TOC 위치를 알려주는 게시 구조 내의 마커입니다.
|
색인, 구조 노드
|
com.ptc.sis.PsIndex
|
색인 위치를 알려주는 게시 구조 내의 마커입니다.
|
정보 사용 링크, 참조된 객체
|
com.ptc.sis.BaseUsageLink
|
Windchill Service Information Manager 구조(모델링됨)를 작성하는 데 사용된 두 기본 노드 간의 링크입니다.
|
부품 사용 링크, 참조된 객체
|
wt.part.WTPartUsageLink
|
구조(모델링됨)를 작성하는 데 사용된 두 WTPart 노드 간의 링크입니다.
|
부품 목록, 참조된 객체
|
com.ptc.arbortext.windchill.partlist.PartList
|
부품 목록 항목(모델링됨)에 대한 부품 목록 컨테이너입니다.
|
부품 목록 항목, 참조된 객체
|
com.ptc.arbortext.windchill.partlist.PartListItem
|
실제 부품(모델링됨)에 연결하는 부품 목록 항목입니다.
|
EPMDocument, 참조된 객체
|
wt.epm.EPMDocument
|
임의 EPMDocument입니다. DynamicDocument(모델링됨)의 기본 유형입니다.
|
DynamicDocument, 참조된 객체
|
com.ptc.ptcnet.DynamicDocument
|
텍스트 또는 그래픽 컨텐트가 포함된 Arbortext 동적 문서입니다.
|
Xliff Link, 참조된 객체
|
com.ptc.sis.XliffLink
|
번역 문서에 대한 링크입니다.
|
AttributeSet 요소
모든 객체 속성 또는 속성의 특정 클래스에 대한 기본 작업을 정의합니다. 하위 Type 요소는 Persistable 유형의 기본 동작 무시를 허용합니다.
<!ELEMENT AttributeSet ( Type* )>
<!ATTLIST AttributeSet
default (include | exclude) #IMPLIED
hard (include | exclude) #IMPLIED
soft (include | exclude) #IMPLIED
iba (include | exclude) #IMPLIED
logical (include | exclude) #IMPLIED
classification (include | exclude) #IMPLIED
nonPersisted (include | exclude) #IMPLIED
set (include | exclude) #IMPLIED
>
AttributeSet 요소의 속성은 다음과 같이 정의됩니다.
• default
보다 특정한 테스트에 의해 포함되지 않거나 제외된 모든 속성에 대한 기본 작업입니다.
• hard
보다 특정한 테스트에 의해 포함되지 않거나 제외된 모든 hard(LWCHardAttDefinition) 속성에 대한 기본 작업입니다.
• soft
보다 특정한 테스트에 의해 포함되지 않거나 제외된 모든 soft(LWCFlexAttDefinition) 속성에 대한 기본 작업입니다.
• iba
보다 특정한 테스트에 의해 포함되지 않거나 제외된 모든 iba(LWCIBAAttDefinition) 속성에 대한 기본 작업입니다.
• logical
보다 특정한 테스트에 의해 포함되지 않거나 제외된 모든 logical(LWCLogicalAttDefinition) 속성에 대한 기본 작업입니다.
• classification
보다 특정한 테스트에 의해 포함되지 않거나 제외된 모든
classification 속성에 대한 기본 작업입니다. 없는 경우
iba 속성의 값이 사용됩니다. 이러한 속성에 대한 자세한 내용은
분류 속성을 참조하십시오.
• nonPersisted
보다 특정한 테스트에 의해 포함되지 않거나 제외된 모든 nonPersisted(LWCNonPersistedAttDefinition) 속성에 대한 기본 작업입니다.
• set
보다 특정한 테스트에 의해 포함되지 않거나 제외된 모든 set(LWCAttributeSetAttDefinition) 속성에 대한 기본 작업입니다.
예를 들면 다음과 같습니다.
<AttributeSet xmlns="http://www.ptc.com" default="exclude"
iba="include" soft="include" logical="include">
Type 요소
Type 요소를 사용하면 Persistable 인터페이스를 구현하는 모든 객체에 대해 Windchill 속성을 include 또는 exclude로 지정하여 객체를 데이터베이스에서 읽고 쓰도록 할 수 있습니다. 유형은 모델링된 (하드) 유형이거나, 모델링된 유형 또는 다른 하위 유형을 기반으로 하는 하위 유형입니다. 하위 유형은 유형 및 속성 매니저나 로더 파일을 통해 작성되고 관리됩니다.
<!ELEMENT Type ( Attribute* )>
<!ATTLIST Type
name CDATA #REQUIRED
token NMTOKENS #IMPLIED
default (include | exclude) #IMPLIED
>
Type 요소의 속성은 다음과 같이 정의됩니다.
• name
소프트 유형이나 모델링된 유형의 논리적 형식입니다. 분류 속성은 "@"으로 시작하는 name 값으로 식별됩니다.
• token
이 유형에 의미를 매핑하는 데 사용할 수 있는 선택적 이름 또는 이름 모음입니다.
• default
보다 특정한 설정이 없는 이 유형의 모든 속성을 제외하거나 포함하는 기본 작업입니다.
모든 유형은 Logical Form(LogicalID라고도 함)이라는 유형 이름 문자열에 의해 식별됩니다. 논리적 형식은 유형을 고유하게 식별하므로 사이트 레벨에서 고유해야 합니다. 예를 들면 다음과 같습니다(줄 바꿈 무시).
com.ptc.ptcnet.DynamicDocument =>
WCTYPE|wt.epm.EPMDocument|com.ptc.ptcnet.DynamicDocument
wt.part.WTPart => WCTYPE|wt.part.WTPart
첫 번째 예제는 EPMDocument에 대한 DynamicDocument 하위 유형의 이름이고, 두 번째 예제는 모델링된 유형인 wt.part.WTPart의 이름입니다. 논리적 형식은 해당 유형의 외부 형식에 매핑됩니다. 모델링된 유형의 경우, 객체의 Java 클래스 이름 앞에 WCTYPE|가 옵니다. 하위 유형의 경우, 이름은 기본 유형의 이름(소프트 또는 하드), 세로줄 |, 사용자 정의 유형 이름 순서입니다. 논리적 형식은 일반적으로 외부 형식의 마지막 세그먼트와 동일합니다. 그러나 자신의 논리적 형식을 정의할 수 있습니다. 단, 고유해야 합니다.
예를 들면 다음과 같습니다.
<Type name="com.ptc.sis.PsRoot">
Attribute 요소
Attribute 요소는 주로 특정 Windchill 속성을 속성 집합에 포함(include)할지 아니면 제외(exclude)할지를 지정합니다. 또한 속성이나 해당 값에 대한 의미를 정의하는 데 사용됩니다.
<!ELEMENT Attribute ( Choice* )>
<!ATTLIST Attribute
name CDATA #REQUIRED
token NMTOKENS #IMPLIED
type CDATA #IMPLIED
action (include | exclude) #REQUIRED
>
Attribute 요소의 속성은 다음과 같이 정의됩니다.
• name
논리적 형식으로 된 속성 이름입니다.
• token
이 속성에 의미를 매핑하는 데 사용할 수 있는 선택적 이름 또는 이름 모음입니다.
• type
포함하거나 제외할 속성 유형을 지정하는 문자열입니다. type에 대해서는 reference 값만 지원됩니다.
속성 및 해당 유형의 name을 reference로 지정하여 속성 값을 참조 객체로 정의합니다.
• action
이 속성에 대해 수행할 작업입니다.
지정할 경우 해당 작업은 이 속성에 대해 가장 높은 우선 설정입니다. action은 생략 가능하며, 그 다음 높은 우선 설정에 의해 이 속성을 속성 집합에 포함할지 여부가 제어되도록 할 수 있습니다.
속성은 모델링된 (하드) 유형이거나 소프트 속성입니다. 소프트 속성은 유형 및 속성 매니저나 로더 파일을 통해 작성되고 관리됩니다. 모든 속성은 Logical Form이라는 속성 이름 문자열에 의해 식별됩니다. 논리적 형식은 해당 유형에 대해 속성을 고유하게 식별하므로 객체 유형에 고유해야 합니다. 예를 들어, 다음은 속성의 논리적 형식을 해당 외부 형식에 매핑한 것입니다.
name => MBA|masterReference^WCTYPE|wt.part.WTPartMaster~MBA|name
name => MBA|masterReference^WCTYPE|wt.doc.WTDocumentMaster~MBA|name
filename => MBA|masterReference^WCTYPE|wt.epm.EPMDocumentMaster~MBA|CADName
fileName => NPA|filename
지정된 유형의 문자열 name은 하나의 속성만 고유하게 식별합니다. 첫 번째 예제는 wt.part.WTPart 유형의 MBA(모델 기반 속성)를 식별합니다. 두 번째 예제는 wt.doc.WTDocument의 속성을 식별합니다. 세 번째 예제는 wt.epm.EPMDocument 유형의 filename 속성입니다. 마지막 예제는 이전 속성에 대한 별칭을 선언합니다. 객체 유형은 속성의 외부 형식에 포함되지 않습니다.
예를 들면 다음과 같습니다.
<Attribute action="include" name="lifeCycleState" token="STATE">
속성 및 해당 유형의 name을 reference로 지정하면 속성 값이 참조된 객체로 정의되고 해당 URI가 페이로드에서 변환되므로 Arbortext Content Delivery에서 객체를 찾을 수 있습니다.
Attribute action="include" name="PartListVersionRef" type=”reference”
Choice 요소
Choice 요소는 속성의 가능한 값을 정의하며, 작성되는 속성 집합에 해당 속성을 포함할지 아니면 제외할지에는 영향을 주지 않습니다. 이 요소는 다운스트림 처리의 값 범위를 정의합니다. 또한 토큰 또는 토큰 목록을 값과 연관시켜서 다운스트림 프로세스에서 해당 값에 특별한 의미를 부여할 수 있습니다. Choice 요소의 컨텐트는 상위 Attribute 요소의 가능한 값을 나타내는 문자열입니다.
<!ELEMENT Choice (#PCDATA) >
<!ATTLIST Choice
token NMTOKENS #IMPLIED
>
Choice 요소의 token 속성은 이 값에 의미를 매핑하는 데 사용할 수 있는 선택적 이름 또는 이름 모음으로 정의됩니다.
예를 들어 다음은 Attribute 예제를 확장합니다.
<Attribute action="include" name="lifeCycleState" token="STATE">
<Choice name="Accepted" />
<Choice name="Approved" />
<Choice name="Closed" />
<Choice name="In Work" token="INWORK" />
<Choice name="Obsolete" token="OBSOLETE" />
<Choice name="Open" token="OPEN" />
</Attribute>
속성 집합 포함 계산
AttributeSet 구성 파일은 다양한 레벨에서 명시적 작업을 사용하여 속성 집합을 정의하기 위해 설계되었습니다. 해당 형식은 Element.attribute_of_element입니다. 지원되는 레벨은 다음과 같습니다(내림차순 또는 우선 순위로).
• Attribute.action: 특정 객체 유형(Type.name)의 특정 속성(Attribute.name)
• Type.default: 객체 유형의 모든 값 속성(Type.name)
• AttributeSet.hard, AttributeSet.soft, AttributeSet.iba 등: 특정 클래스의 모든 속성
• AttributeSet.default: 모든 값 속성
일반적으로 보다 특정한 설정일수록 더 높은 우선 순위가 해당 작업 설정에 부여됩니다. 특정 레벨에서 속성에 대한 작업을 생략하는 것은 해당 속성에 대해 명시적 작업이 제공되는지 여부를 확인하기 위해 그 다음으로 가장 높은 우선 순위 레벨이 검토되어야 함을 의미합니다. 하나를 찾으면 명시적 작업에 대한 검색이 중지됩니다. 명시적 작업을 찾을 수 없으면 기본 동작이 사용됩니다.
시스템 기본 동작은 컨텍스트에 따라 달라집니다. 예를 들어, 한글화에 대한 기본 속성 집합은 직렬화에 대한 기본 설정과 다릅니다. 게시 구조에 대해 포함되는 하드 속성은 다음과 같습니다.
• name
• state.state
• versionIdentifier.versionId
예를 들어, 페이로드에 대해 게시 구조 또는 정보 구조를 직렬화할 경우 기본 동작은 하드 속성뿐만 아니라 모든 soft, iba 및 logical 속성을 포함하게 됩니다.
다른 객체를 참조하는 속성 직렬화
페이로드의 객체에 대한 참조용 메타데이터를 지정하려면 Attribute 요소의 name 및 type 속성을 지정해야 합니다. 예를 들면 다음과 같습니다.
<Type default="include"
name="com.ptc.arbortext.windchill.siscore.serviceeff.ServiceEffectivity">
<Attribute action="include" name="effContextRef" type="reference" />
</Type>
참조된 객체 속성은 페이로드의 referencedObjects.xml에 배치됩니다. 참조 양식은 Windchill 식별자에서 Arbortext Content Delivery에 게시된 후 객체를 찾는 데 사용할 수 있는 URI로 변경됩니다.
객체를 참조하는 속성은 페이로드의 Property 요소에 표시되며 token 속성을 사용하여 식별합니다. Value 요소는 객체 참조를 번들에 게시될 페이로드에 대한 URI로 변환하는 ref 속성이 있습니다. 속성이 여러 개 있으면 페이로드에 Value 엔트리가 여러 개 있습니다.
AttributeSet API
AttributeSet 구성 파일은 Windchill 객체에 대한 속성 집합을 식별합니다. 해당 집합은 선택된 객체에 따라 다릅니다. 동일한 유형의 모든 객체가 집합의 모든 속성에 대해 정의된 값을 갖는 것은 아니지만, 해당 집합은 동일합니다. 구성은 컨텍스트별로 다릅니다. 예를 들어, 다른 XML 파일을 사용하여 localizable 및 publishable 속성을 둘 다 구성해야 합니다.
AttributeSet 클래스는 한 개 이상의 AttributeSet 구성 파일에 대한 API입니다. 팩토리 메소드 getAttributeSet는 AttributeSet 구성 파일 목록에 정의된 대로 컨텍스트 이름과 일치하는 파일을 .xml 파일 확장자와 함께 로드합니다.
public class AttributeSet {
// Load one or more configuration files for a named context
and return an AttributeSet object
public static AttributeSet getAttributeSet(String context);
// Get the context for this AttributeSet
public String getContext();
// Test if a type/attribute is a member of this AttributeSet
public boolean isMember(String typeLogicalForm, String logicalForm);
public boolean isMember(TypeIdentifier type, AttributeTypeIdentifier att);
// Get the set of attributes and their types for an persistable object type.
public Map<String, AttributeTypeIdentifier> getAttributes
(String typeLogicalForm);
public Map<String, AttributeTypeIdentifier> getAttributes
(TypeIdentifier type);
// Get attribute values for a Persistable. Mapped object may be an array.
public Map<String, Object> getAttributeValues(Persistable wtobject);
}