Creación de componentes personalizados
Tal como se describe en el tema Arquitectura del componente, cada uno de los componentes de ThingWorx Navigate consta de dos subcomponentes, el subcomponente de la interfaz de usuario y el subcomponente de la lógica empresarial. El subcomponente de la lógica empresarial también está formado por dos elementos, la lógica empresarial base y la implementación de lógica empresarial, a los que se hará referencia en este tema como el componente base y la implementación, respectivamente.
De forma estándar, cada componente base se entrega con una o varias implementaciones. Cada implementación está diseñada para mostrar información específica en la interfaz de usuario. Para mostrar información diferente, se puede personalizar el componente mediante la creación de una implementación personalizada. Por ejemplo, de fábrica el componente base Lista de elementos incluye seis implementaciones: Actividad, Elementos afectados, Adjuntos, Planos, Estructura de artículo y Tareas. También se puede crear una implementación personalizada del componente base Lista de elementos, como por ejemplo la Lista de artículos.
La creación de una implementación personalizada para un componente implica extender un componente base existente o una implementación existente y, a continuación, reemplazar los servicios necesarios. En las siguientes secciones se incluyen pasos detallados y un ejemplo.
* 
El método de asignación de versiones para todas las entidades de fábrica es nav.<version number>. Por ejemplo, la versión de todas las configuraciones de componentes de fábrica en 9.3 es nav.1. No utilice este esquema de asignación de versiones cuando cree configuraciones de componentes personalizadas; solo es para uso interno de ThingWorx Navigate.
Creación de una implementación personalizada extendiendo un componente base 
Para crear una implementación personalizada a partir de un componente base existente, realice los pasos siguientes:
1. Elija un componente base existente para utilizarlo como punto de partida para la implementación personalizada. Busque el componente base en la tabla siguiente y observe la plantilla de cosa y el proyecto. Necesitará esta información más tarde.
Componente base
Plantilla de cosa
Proyecto
Atributos
PTC.Nav.AttributesBusinessLogicThingTemplate
PTC.Nav.AttributesBusinessLogicProject
Identidad del elemento
PTC.Nav.ItemIdentityBusinessLogicThingTemplate
PTC.Nav.ItemIdentityBusinessLogicProject
Lista de elementos
PTC.Nav.ItemListBusinessLogicThingTemplate
PTC.Nav.ItemListBusinessLogicProject
Progreso
PTC.Nav.ProgressBusinessLogicThingTemplate
PTC.Nav.ProgressBusinessLogicProject
Mosaicos
PTC.Nav.TilesBusinessLogicThingTemplate
PTC.Nav.TilesBusinessLogicProject
2. Cree un proyecto para la implementación personalizada. En Dependencias del proyecto, introduzca el proyecto indicado en el paso 1. Guarde el proyecto.
3. Cree una plantilla de cosa para la implementación personalizada. En Proyecto, introduzca el proyecto creado en el paso 2. En Plantilla de cosa base, introduzca la plantilla de cosa indicada en el paso 1.
4. Cree una cosa para la implementación personalizada. En Proyecto, introduzca el proyecto creado en el paso 2. En Plantilla de cosa base, introduzca la plantilla de cosa creada en el paso 3.
5. En la cosa que se ha creado, pulse en la ficha Servicios. A continuación, pulse en el icono de lápiz para sustituir el servicio GetImplementationConfigurationVersion y definir una versión para la implementación. Para el valor de la versión, utilice user.version como esquema, donde version puede tener varios niveles delimitados por puntos y user no puede ser nav. Guarde la cosa.
6. Identifique los servicios que se deben sustituir para la implementación personalizada. Para obtener más información sobre los servicios de los componentes de fábrica, busque el tema correspondiente al componente que se está extendiendo en Componentes disponibles y consulte la tabla Servicios de personalización.
7. En la plantilla de cosa que se ha creado, pulse en la ficha Servicios. A continuación, pulse en el icono de lápiz para sustituir los servicios necesarios. Se recomienda sustituir el servicio GetConfigurations antes de sustituir otros servicios.
En el código del servicio GetConfigurations, defina la versión de implementationConfigurationVersion para que coincida con la versión definida de GetImplementationConfigurationVersion en el paso 5. Si se omite este paso, se pueden producir problemas de compatibilidad en las versiones futuras de ThingWorx Navigate.
8. Sustituya los servicios necesarios restantes. Al sustituir un servicio que recibe la configuración como un parámetro, llame primero al servicio Migrate en el código y transfiera las versiones base y de implementación.
Para determinar el valor que se utilizará para targetBaseVersion en el servicio Migrate, ejecute el servicio GetBaseConfigurationVersion en la cosa que se ha creado en el paso 4. No llame al código de servicio GetBaseConfigurationVersion y devuelva su valor.
Al definir targetImplementationVersion en el servicio Migrate, utilice la versión que se ha definido anteriormente en el paso 5.
Consulte el tema Asignación de versiones y migración para obtener más información sobre la llamada al servicio Migrate.
* 
Al sustituir servicios, no se debe llamar ni sustituir los servicios con la categoría PTC.Nav.Private o los servicios marcados como obsoletos.
9. Guarde la plantilla de cosa. La implementación personalizada ya está lista para utilizarla. Para utilizar la implementación, cree un mashup. Añada el componente base para la implementación al mashup y pulse en el icono de engranaje. En el menú desplegable Tipo de configuración, seleccione la configuración que pertenezca a su implementación personalizada.
Creación de una implementación personalizada extendiendo una implementación 
Para crear una implementación personalizada a partir de una implementación existente, realice los pasos siguientes:
1. Elija una implementación existente para utilizarla como punto de partida para la implementación personalizada.
Si se utiliza una implementación de fábrica, se debe buscar en la tabla siguiente e indicar su plantilla de cosa y proyecto, según su versión de ThingWorx Navigate. Necesitará esta información más tarde.
Si se utiliza una implementación personalizada, se debe indicar su plantilla de cosa y proyecto. Necesitará esta información más tarde.
Implementación
Plantilla de cosa
Proyecto
Actividad
PTC.Nav.ActivityBusinessLogicThingTemplate
PTC.Nav.ActivityBusinessLogicProject
Elementos afectados
PTC.Nav.AffectedItemsBusinessLogicThingTemplate
PTC.Nav.AffectedItemsBusinessLogicProject
Adjuntos
PTC.Nav.AttachmentsBusinessLogicThingTemplate
PTC.Nav.AttachmentsBusinessLogicProject
Atributos genéricos
PTC.Nav.AttributesGenericBusinessLogicThingTemplate
PTC.Nav.AttributesGenericBusinessLogicProject
Ficheros de diseño
PTC.Nav.DesignFilesBusinessLogicThingTemplate
PTC.Nav.DesignFilesBusinessLogicProject
Identidad del documento
PTC.Nav.DocumentIdentityBusinessLogicThingTemplate
PTC.Nav.DocumentIdentityBusinessLogicProject
Planos
PTC.Nav.DrawingsListBusinessLogicThingTemplate
PTC.Nav.DrawingsListBusinessLogicProject
Identidad del artículo
PTC.Nav.PartIdentityBusinessLogicThingTemplate
PTC.Nav.PartIdentityBusinessLogicProject
Estructura de artículo
PTC.Nav.PartStructureBusinessLogicThingTemplate
PTC.Nav.PartStructureBusinessLogicProject
Identidad de la tarea
PTC.Nav.TaskIdentityBusinessLogicThingTemplate
PTC.Nav.TaskIdentityBusinessLogicProject
Progreso de la tarea
PTC.Nav.TaskProgressBusinessLogicThingTemplate
PTC.Nav.TaskProgressBusinessLogicProject
Tareas
PTC.Nav.TaskListBusinessLogicThingTemplate
PTC.Nav.TaskListBusinessLogicProject
Mosaicos genéricos
PTC.Nav.TilesGenericBusinessLogicThingTemplate
PTC.Nav.TilesGenericBusinessLogicProject
2. Cree un proyecto para la implementación personalizada. En Dependencias del proyecto, introduzca el proyecto indicado en el paso 1. Guarde el proyecto.
3. Cree una plantilla de cosa para la implementación personalizada. En Proyecto, introduzca el proyecto creado en el paso 2. En Plantilla de cosa base, introduzca la plantilla de cosa indicada en el paso 1.
4. Cree una cosa para la implementación personalizada. En Proyecto, introduzca el proyecto creado en el paso 2. En Plantilla de cosa base, introduzca la plantilla de cosa creada en el paso 3.
5. En la cosa que se ha creado, pulse en la ficha Servicios.
Pulse en el icono de lápiz para sustituir GetBaseMigrationVersion con la convención de versión para la configuración. No utilice el esquema 'nav.<version number>'.
Pulse en el icono de lápiz para sustituir GetImplementationConfigurationVersion con la convención de versión para la configuración. Para el valor de la versión, utilice user.version como esquema, donde version puede tener varios niveles delimitados por puntos y user no puede ser nav.
6. Guarde la cosa.
7. Identifique los servicios que se deben sustituir para la implementación personalizada. Para obtener más información sobre los servicios de los componentes de fábrica, busque el tema correspondiente al componente que se está extendiendo en Componentes disponibles y consulte la tabla Servicios de personalización.
8. En la plantilla de cosa que se ha creado, pulse en la ficha Servicios. A continuación, pulse en el icono de lápiz para sustituir los servicios necesarios. Se recomienda sustituir el servicio GetConfigurations antes de sustituir otros servicios.
* 
Al sustituir el servicio GetConfigurations, no se soporta el cambio de la estructura de configuración con respecto a su estructura de fábrica. Solo se deben cambiar valores de las propiedades JSON individuales. Para obtener más información, consulte el tema Ejemplos de cambios en las propiedades de configuración.
En la configuración, asegúrese de definir el valor de la propiedad implementationConfigurationVersion para que sea el mismo que el valor devuelto por el servicio GetImplementationConfigurationVersion.
9. Sustituya los servicios necesarios restantes. Al sustituir un servicio que recibe la configuración como un parámetro, llame primero al servicio Migrate en el código y transfiera las versiones base y de implementación.
Para determinar la versión base que se debe transferir al servicio Migrate, ejecute el servicio GetBaseConfigurationVersion en la cosa que se ha creado en el paso 4. No llame al servicio GetBaseConfigurationVersion y devuelva su valor.
Para determinar la versión de implementación que se transferirá al servicio Migrate, ejecute el servicio GetImplementationConfigurationVersion en la cosa que se ha creado en el paso 4. No llame al servicio GetImplementationConfigurationVersion y devuelva su valor.
Consulte el tema Asignación de versiones y migración para obtener más información sobre la llamada al servicio Migrate.
* 
Al sustituir servicios, no se debe llamar ni sustituir los servicios con la categoría PTC.Nav.Private o los servicios marcados como obsoletos.
10. Guarde la plantilla de cosa. La implementación personalizada ya está lista para utilizarla. Para utilizar la implementación, cree un mashup. Añada el componente base para la implementación al mashup y pulse en el icono de engranaje. En el menú desplegable Tipo de configuración, seleccione la configuración que pertenezca a su implementación personalizada.
Ejemplo: creación de una implementación de lista de artículos 
En el siguiente ejemplo se muestra cómo crear una implementación personalizada denominada Lista de artículos, que es una implementación del componente base Lista de elementos. Lista de artículos recibe un artículo como entrada y devuelve el primer nivel de artículos que contiene.
* 
La versión de este ejemplo es correcta para ThingWorx Navigate. Si está trabajando con una versión anterior de Navigate, asegúrese de definir los valores de la versión según los pasos de las secciones anteriores.
1. En ThingWorx Composer, cree un nuevo proyecto denominado Demo.PartsListProject. Introduzca PTC.Nav.ItemListBusinessLogicProject en Dependencias del proyecto.
2. Cree una nueva plantilla de cosa denominada Demo.PartsListBusinessLogicThingTemplate. Defina el Proyecto en Demo.PartsListProject y defina la Plantilla de cosa base en PTC.Nav.ItemListBusinessLogicThingTemplate.
3. Cree una cosa denominada Demo.PartsListBusinessLogicThing. Defina el Proyecto en Demo.PartsListProject y defina la Plantilla de cosa base en Demo.PartsListBusinessLogicThingTemplate.
4. Pulse en la ficha Servicios y busque el servicio GetImplementationConfigurationVersion. Pulse en para sustituir el servicio y definir la versión. Utilice el esquema user.version, por ejemplo, defina el valor en 1.0.0 de la siguiente manera:
result = "1.0.0";
Pulse en Terminado. Luego pulse en Guardar para guardar la cosa.
5. Verifique la tabla Servicios de personalización para la Lista de elementos e identifique los servicios que se deben sustituir en la plantilla de cosa. Para esta implementación personalizada, es necesario sustituir tres servicios:
GetConfigurations: este servicio devuelve las configuraciones disponibles para la implementación. Se editará para definir la configuración de Lista de artículos.
GetImplementationLabel: este servicio devuelve el nombre de la implementación tal como aparece en el Mashup Builder. Se definirá para que se muestre el nombre Parts List Demo.
GetItems: este servicio recibe la entrada y la configuración como parámetros y devuelve un JSON en formato CCO con los datos que se muestran en la interfaz de usuario de Lista de elementos. Se definirá para que devuelva las piezas de primer nivel de un artículo determinado, así como los atributos de las piezas de primer nivel.
6. Abra la plantilla de cosa Demo.ItemListBusinessLogicThingTemplate. Pulse en la ficha Servicios.
7. Pulse en para sustituir el servicio GetConfigurations. Pegue el siguiente código en el servicio. Este código incluye una configuración para Lista de artículos que se rotula como Parts List en el Mashup Builder y en la interfaz de usuario de ThingWorx Navigate.
result = {
"partsList": {
"label": "Parts List",
"configuration": {
"selectionType": {
"selectedKey": "single"
},
"waitForInput": {
"value": true
},
"actionBarConfiguration": {
"value": {
"actionBarConfigurationJSON": {
"value": ""
}
}
},
"baseConfigurationVersion": {
"value": "nav.1"
},
"implementationConfigurationVersion": {
"value": "1.0.0"
},
"defaultSortFields": {
"selectedValues": {
"data": [{
"itemListsData": [{
"items": [{
"additionalData": {
"itemListDefaultSortFieldDefinition": {
"defaultSortDirection": {
"selectedKey": "asc"
}
}
},
"id": "Name"
}
],
"objectType": "PTC.ProdMgmt.Part"
}
],
"adapter": {
"instanceName": "windchill",
"thingName": "PTC.WCAdapter"
}
}
]
}
},
"attributes": {
"selectedValues": {
"data": [{
"itemListsData": [{
"items": [{
"id": "Name",
"ordinal": 1
}, {
"id": "State#Display",
"ordinal": 2
}, {
"id": "Version",
"ordinal": 3
}, {
"id": "Number",
"ordinal": 0
}, {
"id": "ID",
"ordinal": 4
}
],
"objectType": "PTC.ProdMgmt.Part"
}
],
"adapter": {
"instanceName": "windchill",
"thingName": "PTC.WCAdapter"
}
}
]
},
"inTailoring": false
},
"label": {
"value": "Parts List"
},
"showExportAction": {
"value": true
},
"enableSearch": {
"additionalData": {
"itemListSearchDefinition": {
"searchHintText": {
"value": "Find"
}
}
},
"value": true
},
"maxNumberOfRowsInGrid": {
"inTailoring": false,
"value": 50
}
}
}
};
A continuación se muestra otro código de ejemplo para GetConfigurations que contiene dos configuraciones en lugar de una. La primera configuración es la misma que en el código anterior. La segunda configuración es para una versión mini de la Lista de artículos. Solo muestra tres atributos y un máximo de cinco filas. Se rotula como Parts List mini en el Mashup Builder y Parts List en la interfaz de usuario de ThingWorx Navigate.
result = {
"partsList": {
"label": "Parts List",
"configuration": {
"selectionType": {
"selectedKey": "single"
},
"waitForInput": {
"value": true
},
"actionBarConfiguration": {
"value": {
"actionBarConfigurationJSON": {
"value": ""
}
}
},
"baseConfigurationVersion": {
"value": "nav.1"
},
"implementationConfigurationVersion": {
"value": "nav.1"
},
"defaultSortFields": {
"selectedValues": {
"data": [{
"itemListsData": [{
"items": [{
"additionalData": {
"itemListDefaultSortFieldDefinition": {
"defaultSortDirection": {
"selectedKey": "asc"
}
}
},
"id": "Name"
}
],
"objectType": "PTC.ProdMgmt.Part"
}
],
"adapter": {
"instanceName": "windchill",
"thingName": "PTC.WCAdapter"
}
}
]
}
},
"attributes": {
"selectedValues": {
"data": [{
"itemListsData": [{
"items": [{
"id": "Name",
"ordinal": 1
}, {
"id": "State#Display",
"ordinal": 2
}, {
"id": "Version",
"ordinal": 3
}, {
"id": "Number",
"ordinal": 0
}, {
"id": "ID",
"ordinal": 4
}
],
"objectType": "PTC.ProdMgmt.Part"
}
],
"adapter": {
"instanceName": "windchill",
"thingName": "PTC.WCAdapter"
}
}
]
},
"inTailoring": false
},
"label": {
"value": "Parts List"
},
"showExportAction": {
"value": true
},
"enableSearch": {
"additionalData": {
"itemListSearchDefinition": {
"searchHintText": {
"value": "Find"
}
}
},
"value": true
},
"maxNumberOfRowsInGrid": {
"inTailoring": false,
"value": 50
}
}
},
"partsListMini": {
"label": "Parts List mini",
"configuration": {
"selectionType": {
"selectedKey": "single"
},
"waitForInput": {
"value": true
},
"actionBarConfiguration": {
"value": {
"actionBarConfigurationJSON": {
"value": ""
}
}
},
"baseConfigurationVersion": {
"value": "nav.1"
},
"implementationConfigurationVersion": {
"value": "1.0.0"
},
"defaultSortFields": {
"selectedValues": {
"data": [{
"itemListsData": [{
"items": [{
"additionalData": {
"itemListDefaultSortFieldDefinition": {
"defaultSortDirection": {
"selectedKey": "asc"
}
}
},
"id": "Name"
}
],
"objectType": "PTC.ProdMgmt.Part"
}
],
"adapter": {
"instanceName": "windchill",
"thingName": "PTC.WCAdapter"
}
}
]
}
},
"attributes": {
"selectedValues": {
"data": [{
"itemListsData": [{
"items": [{
"id": "Name",
"ordinal": 1
}, {
"id": "Version",
"ordinal": 2
}, {
"id": "Number",
"ordinal": 0
}
],
"objectType": "PTC.ProdMgmt.Part"
}
],
"adapter": {
"instanceName": "windchill",
"thingName": "PTC.WCAdapter"
}
}
]
},
"inTailoring": false
},
"label": {
"value": "Parts List"
},
"showExportAction": {
"value": true
},
"enableSearch": {
"additionalData": {
"itemListSearchDefinition": {
"searchHintText": {
"value": "Find"
}
}
},
"value": true
},
"maxNumberOfRowsInGrid": {
"inTailoring": false,
"value": 5
}
}
}
};
Pulse en Terminado después de añadir el código.
8. Sustituya el servicio GetImplementationLabel. Defina la etiqueta de implementación mediante el siguiente código:
result = "Parts List Demo";
Pulse en Terminado.
9. El servicio GetItems recuperará las piezas de primer nivel de Windchill mediante el proceso siguiente:
a. Convierta la parte de atributos de la configuración a la estructura de CCO mediante el servicio ConvertAttributesToCCO que se creará.
b. Pase el JSON resultante en formato CCO al servicio GetRelatedItems en PTC.WCAdapter. Este servicio recupera los datos como objetos UsageLink.
c. Convierta los objetos UsageLink en objetos Part mediante el servicio ConvertUsageLinkToPart que se creará
Antes de sustituir el servicio GetItems, es necesario crear los servicios ConvertAttributesToCCO y ConvertUsageLinkToPart.
10. Cree un nuevo servicio y asígnele el nombre ConvertAttributesToCCO. En Entradas, añada las siguientes entradas:
configuration, que tiene el Tipo base de JSON
attributesPrefix, que tiene el Tipo base de STRING
replaceObjectType, que tiene el Tipo base de STRING
En Salida, seleccione JSON en el menú desplegable.
11. Pegue el siguiente código en el servicio ConvertAttributesToCCO:
let attributesData = configuration.attributes.selectedValues;
attributesPrefix = attributesPrefix || "";
let objectType = replaceObjectType || attributesData.data[0].itemListsData[0].objectType;
attributesData.data[0].itemListsData[0].objectType = objectType;
let items = attributesData.data[0].itemListsData[0].items;
let newItems = [];
let newObj = {};
let hasID = false;
//convert to CCO
for(var i = 0; i < items.length; i++) {
let item = items[i];
if (item.id === 'ID') {
hasID = true;
}
newObj[attributesPrefix + item.id] = {"value":""};
}
//add ID if needed
if (!hasID) {
newObj[attributesPrefix + 'ID'] = {"value":""};
}
newItems.push (newObj);
attributesData.data[0].itemListsData[0].items = newItems;
//create date
var dateValue = new Date();
var y = dateValue.getFullYear();
var mo = dateValue.getMonth()+1;
if(mo<10) {mo='0'+mo;}
var d = dateValue.getDate();
if(d<10) {d='0'+d;}
//create time
var h = dateValue.getHours();
if(h<10) {h='0'+h;}
var mi = dateValue.getMinutes();
if(mi<10) {mi='0'+mi;}
var s = dateValue.getSeconds();
if(s<10) {s='0'+s;}
var ms = dateValue.getMilliseconds();
if(ms<10) {ms='00'+ms;} else {if(ms>=10 && ms<100) {ms='0'+ms;}}
attributesData.timeStamp = y + "-" + mo + "-" + d + " " + h + ":" + mi + ":" + s + "." + ms;
attributesData.version = "";
attributesData.statusMessage = "OK";
attributesData.status = "200";
result = attributesData;
Pulse en Terminado.
12. Cree un nuevo servicio y asígnele el nombre ConvertUsageLinkToPart. En Entradas, añada las siguientes entradas:
usageLinkCCO, que tiene el Tipo base de JSON
En Salida, seleccione JSON en el menú desplegable.
13. Pegue el siguiente código en el servicio ConvertUsageLinkToPart:
let itemListsData = usageLinkCCO.data[0].itemListsData[0];
let tempMetadata = itemListsData.metadata;
let items = itemListsData.items;
//convert metadata
delete tempMetadata.ID;
let newMetadata = {};
for (var key in tempMetadata) {
let newKey = key.replace(/^(Uses\|)/,"");
newMetadata[newKey] = tempMetadata[key];
}
newMetadata['id'] = newMetadata.ID;
itemListsData['metadata'] = newMetadata;
//convert Items
let newItems = [];
for (var i=0 ; i<items.length ; i++) {
let item = items[i];
let newItem = {};
for (key in item) {
let newKey = key.replace(/^(Uses\|)/,"");
newItem[newKey] = item[key];
}
newItem['id'] = newItem.ID;
newItems.push(newItem);
}
itemListsData['items'] = newItems;
itemListsData['objectType'] = 'PTC.ProdMgmt.Part';
//update CCO
let partsListCCO = usageLinkCCO;
partsListCCO.data[0].itemListsData = [itemListsData];
result = partsListCCO;
Pulse en Terminado.
14. Pulse en para sustituir el servicio GetItems. Pegue el siguiente código en el servicio GetItems:
var migratedConfig = me.Migrate({
targetImplementationVersion: "nav.1" /* STRING */,
data: configuration /* JSON */,
migrationType: "Configuration" /* STRING */,
targetBaseVersion: "nav.1" /* STRING */
});
var attributesConfigurationCCO = me.ConvertAttributesToCCO({
configuration:migratedConfig /* JSON */,
attributesPrefix: "Uses|" /* STRING */,
replaceObjectType: "PTC.ProdMgmt.PartUse" /* STRING */
});
// result: JSON
var tempResult = Things["PTC.WCAdapter"].GetRelatedItems({
item: input /* JSON */,
relation: {path:"Uses"} /* JSON */,
attributes: attributesConfigurationCCO /* JSON */
});

var convertedResults = me.ConvertUsageLinkToPart({
usageLinkCCO:tempResult /* JSON */
});
var result = convertedResults;
Pulse en Terminado. Luego pulse en Guardar para guardar la plantilla de cosa.
Ahora la implementación personalizada de Lista de artículos y su configuración se crean y están listas para su uso en el Mashup Builder. Para utilizar la implementación, añada el componente base Lista de elementos a un mashup y pulse en el icono de engranaje. En el menú desplegable Tipo de configuración, seleccione la configuración de Lista de artículos que esté rotulada como Parts Lists Demo - Parts List.
Si se utiliza la lista de artículos para crear el mashup que se muestra en el siguiente vídeo, este es un código adicional:
Código utilizado para configurar el componente Atributos:
{
"layout": {
"selectedKey": "horizontal",
"additionalData": {
"dimensionDefinition": {
"maxHeight": {
"value": 200,
"version": "1.0.0"
},
"maxWidth": {
"value": 200,
"version": "1.0.0"
}
}
},
"version": "1.0.0"
},
"attributes": {
"sets": [{
"data": {
"selectedValues": {
"data": [{
"itemListsData": [{
"items": [{
"id": "ModifiedBy",
"ordinal": 0
}, {
"id": "GatheringPart",
"ordinal": 1
}, {
"id": "Latest",
"ordinal": 2
}, {
"id": "FolderName",
"ordinal": 3
}
],
"objectType": "PTC.ProdMgmt.Part"
}
],
"adapter": {
"instanceName": "windchill",
"thingName": "PTC.WCAdapter"
}
}
]
}
},
"name": ""
}
],
"inTailoring": true,
"filteredValues": {
"data": [{
"itemListsData": [{
"objectType": ""
}
],
"adapter": {
"instanceName": "",
"thingName": ""
}
}
]
},
"version": "1.0.0"
}
}
Código utilizado para el parámetro de entrada del mashup. Asegúrese de añadir un ID de artículo válido:
{
"version": "1.0.0",
"data": [{
"adapter": {
"thingName": "PTC.WCAdapter",
"instanceName": "windchill"
},
"itemListsData": [{
"objectType": "PTC.ProdMgmt.Part",
"items": [{
"id": {
"value": ""
}
}
]
}
]
}
]
}
Tutorial de vídeo: creación de una implementación de lista de artículos
En los dos tutoriales de vídeo siguientes se muestra cómo crear y utilizar la lista de artículos de implementación personalizada. En el primer vídeo se muestra cómo crear la lista de artículos, siguiendo los pasos descritos en el ejemplo anterior. En el segundo vídeo se muestra cómo utilizar la lista de artículos en un mashup. En el ejemplo anterior, se puede encontrar todo el código utilizado en los vídeos.
* 
Se debe tener en cuenta que estos tutoriales se han creado en una versión anterior de ThingWorx Navigate y, como resultado, es posible que sea necesario utilizar diferentes valores de versión que los que se muestran. Siga las versiones, tal como se muestra en este tema, para asegurarse de que todo funciona correctamente.
Asimismo, en el segundo tutorial se añade Lista de elementos al mashup desde la ficha Mashups en el acoplamiento izquierdo, que es como existía en versiones anteriores de Navigate. A partir de Navigate 9.4, la Lista de elementos es un widget, por lo que para añadir una Lista de elementos, vaya a la ficha Widgets en su lugar.
Para ver un vídeo en una ventana más grande, pulse en el título del reproductor. Se abre el vídeo en YouTube en una nueva ficha.
¿Fue esto útil?