Definizione dell'insieme di attributi
File di configurazione AttributeSet
La definizione del markup per il file AttributeSet supporta la possibilità di definire il comportamento include o exclude di default per ogni classe di attributo. I file di configurazione AttributeSet si trovano nella posizione indicata di seguito.
<Windchill-path>\codebase\com\ptc\arbortext\windchill\siscore\attset\xml
Quando si definisce un insieme di attributi in un file di configurazione, raggruppare tutti gli attributi in base al tipo.
Sono disponibili diversi file di configurazione.
• localizable_attset.xml
Definisce l'insieme di attributi da inviare in un file XLIFF per la traduzione. Ad esempio, due sezioni del file identificano l'attributo 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
Definisce un insieme di attributi da inviare come metadati nel manifest. Ad esempio, una sezione del file identifica gli attributi per gli elenchi parti:
<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
Definisce l'insieme di attributi da inviare a Arbortext Publishing Engine come metadati per la pubblicazione. Ad esempio, una sezione del file identifica gli attributi per una struttura pubblicazione:
<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>
Gli attributi del tipo enumerato da Windchill vengono pubblicati come metadati per l'oggetto. Nel seguente esempio, il tipo enumerato è la chiave ”INWORK”, mentre il valore In Work è il nome:
<Property token="lifeCycleState">
<Value key="INWORK">In Work</Value>
</Property>
Nell'estratto di file, l'attributo di identificazione riflette sia il nome sia il tipo enumerato per lifeCycleState, dove l'attributo token associato specifica effettivamente il nome della classe Java completo per il tipo enumerato (in questo caso, wt.lifecycle.State).
È possibile specificare gli attributi di categoria di classificazione delle parti. In tal caso, gli attributi di classificazione figlio vengono automaticamente inclusi o esclusi. È possibile escludere l'attributo di classificazione principale per escludere tutti gli attributi figlio associati alla classificazione. Per ulteriori informazioni sugli attributi di classificazione, fare riferimento a
Classificazione di parti in Windchill.
|
In publishable_attset.xml non modificare o rimuovere alcuna azione include dell'attributo per thePersistInfo.modifyStamp e thePersistInfo.updateStamp. Tali attributi vengono specificati in tutto il file e utilizzati nei bundle per Arbortext Content Delivery.
Se si implementa un sottotipo personalizzato, è necessario aggiungere le istruzioni alla specifica.
|
• referencedObjects_attset.xml
Definisce l'insieme di attributi che fanno riferimento ad altri oggetti in Windchill da includere nel file referencedObjects.xml in un bundle. Ad esempio, una sezione del file identifica gli attributi per documenti dinamici (un sottotipo di 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>
Un attributo che fa riferimento a un altro oggetto deve essere definito in modo esplicito per essere considerato attributo di riferimento.
• publishinfo_attset.xml
Definisce un insieme di attributi che saranno inclusi nel file del payload publishinfo.xml, o che ne saranno esclusi, relativo alla struttura ricambi che viene pubblicata. Ad esempio, per default, il file definisce che le strutture di pubblicazione e le strutture informazioni (identificate dal relativo tipo) includeranno il nome, il numero e il nome organizzazione per la struttura da pubblicare:
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>
Comando di aggiornamento AttributeSet
Le modifiche apportate a un file dell'insieme di attributi potrebbero non essere caricate immediatamente, ad esempio, se si è in attesa dell'esecuzione di un'operazione di pubblicazione aggiornata. Dopo aver apportato le modifiche a un file di configurazione dell'insieme di attributi, eseguire un riavvio del server nella shell di Windchill per fare in modo che le modifiche abbiano effetto.
Se non è possibile eseguire il riavvio immediato di Windchill, è possibile azzerare la cache manualmente.
1. Aprire una shell di Windchill.
2. Immettere il seguente comando:
windchill com.ptc.arbortext.windchill.publisher.cmdline.
CleanCacheAttibuteSet
Il comando azzera la cache e le modifiche vengono elaborate più rapidamente.
Categorie di attributi di Windchill
• LWCIBAAttDefinition - Attributi d'istanza
• LWCHardAttDefinition - Attributi modellati o hard
• LWCLogicalAttDefinition - Attributi logici
• LWCNonPersistedAttDefinition - Attributi non persistenti
• LWCFlexAttDefinition - Attributi soft (noti in precedenza come attributi flessibili)
• LWCAttributeSetAttDefinition - Insiemi di attributi
Attributi tipo applicabili alle strutture
Nella tabella riportata di seguito viene visualizzato un elenco di attributi tipo che possono essere personalizzati.
Nome e tipo
|
Forma logica (non il nome del tipo completo)
|
Descrizione
|
Parte, nodo della struttura
|
wt.part.WTPart
|
Parte (modellata)
|
Base informazioni, nodo della struttura
|
com.ptc.sis.Base
|
Tipo di base astratto derivato da WTPart per tutti gli oggetti della struttura pubblicazione e della struttura informazioni.
|
Base divisione, nodo della struttura
|
com.ptc.sis.BaseDiv
|
Classe di base astratta per tipi di divisione utilizzati nella struttura pubblicazione e nella struttura informazioni.
|
Struttura pubblicazione, nodo della struttura
|
com.ptc.sis.PsRoot
|
Oggetto radice della struttura pubblicazione.
|
Sezione pubblicazione, nodo della struttura
|
com.ptc.sis.PsSection
|
Divisioni o sezioni in una struttura pubblicazione.
|
Struttura informazioni, nodo della struttura
|
com.ptc.sis.IsRoot
|
Oggetto radice della struttura informazioni.
|
Gruppo informazioni, nodo della struttura
|
com.ptc.sis.IsGroup
|
Divisione o sezione nella struttura informazioni.
|
Base contenuto, nodo della struttura
|
com.ptc.arbortext.sis.Content
|
Base estratta per riferimenti a contenuto e nodi speciali.
|
Contenitore, nodo di riferimento
|
com.ptc.sis.ContentRef
|
Riferimento generico a file di contenuto.
|
Contenitore illustrazioni, nodo di riferimento
|
com.ptc.sis.IllustrationRef
|
Riferimento a un documento dinamico di immagine.
|
Contenitore elenco parti, nodo di riferimento
|
com.ptc.sis.PartsListRef
|
Riferimento a oggetto dell'elenco parti.
|
Contenitore testo, nodo di riferimento
|
com.ptc.sis.TextualContentRef
|
Riferimento a un documento dinamico (XML, PDF, testo e così via).
|
Base speciale, nodo della struttura
|
com.ptc.sis.PsSpecial
|
Base astratta che rappresenta i marcatori testo generati.
|
Sommario, nodo della struttura
|
com.ptc.sis.PsToc
|
Marcatore in una struttura pubblicazione che indica la posizione in cui apparirebbe un sommario.
|
Indice, nodo della struttura
|
com.ptc.sis.PsIndex
|
Marcatore in una struttura pubblicazione che indica la posizione in cui apparirebbe un indice.
|
Link di utilizzo informazioni, oggetto di riferimento
|
com.ptc.sis.BaseUsageLink
|
Link tra due nodi base utilizzato per creare strutture Windchill Service Information Manager (modellato).
|
Link di utilizzo parte, oggetto di riferimento
|
wt.part.WTPartUsageLink
|
Link tra due nodi WTPart per creare strutture (modellato).
|
Elenco parti, oggetto di riferimento
|
com.ptc.arbortext.windchill.partlist.PartList
|
Contenitore elenco parti per voci dell'elenco parti (modellato).
|
Voce elenco parti, oggetto di riferimento
|
com.ptc.arbortext.windchill.partlist.PartListItem
|
Voce dell'elenco parti che crea un link a una parte reale (modellata).
|
EPMDocument, oggetto referenziato
|
wt.epm.EPMDocument
|
Qualsiasi oggetto EPMDocument. Tipo di base di DynamicDocument (modellato).
|
DynamicDocument, oggetto referenziato
|
com.ptc.ptcnet.DynamicDocument
|
Documento dinamico di Arbortext contenente testo o immagini.
|
Xliff Link, oggetto referenziato
|
com.ptc.sis.XliffLink
|
Link a documento di traduzione.
|
Elemento AttributeSet
Definisce l'azione di default per tutti gli attributi dell'oggetto o classi specifiche di attributi. Gli elementi Type figlio consentono di ignorare il comportamento di default di tipi 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
>
Gli attributi dell'elemento AttributeSet sono definiti secondo quanto riportato di seguito.
• default
Azione di default per tutti gli attributi non inclusi o esclusi da test più specifici.
• hard
Azione di default per tutti gli attributi hard (LWCHardAttDefinition) non inclusi o esclusi da test più specifici.
• soft
Azione di default per tutti gli attributi soft (LWCFlexAttDefinition) non inclusi o esclusi da test più specifici.
• iba
Azione di default per tutti gli attributi iba (LWCIBAAttDefinition) non inclusi o esclusi da test più specifici.
• logical
Azione di default per tutti gli attributi logical (LWCLogicalAttDefinition) non inclusi o esclusi da test più specifici.
• classification
Azione di default per tutti gli attributi
classification non inclusi o esclusi da test più specifici. Quando non è presente, viene utilizzato il valore dell'attributo
iba. Per ulteriori informazioni su questi attributi, fare riferimento ad
Attributi di classificazione.
• nonPersisted
Azione di default per tutti gli attributi nonPersisted (LWCNonPersistedAttDefinition) non inclusi o esclusi da test più specifici.
• set
Azione di default per tutti gli attributi set (LWCAttributeSetAttDefinition) non inclusi o esclusi da test più specifici.
Esempio:
<AttributeSet xmlns="http://www.ptc.com" default="exclude"
iba="include" soft="include" logical="include">
Elemento Type
L'elemento Type consente di specificare attributi Windchill come include o exclude per qualsiasi oggetto che implementa l'interfaccia Persistable che consente di leggere o scrivere oggetti dal database. I tipi sono tipi modellati (hard) o sottotipi basati su un tipo modellato o su un altro sottotipo. I sottotipi vengono creati e gestiti utilizzando i file di Gestione tipi e attributi o del caricatore.
<!ELEMENT Type ( Attribute* )>
<!ATTLIST Type
name CDATA #REQUIRED
token NMTOKENS #IMPLIED
default (include | exclude) #IMPLIED
>
Gli attributi dell'elemento Type sono definiti secondo quanto riportato di seguito.
• name
Forma logica di un tipo soft o modellato. Gli attributi di classificazione vengono identificati con i valori name che iniziano con "@".
• token
Nome facoltativo o raccolta di nomi che può essere utilizzato per mappare la semantica a questo tipo.
• default
Azione di default che consente di escludere o includere tutti gli attributi di questo tipo privi di un'impostazione più specifica.
Tutti i tipi vengono identificati da una stringa del nome del tipo definita Logical Form (nota anche come LogicalID). La forma logica deve essere univoca a livello di sito poiché identifica in modo univoco il tipo. Ad esempio (ignorare l'interruzione di riga):
com.ptc.ptcnet.DynamicDocument =>
WCTYPE|wt.epm.EPMDocument|com.ptc.ptcnet.DynamicDocument
wt.part.WTPart => WCTYPE|wt.part.WTPart
Il primo esempio è il nome del sottotipo DynamicDocument di EPMDocument, mentre il secondo è il nome del tipo modellato wt.part.WTPart. Le forme logiche sono mappate alla forma esterna del tipo. Nel caso di un tipo modellato, il nome della classe java dell'oggetto a cui è aggiunto il prefisso WCTYPE|. Nel caso di un sottotipo, il nome è il nome del tipo di base (soft o hard) seguito da una barra verticale |, seguita dal nome del tipo definito dall'utente. La forma logica corrisponde generalmente all'ultimo segmento della forma esterna. Tuttavia, è possibile definire la propria forma logica, purché sia univoca.
Esempio:
<Type name="com.ptc.sis.PsRoot">
Elemento Attribute
L'elemento Attribute specifica principalmente include o exclude per un attributo Windchill specifico nell'insieme di attributi. Viene inoltre utilizzato per definire la semantica per un attributo o per i relativi valori.
<!ELEMENT Attribute ( Choice* )>
<!ATTLIST Attribute
name CDATA #REQUIRED
token NMTOKENS #IMPLIED
type CDATA #IMPLIED
action (include | exclude) #REQUIRED
>
Gli attributi dell'elemento Attribute sono definiti secondo quanto riportato di seguito.
• name
Nome dell'attributo in forma logica.
• token
Nome facoltativo o raccolta di nomi che può essere utilizzato per mappare la semantica a questo attributo.
• type
Stringa che specifica il tipo di attributo da includere o escludere. L'unico valore supportato per type è reference.
Se si specifica il name dell'attributo e il relativo tipo come reference il valore dell'attributo viene definito come oggetto di riferimento.
• action
Azione da eseguire per questo attributo.
L'azione, se specificata, è l'impostazione di precedenza più elevata per questo attributo. È possibile omettere action e consentire all'impostazione di precedenza superiore successiva di controllare l'inclusione di questo attributo nell'insieme di attributi.
Gli attributi sono tipi modellati (hard) o attributi soft. Gli attributi soft vengono creati e gestiti tramite i file di Gestione tipi e attributi o del caricatore. Tutti gli attributi vengono identificati da una stringa del nome di attributo definita Logical Form. La forma logica deve essere univoca per il tipo di oggetto poiché identifica in modo univoco l'attributo per quel tipo. Di seguito viene, ad esempio, riportata la mappatura della forma logica di un attributo alla relativa forma esterna:
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
La stringa name in un tipo specificato identifica in modo univoco solo un attributo. Il primo esempio identifica un attributo basato sul modello (attributo aziendale modellato) del tipo wt.part.WTPart. Nel secondo esempio viene identificato un attributo di wt.doc.WTDocument. Il terzo esempio è l'attributo filename del tipo wt.epm.EPMDocument. Nell'ultimo esempio viene dichiarato un'alias per l'attributo precedente. I tipi di oggetto non sono inclusi nella forma esterna dell'attributo.
Esempio:
<Attribute action="include" name="lifeCycleState" token="STATE">
Se si specifica il valore name dell'attributo e il relativo tipo come reference, il valore dell'attributo viene definito come oggetto referenziato e il relativo URI viene trasformato nel payload in modo da poter individuare l'oggetto in Arbortext Content Delivery.
Attribute action="include" name="PartListVersionRef" type=”reference”
Elemento Choice
L'elemento Choice definisce un valore possibile per un attributo. Non influisce sull'inclusione o sull'esclusione dell'attributo nell'insieme di attributi creato. Definisce un intervallo di valori per l'elaborazione a valle. Inoltre, un token o un elenco di token può essere associato a un valore in modo da fornire a tale valore una speciale semantica in un processo a valle. Il contenuto dell'elemento Choice è una stringa che rappresenta un valore possibile per l'elemento Attribute padre.
<!ELEMENT Choice (#PCDATA) >
<!ATTLIST Choice
token NMTOKENS #IMPLIED
>
L'attributo token dell'elemento Choice è definito come nome facoltativo o raccolta di nomi che può essere utilizzato per mappare la semantica a questo valore.
Ad esempio per estendere l'esempio 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>
Calcolo dell'inclusione dell'insieme di attributi
Il file di configurazione AttributeSet è progettato per definire l'insieme di attributi utilizzando azioni esplicite a vari livelli. La forma è Element.attribute_of_element. Di seguito vengono riportati i livelli supportati, in ordine decrescente o precedenza.
• Attribute.action: attributo specifico (Attribute.name) di un tipo di oggetto specifico (Type.name)
• Type.default: tutti gli attributi valore di un tipo di oggetto (Type.name)
• AttributeSet.hard, AttributeSet.soft, AttributeSet.iba e così via: tutti gli attributi di una determinata classe
• AttributeSet.default: tutti gli attributi valore
In generale, più è specifica un'impostazione, più elevato è l'ordine di precedenza dato all'impostazione dell'azione. L'omissione di un'azione per un attributo a un particolare livello indica che è necessario esaminare il successivo livello di precedenza più elevato per verificare se per tale attributo viene fornita un'azione esplicita. Quando viene individuata un'azione esplicita, la ricerca viene arrestata. Se non viene individuata alcuna azione esplicita, viene utilizzato il comportamento di default.
Il comportamento di default del sistema dipende dal contesto. Ad esempio, l'insieme di attributi di default per la localizzazione è diverso dall'insieme di default per la serializzazione. Gli attributi hard inclusi per le strutture pubblicazione sono:
• name
• state.state
• versionIdentifier.versionId
Ad esempio, durante la serializzazione della struttura pubblicazione o della struttura informazioni in un payload, il comportamento di default deve includere tutti gli attributi soft, iba e logical, nonché gli attributi hard.
Serializzazione degli attributi che fanno riferimento ad altri oggetti
Per specificare i metadati per i riferimenti agli oggetti nel payload, è necessario specificare l'attributo name e type dell'elemento Attribute. Esempio:
<Type default="include"
name="com.ptc.arbortext.windchill.siscore.serviceeff.ServiceEffectivity">
<Attribute action="include" name="effContextRef" type="reference" />
</Type>
Gli attributi degli oggetti di riferimento sono inseriti in un file referencedObjects.xml nel payload. Il formato del riferimento viene modificato dal relativo identificatore Windchill in un URI che può essere utilizzato per individuare l'oggetto dopo la pubblicazione in Arbortext Content Delivery.
L'attributo che fa riferimento a un oggetto è rappresentato nel payload in un elemento Property, utilizzando l'attributo token per identificarlo. L'elemento Value presenta un attributo ref che trasforma il riferimento oggetto in un URI per il payload pubblicato in un bundle. Più attributi presentano più voci Value nel payload.
API AttributeSet
Un file di configurazione AttributeSet identifica un insieme di attributi per un oggetto Windchill. L'insieme varia a seconda dell'oggetto selezionato. Non tutti gli oggetti dello stesso tipo dispongono di valori definiti per tutti gli attributi dell'insieme, ma l'insieme è uguale. Le configurazioni sono specifiche del contesto. Ad esempio, sarebbe necessario configurare sia attributi localizable sia publishable utilizzando file XML diversi.
La classe AttributeSet è l'API per uno o più file di configurazione AttributeSet. Il metodo della factory getAttributeSet carica i file che corrispondono al nome del contesto più un'estensione di file .xml definita nell'elenco dei file di configurazione AttributeSet.
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);
}