Definición de conjuntos de atributos
Ficheros de configuración AttributeSet
La definición de markup de AttributeSet soporta la capacidad de definir el comportamiento de include o exclude por defecto para cada clase de atributo. Los ficheros de configuración AttributeSet se encuentran en:
<Windchill-path>\codebase\com\ptc\arbortext\windchill\siscore\attset\xml
Al definir un conjunto de atributos en un fichero de configuración, asegúrese de agrupar todos los atributos de un único tipo.
Hay varios ficheros de configuración disponibles:
• localizable_attset.xml
Se define el conjunto de atributos que se enviará en un fichero XLIFF para su traducción. Por ejemplo, dos secciones del fichero identifican el atributo 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
Se define un conjunto de atributos para enviar como metadatos en el manifiesto. Por ejemplo, una sección del fichero identifica los atributos de las listas de artículos:
<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
Se define el conjunto de atributos para enviar como metadatos a Arbortext Publishing Engine para su publicación. Por ejemplo, una sección del fichero identifica los atributos de una estructura de publicación:
<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>
Los atributos de tipo enumerado de Windchill se publican como metadatos del objeto. En el ejemplo siguiente, el tipo enumerado es la clave ”INWORK”, mientras que el valor In Work es el nombre:
<Property token="lifeCycleState">
<Value key="INWORK">In Work</Value>
</Property>
En el fragmento del fichero, el atributo de identificación refleja el nombre y el tipo enumerado lifeCycleState, donde el atributo token asociado especifica en realidad el nombre de la clase Java completo del tipo enumerado (en este caso, wt.lifecycle.State).
Se pueden especificar atributos de categoría de la clasificación de artículos. Si se hace así, los atributos de clasificación hijo se incluyen o se excluyen automáticamente. Se puede excluir el propio atributo de clasificación principal para excluir todos los atributos hijo asociados con la clasificación. Para obtener más información sobre los atributos de clasificación, consulte
Clasificación de artículos en Windchill.
|
En publishable_attset.xml, no cambie ni elimine ninguna acción include del atributo de thePersistInfo.modifyStamp y thePersistInfo.updateStamp. Estas se especifican en el fichero y se utilizan en los paquetes para Arbortext Content Delivery.
Si se implementa un subtipo personalizado, estas declaraciones deben añadirse a la especificación.
|
• referencedObjects_attset.xml
Se define el conjunto de atributos que hacen referencia a otros objetos en Windchill que se deben incluir en referencedObjects.xml en un paquete. Por ejemplo, en una sección del fichero se identifican los atributos de documentos dinámicos (un subtipo de 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 atributo que hace referencia a otro objeto debe definirse explícitamente para ser tratado como un atributo de referencia.
• publishinfo_attset.xml
Permite definir un conjunto de atributos que se incluirán o excluirán en el fichero publishinfo.xml de carga útil relativa a la estructura de servicio que se publica. Por ejemplo, por defecto, en el fichero se define que las estructuras de publicación y estructuras de información (identificadas por su tipo) incluirán el nombre, el número y el nombre de la organización para la estructura que se publica:
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>
Puede mantener versiones personalizadas de estos ficheros siguiendo las recomendaciones de
Setting Up a Directory Structure for Managing Customized Files and Text Tailoring (Configuración de una estructura de directorio para gestionar ficheros personalizados y ajuste de textos) y
Best Practices for Customizing Files Supplied by PTC (Prácticas recomendadas para personalizar los ficheros suministrados por PTC).
Comando de actualización AttributeSet
Puede que los cambios realizados en un fichero de conjunto de atributos no se carguen inmediatamente, por ejemplo, si se está esperando la ejecución de un trabajo de publicación actualizado. Después de realizar cambios en un fichero de configuración de conjunto de atributos, reinicie el servidor en el shell de Windchill para que los cambios surtan efecto.
Si no es posible reiniciar Windchill inmediatamente, se puede borrar manualmente la caché en su lugar:
1. Abra una shell de Windchill.
2. Introduzca el siguiente comando:
windchill com.ptc.arbortext.windchill.publisher.cmdline.
CleanCacheAttibuteSet
El comando despejará la caché y los cambios se procesarán más rápidamente.
Categorías de atributos de Windchill
• LWCIBAAttDefinition: atributos basados en instancias o IBA
• LWCHardAttDefinition: atributos modelados o modelizados
• LWCLogicalAttDefinition: atributos lógicos
• LWCNonPersistedAttDefinition: atributos no almacenados
• LWCFlexAttDefinition: atributos simplificados (previamente denominados atributos flexibles)
• LWCAttributeSetAttDefinition: conjuntos de atributos
Atributos de tipo aplicables a estructuras
En la siguiente tabla se muestra una lista de atributos de tipo que se pueden personalizar:
Nombre y tipo
|
Forma lógica (no el nombre del tipo completo)
|
Descripción
|
Artículo, nodo de la estructura
|
wt.part.WTPart
|
Artículo (modelado)
|
Base de información, nodo de la estructura
|
com.ptc.sis.Base
|
Tipo base abstracto derivado de WTPart para todos los objetos de estructuras de publicación y estructuras de información.
|
Base de división, nodo de la estructura
|
com.ptc.sis.BaseDiv
|
Clase base abstracta para los tipos de división utilizados en la estructura de publicación y la estructura de información.
|
Estructura de la publicación, nodo de la estructura
|
com.ptc.sis.PsRoot
|
Objeto de raíz de la estructura de publicación.
|
Sección de publicación, nodo de la estructura
|
com.ptc.sis.PsSection
|
Divisiones o secciones de una estructura de publicación.
|
Estructura de información, nodo de la estructura
|
com.ptc.sis.IsRoot
|
Objeto de raíz de la estructura de información.
|
Grupo de información, nodo de la estructura
|
com.ptc.sis.IsGroup
|
División o sección de la estructura de información.
|
Base de contenido, nodo de la estructura
|
com.ptc.arbortext.sis.Content
|
Base abstracta de referencias de contenido y nodos especiales.
|
Soporte de contenido, nodo de referencia
|
com.ptc.sis.ContentRef
|
Referencia genérica a los ficheros de contenido.
|
Titular de la ilustración, nodo de referencia
|
com.ptc.sis.IllustrationRef
|
Referencia a un documento dinámico gráfico.
|
Contenedor de la lista de artículos, nodo de referencia
|
com.ptc.sis.PartsListRef
|
Referencia a un objeto de la lista de artículos.
|
Soporte de contenido textual, nodo de referencia
|
com.ptc.sis.TextualContentRef
|
Referencia a un documento dinámico (XML, PDF, texto, etc.).
|
Base especial, nodo de la estructura
|
com.ptc.sis.PsSpecial
|
Base abstracta que representa los marcadores de texto generados.
|
Tabla de contenido, nodo de la estructura
|
com.ptc.sis.PsToc
|
Marcador de una estructura de publicación que indica dónde aparecerá una tabla de contenido.
|
Índice, nodo de la estructura
|
com.ptc.sis.PsIndex
|
Marcador de una estructura de publicación que indica dónde aparecerá un índice.
|
Vínculo de uso de la información, objeto de referencia
|
com.ptc.sis.BaseUsageLink
|
Vínculo entre dos nodos de base utilizados para crear estructuras de Windchill Service Information Manager (modeladas).
|
Vínculo de uso del artículo, objeto de referencia
|
wt.part.WTPartUsageLink
|
Vínculo entre dos nodos de WTPart utilizados para crear estructuras (modeladas).
|
Lista de artículos, objeto de referencia
|
com.ptc.arbortext.windchill.partlist.PartList
|
Contenedor de la lista de artículos para los elementos de la lista de artículos (modelados).
|
Elemento de la lista de artículos, objeto de referencia
|
com.ptc.arbortext.windchill.partlist.PartListItem
|
Elemento de la lista de artículos que está vinculado a un artículo real (modelado).
|
EPMDocument, objeto al que se hace referencia
|
wt.epm.EPMDocument
|
Cualquier EPMDocument. Tipo base de DynamicDocument (modelado).
|
DynamicDocument, objeto al que se hace referencia
|
com.ptc.ptcnet.DynamicDocument
|
Documento dinámico de Arbortext con contenido textual o gráfico.
|
Xliff Link, objeto al que se hace referencia
|
com.ptc.sis.XliffLink
|
Vínculo a un documento de traducción.
|
Elemento AttributeSet
Define la acción por defecto de todos los atributos de objeto o clases de atributos específicas. Los elementos Type hijo permiten la sustitución del comportamiento por defecto de los tipos 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
>
Los atributos del elemento AttributeSet se definen del siguiente modo:
• default
Acción por defecto de todos los atributos no incluidos o excluidos por medio de pruebas más específicas.
• hard
Acción por defecto de todos los atributos hard (LWCHardAttDefinition) no incluidos o excluidos por medio de pruebas más específicas.
• soft
Acción por defecto de todos los atributos soft (LWCFlexAttDefinition) no incluidos o excluidos por medio de pruebas más específicas.
• iba
Acción por defecto de todos los atributos iba (LWCIBAAttDefinition) no incluidos o excluidos por medio de pruebas más específicas.
• logical
Acción por defecto de todos los atributos logical (LWCLogicalAttDefinition) no incluidos o excluidos por medio de pruebas más específicas.
• classification
Acción por defecto de todos los atributos
classification no incluidos o excluidos por medio de pruebas más específicas. Si no está presente, se utiliza el valor del atributo
iba. Para obtener más información sobre estos atributos, consulte
Atributos de clasificación.
• nonPersisted
Acción por defecto de todos los atributos nonPersisted (LWCNonPersistedAttDefinition) no incluidos o excluidos por medio de pruebas más específicas.
• set
Acción por defecto de todos los atributos set (LWCAttributeSetAttDefinition) no incluidos o excluidos por medio de pruebas más específicas.
Por ejemplo:
<AttributeSet xmlns="http://www.ptc.com" default="exclude"
iba="include" soft="include" logical="include">
Elemento Type
El elemento Type permite definir los atributos de Windchill en include o exclude para cualquier objeto que implemente la interfaz Persistable, que permite la lectura y escritura de objetos de la base de datos. Los tipos son modelados (modelizados) o subtipos en función de si se trata de un tipo modelado u otro subtipo. Los subtipos se crean y administran mediante el Administrador de tipos y atributos o los ficheros del cargador.
<!ELEMENT Type ( Attribute* )>
<!ATTLIST Type
name CDATA #REQUIRED
token NMTOKENS #IMPLIED
default (include | exclude) #IMPLIED
>
Los atributos del elemento Type se definen como se indica a continuación.
• name
Forma lógica de un tipo simplificado o modelado. Los atributos de clasificación se identifican con los valores de name que empiezan por "@".
• token
Nombre o colección de nombres opcional que se puede utilizar para asignar la semántica a este tipo.
• default
Acción por defecto para excluir o incluir todos los atributos de este tipo que carezcan de un parámetro más específico.
Todos los tipos se identifican por medio de una cadena de nombre de tipo denominada Logical Form (conocida también como LogicalID). La forma lógica debe ser única en el nivel del sitio, ya que identifica de manera exclusiva el tipo. Por ejemplo (omita el salto de línea):
com.ptc.ptcnet.DynamicDocument =>
WCTYPE|wt.epm.EPMDocument|com.ptc.ptcnet.DynamicDocument
wt.part.WTPart => WCTYPE|wt.part.WTPart
El primer ejemplo es el nombre del subtipo DynamicDocument de EPMDocument, mientras que el segundo es el nombre del tipo modelado wt.part.WTPart. Las formas lógicas se asignan al formulario externo del tipo. En el caso de un tipo modelado, el nombre de clase Java del objeto lleva el prefijo WCTYPE|. En el caso de un subtipo, se trata del nombre del tipo base (simplificado o modelizado) seguido de una barra vertical | y del nombre del tipo definido por el usuario. La forma lógica suele coincidir con el último segmento del formulario externo. Sin embargo, puede definir su propia forma lógica, siempre que sea única.
Por ejemplo:
<Type name="com.ptc.sis.PsRoot">
Elemento Attribute
El elemento Attribute especifica principalmente si se debe utilizar include o exclude para un atributo de Windchill específico del conjunto de atributos. También se utiliza para definir la semántica de un atributo o sus valores.
<!ELEMENT Attribute ( Choice* )>
<!ATTLIST Attribute
name CDATA #REQUIRED
token NMTOKENS #IMPLIED
type CDATA #IMPLIED
action (include | exclude) #REQUIRED
>
Los atributos del elemento Attribute se definen como se indica a continuación.
• name
Nombre de atributo en forma lógica.
• token
Nombre o colección de nombres opcional que se puede utilizar para asignar la semántica a este atributo.
• type
Cadena que especifica el tipo de atributo que se va a incluir o excluir. El único valor soportado para type es reference.
Al especificar el name del atributo y su tipo como reference, se define el valor del atributo como un objeto de referencia.
• action
Acción que se llevará a cabo para este atributo.
La acción, si se especifica, es el parámetro de máxima prioridad para este atributo. Es posible omitir action y permitir que el siguiente parámetro de prioridad superior controle la inclusión de este atributo en el conjunto de atributos.
Los atributos son tipos modelados (modelizados) o atributos simplificados. Los atributos simplificados se crean y administran mediante el Administrador de tipos y atributos o los ficheros del cargador. Todos los atributos se identifican por medio de una cadena de nombre de atributo denominada Logical Form. La forma lógica debe ser única para el tipo de objeto, ya que identifica de manera exclusiva el atributo de dicho tipo. Por ejemplo, los parámetros siguientes asignan la forma lógica de un atributo a su formulario externo:
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 cadena name de un tipo determinado identifica de manera exclusiva un solo atributo. El primer ejemplo identifica un atributo basado en el modelo (MBA) del tipo wt.part.WTPart. En el segundo ejemplo se identifica un atributo de wt.doc.WTDocument. El tercer ejemplo es el atributo filename del tipo wt.epm.EPMDocument. En el último ejemplo se declara un alias para el atributo anterior. Los tipos de objeto no están incluidos en el formulario externo del atributo.
Por ejemplo:
<Attribute action="include" name="lifeCycleState" token="STATE">
Al especificar el name del atributo y su tipo como reference, el valor del atributo se define como un objeto de referencia y su URI se transforma en la carga útil para que el objeto se pueda buscar en Arbortext Content Delivery.
Attribute action="include" name="PartListVersionRef" type=”reference”
Elemento Choice
El elemento Choice define un valor posible para un atributo. No afecta a la inclusión ni a la exclusión del atributo en el conjunto de atributos que se está creando. Define un intervalo de valores para el procesamiento descendente. Además, es posible asociar un token o una lista de tokens a un valor para asignar a dicho valor una semántica especial en el proceso descendente. El contenido del elemento Choice es una cadena que representa un valor posible para el elemento Attribute padre.
<!ELEMENT Choice (#PCDATA) >
<!ATTLIST Choice
token NMTOKENS #IMPLIED
>
El atributo token del elemento Choice está definido como un nombre o una colección de nombres opcional que se puede utilizar para asignar la semántica a dicho valor.
Por ejemplo, para ampliar el ejemplo de 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>
Cálculo de la inclusión del conjunto de atributos
El fichero de configuración AttributeSet está diseñado para definir el conjunto de atributos mediante acciones explícitas en distintos niveles. La forma es Element.attribute_of_element. Los niveles soportados son los siguientes, con orden o prioridad descendente.
• Attribute.action: atributo (Attribute.name) específico de un tipo de objeto (Type.name) concreto
• Type.default: todos los atributos de valor de un tipo de objeto (Type.name)
• AttributeSet.hard, AttributeSet.soft, AttributeSet.iba, etc.: todos los atributos de una clase determinada
• AttributeSet.default: todos los atributos de valor
En general, cuanto más específico es un parámetro, más alta es la prioridad de la configuración de la acción. Si se omite una acción para un atributo en un nivel específico, el siguiente nivel superior de prioridad deberá examinarse para determinar si se ha proporcionado una acción explícita para dicho atributo. La búsqueda de una acción explícita se detiene cuando se encuentra una. Si no se encuentra ninguna acción explícita, se utiliza el comportamiento por defecto.
El comportamiento por defecto del sistema depende del contexto. Por ejemplo, el conjunto de atributos por defecto para la localización es distinto del conjunto por defecto utilizado para la serialización. Los atributos modelizados incluidos para las estructuras de publicación son:
• name
• state.state
• versionIdentifier.versionId
Por ejemplo, al serializar la estructura de publicación o la estructura de información en una carga útil, el comportamiento por defecto es la inclusión de todos los atributos soft, iba y logical, así como los atributos modelizados.
Serialización de atributos que hacen referencia a otros objetos
Para especificar los metadatos de referencias a objetos en la carga útil, deben especificarse los atributos name y type del elemento Attribute. Por ejemplo:
<Type default="include"
name="com.ptc.arbortext.windchill.siscore.serviceeff.ServiceEffectivity">
<Attribute action="include" name="effContextRef" type="reference" />
</Type>
Los atributos de objetos de referencia se colocan en un fichero referencedObjects.xml en la carga útil. El formulario de la referencia se cambia de su identificador de Windchill a un URI que se pueda utilizar para buscar el objeto después de su publicación en Arbortext Content Delivery.
El atributo que hace referencia a un objeto se representa en la carga útil de un elemento Property mediante el atributo token para identificarlo. El elemento Value tiene un atributo ref que transforma la referencia del objeto en un URI para la carga útil que se está publicando en un paquete. Varios atributos tendrán varias entradas de Value en la carga útil.
API de AttributeSet
Un fichero de configuración AttributeSet identifica un conjunto de atributos de un objeto Windchill. El conjunto varía en función del objeto seleccionado. No todos los objetos del mismo tipo tienen valores definidos para todos los atributos del conjunto, pero el conjunto es el mismo. Las configuraciones son específicas del contexto. Por ejemplo, debería configurar ambos atributos localizable y publishable utilizando distintos ficheros XML.
La clase AttributeSet es la API de uno o más ficheros de configuración AttributeSet. El método de fábrica getAttributeSet carga ficheros que coincidan con el nombre del contexto que presenten la extensión de fichero .xml según se haya definido en la lista de ficheros de configuración 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);
}