Tablas de configuración
Las tablas de configuración se utilizan para cosas, plantillas de cosa, definiciones de cosa y mashups para almacenar valores, como los valores de propiedad, que no cambian con frecuencia. El uso más común de las tablas de configuración es almacenar las credenciales y la información de host para un recurso externo. Las tablas de configuración no se deben utilizar para almacenar datos dinámicos que se actualizan con frecuencia. Esta información se define de forma similar a las propiedades. Para utilizar configuraciones, se define una tabla de configuración con un nombre y una descripción, y se indica si puede almacenar varias filas. Los valores de configuración son similares a las propiedades y algunos tienen aspectos asociados.
Es posible definir una tabla de configuración mediante una de las siguientes opciones:
Definición de una tabla de configuración en Composer
En una cosa, una plantilla de cosa, una definición de cosa o un mashup, una tabla de configuración se puede definir de la siguiente manera:
1. Elija Más > Añadir tabla de configuración.
Aparece la pantalla Añadir tabla de configuración.
2. Introduzca un nombre para la tabla de configuración.
En los nombres se distingue entre mayúsculas y minúsculas.
3. En el campo Descripción, describa el propósito o la funcionalidad de la tabla de configuración.
4. Seleccione una definición de datos para la tabla de configuración.
La definición de datos elegida debe tener un campo de clave principal.
5. Si desea que en la tabla de configuración se muestren más de una fila de datos, seleccione la casilla Permitir varias filas.
6. Si la cosa, la plantilla de cosa, la definición de cosa o el mashup tiene varias tablas de configuración, se puede controlar su posición introduciendo un número en el campo Ordinal.
No se puede cambiar la posición después de que se haya añadido la tabla de configuración.
7. Pulse en Terminado.
Aparece la tabla de configuración en la página Configuración.
8. Para borrar una tabla de configuración, pulse en el botón Borrar.
Definición de una tabla de configuración mediante la adición de anotaciones en clases Java
Se pueden crear tablas de configuración mediante la adición de anotaciones en clases Java. Para obtener más información, consulte la documentación de API de ThingWorx Platform para com.thingworx.metadata.annotations.ThingworxConfigurationTableDefinition.
Por ejemplo, en el siguiente fragmento de código se muestra la configuración de las definiciones de tabla que se encuentran encima de la definición de clase:
@ThingworxConfigurationTableDefinitions(tables = {
@ThingworxConfigurationTableDefinition(
name="ConfigTableExample1",
description="Example 1 config table", isMultiRow=false,
dataShape = @ThingworxDataShapeDefinition( fields = {
@ThingworxFieldDefinition(name="field1",
description="",baseType="STRING"),
@ThingworxFieldDefinition(name="field2",
description="",baseType="NUMBER"),
@ThingworxFieldDefinition(name="field3",
description="",baseType="BOOLEAN"),
@ThingworxFieldDefinition(name="field4",
description="",baseType="USERNAME"),
} ) ),
@ThingworxConfigurationTableDefinition(
name="ConfigTableExample2",
description="Example 2 config table", isMultiRow=true,
dataShape = @ThingworxDataShapeDefinition( fields = {
@ThingworxFieldDefinition(name="columnA",
description="",baseType="STRING"),
@ThingworxFieldDefinition(name="columnB",
description="",baseType="NUMBER"),
@ThingworxFieldDefinition(name="columnC",
description="",baseType="BOOLEAN"),
@ThingworxFieldDefinition(name="columnD",
description="",baseType="USERNAME"),
} ) )
})
public class GoodByeThing extends Thing {
}
Definición de una tabla de configuración a través de la importación/exportación de XML
También se pueden definir tablas de configuración en cosas, plantillas de cosa, definiciones de cosa y mashups a través de importaciones de XML. El siguiente ejemplo es una definición de tabla de configuración para una entidad exportada como XML:
<ConfigurationTableDefinitions>
<ConfigurationTableDefinition category="TemplateConfigTables"
dataShapeName="MyDS" description="Template Config Table" isHidden="false"
isMultiRow="true" name="ConfigTableOnTemplate" ordinal="2" source="REST"/>
</ConfigurationTableDefinitions>
* 
Las definiciones de tabla de configuración creadas por anotaciones no aparecen en el XML exportado.
A continuación, se muestra un ejemplo de datos de tabla de configuración exportados como XML:
<ConfigurationTables>
<ConfigurationTable description="Template Config Table"
isMultiRow="true" name="ConfigTableOnTemplate" ordinal="2">
<DataShape>
<FieldDefinitions>
<FieldDefinition aspect.isPrimaryKey="true" aspect.tagType="ModelTags" baseType="STRING" description="" name="p1" ordinal="1"/>
<FieldDefinition aspect.isPrimaryKey="true" aspect.tagType="ModelTags" baseType="STRING" description="" name="p2" ordinal="2"/>
<FieldDefinition aspect.isPrimaryKey="true" aspect.tagType="ModelTags" baseType="STRING" description="" name="p3" ordinal="3"/>
</FieldDefinitions>
</DataShape>
<Rows>
<Row>
<p1>
<![CDATA[1]]>
</p1>
<p2>
<![CDATA[2]]>
</p2>
<p3>
<![CDATA[3]]>
</p3>
</Row>
</Rows>
</ConfigurationTable>
</ConfigurationTables>
Definición de una tabla de configuración para cosas y mashups mediante la API de REST
Se pueden añadir tablas de configuración a cosas y mashups mediante los servicios de API de REST. Cada tabla de configuración está asociada con una definición de datos. La definición de datos para una tabla de configuración de varias filas debe tener una clave principal. Una vez guardada la tabla de configuración, no se puede cambiar su definición de datos; sin embargo, se pueden realizar cambios en los campos de definición de datos. Se puede añadir o borrar un campo de la definición de datos o cambiar el tipo base de un campo. El cambio del tipo base puede afectar a los datos de la tabla de configuración. Por ejemplo, si se cambia un tipo base string a integer se puede provocar la pérdida de datos de la tabla de configuración.
En la imagen siguiente, se muestra una definición de tabla de configuración mediante servicios en una cosa en ThingWorx Composer:
La tabla de configuración creada anteriormente aparece en la página Configuración de la cosa en ThingWorx Composer de la siguiente manera:
Para añadir datos a la tabla de configuración, abra la entidad en el modo Edición y seleccione Añadir junto al nombre de la tabla de configuración.
Definición de una tabla de configuración para plantillas de cosa y definiciones de cosa mediante la API de REST
Para añadir tablas de configuración a plantillas de cosa y definiciones de cosa, se puede escribir un servicio en una cosa que invoque la API de REST AddConfigurationTableDefinition en la plantilla de cosa. A continuación, se muestra un ejemplo de un servicio definido por el usuario (AddConfigTableToTemplate) que añade una tabla de configuración a una plantilla de cosa (MyThingTemplate). De manera similar, se puede escribir un servicio para añadir una tabla de configuración a una definición de cosa.
Se pueden añadir datos a la tabla de configuración desde ThingWorx Composer o con un servicio como el siguiente:
Herencia de tabla de configuración y datos de configuración
Las tablas de configuración y sus datos que se crean en entidades de plantilla de cosa y forma de cosa se heredan mediante la implementación de una entidad de cosa. Los cambios de definición que se realizan en las tablas de configuración en el nivel de plantilla de cosa o de definición de cosa se propagan a las cosas que heredan las tablas de su plantilla de cosa o de definición de cosa.
Una entidad de cosa nueva hereda los datos de configuración de las definiciones de datos o la plantilla de cosa. Sin embargo, una vez creada la cosa, ya no puede aceptar cambios de datos en las tablas heredadas de su plantilla de cosa o definiciones de datos.
Por ejemplo:
ThingTemplateA tiene configTable1
ThingShapeA tiene configTable2
Se crea ThingA, que se basa en ThingTemplateA e implementa ThingShapeA.
ThingA heredará configTable1 y configTable2 con datos de su plantilla de cosa y definición de datos, respectivamente.
Si ThingTemplateA cambia configTable1 de singleRow a multiRow, ThingA reflejará el cambio.
Pero si ThingTemplateA cambia los datos de configTable1, ThingA no hereda los cambios de datos. ThingA conserva los datos que tiene para configTable1. ThingA también puede cambiar los datos de configTable1 y configTable2, y el cambio de los datos no se aplica en cascada a la plantilla de cosa ni la definición de datos, ni a otras cosas que han heredado esta tabla de configuración.