Tabelle di configurazione
Le tabelle di configurazione vengono utilizzate per oggetti, modelli di oggetto, thing shape, tabelle dati, stream, stream di valori, timer, scheduler,thing shape industriali, gateway industriali,modelli di mashup, progetti, gruppi di oggetti, notifiche, blog, wiki,gadget,master e mashup per archiviare valori che non cambiano spesso, ad esempio i valori di proprietà. L'uso più comune delle tabelle di configurazione è per memorizzare credenziali e informazioni sull'host per una risorsa esterna. Le tabelle di configurazione non devono essere utilizzate per memorizzare dati dinamici che vengono aggiornati di frequente. Queste informazioni sono definite in modo analogo alle proprietà. Per utilizzare le configurazioni, definire una tabella di configurazione con un nome e una descrizione e indicare se può memorizzare più righe. Analogamente a quanto accade per le proprietà, ad alcuni valori di configurazione sono associati alcuni aspetti.
* 
Durante l'importazione i dati della tabella di configurazione vengono sovrascritti dai valori memorizzati nel file.
È possibile definire una tabella di configurazione utilizzando uno degli elementi riportati di seguito.
Definizione di una tabella di configurazione in Composer
Nelle entità supportate è possibile definire una tabella di configurazione attenendosi alla procedura descritta di seguito.
1. Scegliere Altro > Aggiungi tabella di configurazione.
Viene visualizzata la schermata Aggiungi tabella di configurazione.
2. Immettere un nome per la tabella di configurazione.
I campi dei nomi effettuano la distinzione tra maiuscole e minuscole.
3. Nel campo Descrizione descrivere lo scopo o le funzionalità della tabella di configurazione.
4. Selezionare una data shape per la tabella di configurazione.
La data shape scelta deve avere un campo di chiave principale.
5. Se si desidera che la tabella di configurazione visualizzi più di una riga di dati, selezionare la casella di controllo Consenti più righe.
6. Se l'entità presenta più tabelle di configurazione, è possibile controllarne la posizione immettendo un numero nel campo Ordinale.
Dopo che la tabella di configurazione è stata aggiunta, non è possibile cambiare la posizione.
7. Fare clic su Fine.
La tabella di configurazione viene visualizzata nella pagina Configurazione.
8. Per eliminare una tabella di configurazione, fare clic sul pulsante Elimina.
Definizione di una tabella di configurazione mediante l'aggiunta di annotazioni sulle classi Java
È possibile creare tabelle di configurazione mediante l'aggiunta di annotazioni sulle classi Java. Per ulteriori informazioni, vedere la documentazione API di ThingWorx Platform relativa a com.thingworx.metadata.annotations.ThingworxConfigurationTableDefinition.
Ad esempio, il seguente frammento di codice mostra le definizioni della tabella di configurazione situate sopra la definizione della 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 {
}
Definizione di una tabella di configurazione tramite l'importazione e l'esportazione XML
È inoltre possibile definire tabelle di configurazione su oggetti, modelli di oggetto, thing shape e mashup tramite importazioni XML. L'esempio che segue è una definizione della tabella di configurazione per un'entità esportata come XML.
<ConfigurationTableDefinitions>
<ConfigurationTableDefinition category="TemplateConfigTables"
dataShapeName="MyDS" description="Template Config Table" isHidden="false"
isMultiRow="true" name="ConfigTableOnTemplate" ordinal="2" source="REST"/>
</ConfigurationTableDefinitions>
* 
Le definizioni della tabella di configurazione create dalle annotazioni non vengono visualizzate nell'XML esportato.
Di seguito è riportato un esempio di dati della tabella di configurazione esportati come 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>
Definizione di una tabella di configurazione per oggetti e mashup mediante l'API REST
È possibile aggiungere tabelle di configurazione a oggetti e mashup utilizzando i servizi API REST. Ogni tabella di configurazione è associata a una data shape. La data shape per una tabella di configurazione a più righe deve avere una chiave principale. Una volta salvata la tabella di configurazione, la rispettiva data shape non può essere modificata; tuttavia è possibile apportare modifiche ai campi della data shape. È possibile aggiungere o eliminare un campo nella data shape oppure modificare il tipo di base di un campo. La modifica del tipo di base potrebbe influire sui dati nella tabella di configurazione. Ad esempio, la modifica al tipo di base string in integer, potrebbe causare la perdita dei dati della tabella di configurazione.
L'immagine seguente mostra una definizione della tabella di configurazione mediante i servizi per un oggetto in ThingWorx Composer:
La tabella di configurazione così creata sopra viene visualizzata sotto la pagina Configurazione per l'oggetto in ThingWorx Composer, come segue:
Per aggiungere dati alla tabella di configurazione, aprire l'entità in modalità di modifica e selezionare Aggiungi accanto al nome della tabella di configurazione.
Definizione di una tabella di configurazione per modelli di oggetto e thing shape mediante l'API REST
Per aggiungere tabelle di configurazione a modelli di oggetto e thing shape, è possibile scrivere un servizio su un oggetto che richiama l'API REST AddConfigurationTableDefinition sul modello di oggetto. Di seguito è riportato un esempio di un servizio definito dall'utente (AddConfigTableToTemplate) che aggiunge una tabella di configurazione a un modello di oggetto (MyThingTemplate). Analogamente, è possibile scrivere un servizio per aggiungere una tabella di configurazione a una thing shape.
È possibile aggiungere dati alla tabella di configurazione da ThingWorx Composer o con un servizio simile al seguente:
Ereditarietà delle tabelle di configurazione e dei dati di configurazione
Le tabelle di configurazione e i relativi dati creati sulle entità modello di oggetto e thing shape vengono ereditati implementando un'entità Oggetto. Qualsiasi modifica di definizione apportata alle tabelle di configurazione a livello di modello di oggetto o di thing shape viene propagata agli oggetti che hanno ereditato le tabelle dal modello di oggetto o dalla thing shape.
Una nuova entità Oggetto eredita i dati di configurazione dalle rispettive data shape o dal rispettivo modello di oggetto. Una volta creato, tuttavia, l'oggetto non può più accettare modifiche ai dati delle tabelle ereditate dal modello di oggetto o dalle data shape.
Ad esempio:
ThingTemplateA ha configTable1
ThingShapeA ha configTable2
Viene creato ThingA, che si basa su ThingTemplateA e implementa ThingShapeA.
ThingA eredita configTable1 e configTable2 con i dati rispettivamente dal modello di oggetto e dalla data shape.
Se in ThingTemplateA il valore di configTable1 cambia da singleRow a multiRow, la modifica si riflette in ThingA.
Se invece in ThingTemplateA vengono modificati i dati di configTable1, questa modifica dei dati non viene ereditata da ThingA. ThingA mantiene i dati presenti per configTable1. In ThingA, inoltre, possono essere modificati i dati di configTable1 e configTable2, ma questa modifica dei dati non si propaga al modello di oggetto o alla data shape né agli altri oggetti che hanno ereditato la tabella di configurazione.
È stato utile?