Tables de configuration
Les tables de configuration sont utilisées pour les objets, les modèles d'objet, les formes d'objet et les applications composites aux fins du stockage de valeurs, telles que les valeurs de propriété, qui ne sont pas souvent modifiées. Elles servent le plus souvent au stockage des informations d'identification et des données d'hôte d'une ressource externe. Les tables de configuration ne doivent pas être utilisées pour stocker des données dynamiques qui sont mises à jour fréquemment. La définition de ces informations est similaire à celle des propriétés. Pour utiliser des configurations, définissez une table de configuration avec un nom et une description, et indiquez si elle peut stocker plusieurs lignes. Tout comme les propriétés, certaines valeurs de configuration ont des aspects qui leur sont associés.
Vous pouvez définir une table de configuration de plusieurs façons :
au moyen d' annotations Java ;
à l'aide de l' API REST.
Définition de tables de configuration dans Composer
Sur un objet, un modèle d'objet, une forme d'objet ou une application composite, vous pouvez définir une table de configuration en procédant comme suit :
1. Choisissez Plus > Ajouter une table de configuration.
L'écran Ajouter une table de configuration s'affiche.
2. Donnez un nom à votre table de configuration.
Les noms sont sensibles à la casse.
3. Dans le champ Description, décrivez l'objectif ou la fonctionnalité de la table de configuration.
4. Sélectionnez une forme de données pour la table de configuration.
La forme de données choisie doit posséder un champ de clé primaire.
5. Si vous souhaitez que la table de configuration affiche plusieurs lignes de données, cochez la case Autoriser plusieurs lignes.
6. Si l'objet, le modèle d'objet, la forme d'objet ou l'application composite comporte plusieurs tables de configuration, vous pouvez contrôler leur position en entrant une valeur dans le champ Ordinal.
Une fois qu'une table de configuration a été ajoutée, sa position ne peut plus être modifiée.
7. Cliquez sur Terminé.
La table de configuration s'affiche sur la page Configuration.
8. Pour supprimer une table de configuration, cliquez sur le bouton Supprimer.
Définition de tables de configuration par ajout d'annotations sur des classes Java
Vous pouvez créer des tables de configuration en ajoutant des annotations sur des classes Java. Pour plus d'informations, consultez la documentation de l'API de ThingWorx Platform pour com.thingworx.metadata.annotations.ThingworxConfigurationTableDefinition.
Par exemple, l'extrait de code suivant montre les définitions de table de configuration situées au-dessus de la définition de classe :
@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 {
}
Définition de tables de configuration par importation/exportation de données XML
Vous pouvez également définir des tables de configuration sur vos objets, modèles d'objet, formes d'objet et applications composites par importation de données XML. L'exemple suivant montre une définition de table de configuration pour une entité exportée en XML :
<ConfigurationTableDefinitions>
<ConfigurationTableDefinition category="TemplateConfigTables"
dataShapeName="MyDS" description="Template Config Table" isHidden="false"
isMultiRow="true" name="ConfigTableOnTemplate" ordinal="2" source="REST"/>
</ConfigurationTableDefinitions>
* 
Les définitions de table de configuration créées au moyen d'annotations n'apparaissent pas dans le XML exporté.
Voici un exemple de données de table de configuration exportées au format 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>
Définition de tables de configuration pour vos objets et applications composites à l'aide de l'API REST
Vous pouvez ajouter des tables de configuration sur des objets et des applications composites à l'aide des services de l'API REST. Chaque table de configuration est associée à une forme de données. La forme de données d'une table de configuration à plusieurs lignes doit posséder une clé primaire. Une fois la table de configuration enregistrée, sa forme de données ne peut plus être modifiée. Néanmoins, vous avez la possibilité de modifier les champs de la forme de données. Vous pouvez ajouter ou supprimer un champ dans la forme de données ou modifier le type de base d'un champ. La modification du type de base peut avoir une incidence sur les données de la table de configuration. Par exemple, le fait de passer d'un type de base string à un type de base integer peut entraîner une perte de données dans la table de configuration.
La capture d'écran suivante montre une définition de table de configuration utilisant des services sur un objet dans ThingWorx Composer :
La table de configuration créée ci-dessus s'affiche sur la page Configuration de l'objet dans ThingWorx Composer, comme suit :
Pour ajouter des données à la table de configuration, ouvrez l'entité en mode édition, puis cliquez sur Ajouter en regard du nom de la table de configuration.
Définition de tables de configuration pour vos modèles d'objet et formes d'objet à l'aide de l'API REST
Pour ajouter des tables de configuration sur des modèles d'objet et des formes d'objet, vous pouvez écrire un service sur un objet qui appelle l'API REST AddConfigurationTableDefinition sur le modèle d'objet. Voici un exemple de service défini par l'utilisateur (AddConfigTableToTemplate) qui ajoute une table de configuration à un modèle d'objet (MyThingTemplate). De même, vous pouvez écrire un service permettant l'ajout d'une table de configuration sur une forme d'objet.
Vous pouvez ajouter des données à la table de configuration dans ThingWorx Composer ou à l'aide d'un service similaire à celui-ci :
Héritage des tables de configuration et des données de configuration
Les tables de configuration et leurs données que vous créez sur vos entités modèles d'objet et formes d'objet sont héritées lors de l'implémentation d'une entité objet. Toute modification de définition apportée aux tables de configuration d'un modèle d'objet ou d'une forme d'objet se répercute sur les objets qui ont hérité des tables de leur modèle d'objet ou forme d'objet.
Une nouvelle entité objet hérite des données de configuration de ses formes de données ou de son modèle d'objet. Toutefois, une fois l'objet créé, il ne peut plus accepter les modifications de données apportées aux tables hérités de son modèle d'objet ou de ses formes de données.
Par exemple :
ModèleObjetA utilise tableConfig1.
FormeObjetA utilise tableConfig2.
ObjetA est créé ; l'objet est basé sur ModèleObjetA et implémente FormeObjetA.
ObjetA hérite de tableConfig1 et de tableConfig2, avec les données de son modèle d'objet et de sa forme de données, respectivement.
Si ModèleObjetA modifie sa tableConfig1 de singleRow à multiRow, ObjetA reflètera cette modification.
Mais si ModèleObjetA modifie les données de tableConfig1, alors ObjetA n'hérite pas de cette modification des données. ObjetA conserve les données dont il dispose pour tableConfig1. Par ailleurs, si ObjetA modifie les données de ses tables tableConfig1 et tableConfig2, ces modifications ne sont remontées ni à son modèle d'objet, ni à sa forme de données, ni à aucun autre objet ayant hérité de ces tables de configuration.