属性セットの定義
AttributeSet コンフィギュレーションファイル
AttributeSet のマークアップ定義は、各属性クラスのデフォルトの include または exclude 動作の定義機能をサポートしています。AttributeSet コンフィギュレーションファイルは次の場所にあります。
<Windchill-path>\codebase\com\ptc\arbortext\windchill\siscore\attset\xml
コンフィギュレーションファイルで属性のセットを定義する際には、同じタイプのすべての属性を 1 つのグループにまとめてください。
いくつかのコンフィギュレーションファイルを使用できます。
• localizable_attset.xml
翻訳用に XLIFF ファイルに送信する属性セットを定義します。たとえば、このファイルの 2 つのセクションでは 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
マニフェストのメタデータとして送信する属性セットを定義します。たとえば、ファイルにある 1 つのセクションによって、部品リストの属性が識別されます。
<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 に送信する属性セットを定義します。たとえば、ファイルにある 1 つのセクションによって、パブリッシング構造の属性が識別されます。
<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
Windchill のほかのオブジェクトを参照する属性セットを定義し、バンドルの referencedObjects.xml に含めます。たとえば、ファイルのセクションの 1 つによって、ダイナミックドキュメント (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
|
目次の表示位置を示すパブリッシング構造のマーカー。
|
索引、構造ノード
|
com.ptc.sis.PsIndex
|
索引の表示位置を示すパブリッシング構造のマーカー。
|
情報の親子リンク、参照オブジェクト
|
com.ptc.sis.BaseUsageLink
|
Windchill Service Information Manager 構造 (モデル化) の作成に使用される、2 つのベースノード間のリンク。
|
部品の親子リンク、参照オブジェクト
|
wt.part.WTPartUsageLink
|
構造 (モデル化) の作成に使用される、2 つの 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 インタフェースを実装するすべてのオブジェクトの include または exclude に Windchill 属性を指定することができます。これによって、オブジェクトをデータベースから読み込み、書き込むことが可能となります。タイプは、モデル化された (ハード) タイプか、モデル化されたタイプまたはほかのサブタイプに基づくサブタイプのいずれかです。サブタイプは、タイプおよび属性マネージャまたはローダーファイルを使用して作成、管理されます。
<!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
1 番目の例は EPMDocument の DynamicDocument サブタイプの名前、2 番目の例はモデル化されたタイプ 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 文字列は、1 つの属性のみを一意に識別します。1 番目の例では、wt.part.WTPart タイプの MBA (Model Based Attribute; モデルベース属性) が識別されます。2 番目の例では、wt.doc.WTDocument の属性が識別されます。3 番目の例は、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 コンフィギュレーションファイルは、異なるレベルで明示的な操作が必要な属性セットを定義するように設計されています。このフォームは要素.要素の属性 です。サポートされるレベルは次のとおりです (降順または優先度が高い順)。
• 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 に書き込まれます。オブジェクトが Arbortext Content Delivery にパブリッシングされた後に URI で検索できるように、参照のフォームは Windchill 識別子から URI に変更されます。
オブジェクトを参照する属性は、オブジェクトを識別する token 属性を使用して、Property エレメントのメッセージボディに表示されます。Value エレメントは、ref 属性を持っています。この属性は、メッセージボディをバンドルにパブリッシングできるように、オブジェクト参照を URI に変換します。属性が複数ある場合、メッセージボディに複数の Value エントリができます。
AttributeSet API
AttributeSet コンフィギュレーションファイルは、Windchill オブジェクトの属性セットを識別します。選択したオブジェクトによってこのセットは異なります。同じタイプのすべてのオブジェクトが、セットのすべての属性に定義された値を持つとは限りませんが、セットは同じです。コンフィギュレーションは、コンテキスト固有です。たとえば、localizable および publishable 属性の両方を設定するには、異なる XML ファイルを使用する必要があります。
AttributeSet クラスは、1 つまたは複数の 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);
}