Proprietà degli oggetti
Le proprietà degli oggetti sono utilizzate per descrivere i punti di dati correlati a un oggetto. Ad esempio, un cliente può avere una proprietà nome e una proprietà indirizzo. Un camion può avere le seguenti proprietà: autista, capacità e posizione.
Le proprietà sono un modo pratico e semplice per conoscere le condizioni correnti di un oggetto. Le proprietà possono essere statiche, ad esempio produttore e numero di modello, o dinamiche, ad esempio temperatura. Le proprietà sono configurate in base a struttura degli asset, processi aziendali e soluzioni da realizzare.
Quando si crea una proprietà, è possibile selezionare una delle tipologie di associazione seguenti:
Nessuno
Una proprietà per un oggetto locale. Questa è l'impostazione di default.
Associata localmente
Collega la proprietà a una proprietà definita in un oggetto diverso sul server ThingWorx. Questa proprietà può essere impostata in modalità di sola lettura, ma può comunque ricevere un valore da un'altra proprietà sul server. Questa impostazione non è utilizzata per i dispositivi remoti, a meno che non si crei un'associazione locale a una proprietà associata in remoto.
Associata in remoto
Quando un dispositivo remoto si connette per la prima volta a un server ThingWorx, il server associa il dispositivo remoto all'oggetto corrispondente. Una volta associato il dispositivo remoto, è necessario creare un'associazione remota tra ciascuna proprietà definita nel dispositivo remoto e l'oggetto remoto che rappresenta il dispositivo in ThingWorx. ThingWorx utilizza questa associazione per inviare e ricevere aggiornamenti per ogni valore di proprietà di un dispositivo remoto tramite una connessione WebSocket attiva.
* 
Se un oggetto locale e un oggetto remoto hanno una proprietà con lo stesso nome e un'altra proprietà è associata all'impostazione della proprietà remota, la proprietà remota imposta anche il valore della proprietà locale.
* 
Per informazioni sull'impostazione delle associazioni di proprietà, sia locali che remote, vedere Gestione delle associazioni di proprietà.
Ogni proprietà ha un nome, una descrizione e un tipo di dati ThingWorx, denominato tipo di base in ThingWorx. A seconda del tipo di base, possono essere attivati altri campi. Un semplice tipo scalare, come un numero o una stringa, aggiunge campi di base come valore di default. I tipi di base più complessi presentano più opzioni. Un tipo di base INFOTABLE, ad esempio, offre la possibilità di definire una data shape per descrivere la struttura dati della infotable. Per ulteriori informazioni, vedere Tipi di base delle proprietà.
Il valore di una proprietà dell'oggetto è costituito da tre caratteristiche: valore, timestamp e qualità (VTQ). I valori di VTQ possono essere specificati o impostati automaticamente e gli stati di qualità accettabili si trovano nella classe QualityStatus. Ogni volta che una proprietà viene impostata o aggiornata, vengono aggiornate tutte le relative caratteristiche VTQ.
In generale, è possibile aggiornare una proprietà in Composer impostando me.PropertyName = value e il valore di timestamp rifletterà la data e l'ora correnti del server. Per gli aggiornamenti cronologici, è possibile utilizzare i servizi UpdatePropertyValues e UpdatePropertyValuesBatched, che consentono di eseguire aggiornamenti dei valori di più proprietà. I valori delle proprietà non possono essere impostati su null. Per ulteriori informazioni su questi servizi, vedere la tabella riportata di seguito.
Opzione
Descrizione
UpdatePropertyValues
Accetta un singolo parametro di infotable values composto da più righe. Ogni riga contiene nome, valore e qualità della proprietà, accompagnati dalla data e dall'ora dell'aggiornamento. I valori delle proprietà non possono essere impostati su null.
Per default, gli aggiornamenti del valore vengono eseguiti separatamente per ogni proprietà. Per fare in modo che i valori siano ordinati e raggruppati in base a data e ora anziché in base alla proprietà, è necessario che l'impostazione di GroupPropertyValuesByTime sia true nella sezione BasicSettings del file platform-settings.json.
Quando l'impostazione sopra indicata è true, gli avvisi e gli eventi attivati dai dati per tutte le proprietà aggiornate con la stessa data e ora vengono attivati insieme. Di conseguenza, le sottoscrizioni a più eventi registrate per alcuni o per tutti questi eventi vengono eseguite solo una volta per ogni data e ora, con gli eventi corrispondenti passati nel parametro degli eventi.
UpdatePropertyValuesBatched
Accetta un singolo parametro di infotable batches costituito da più righe. Ogni riga contiene un batch di valori delle proprietà e la data e l'ora dell'aggiornamento.
Il valore del campo batch è un'infotable composta da più righe. Ogni riga contiene nome, valore e qualità della proprietà. I valori delle proprietà non possono essere impostati su null.
I valori delle proprietà vengono ordinati e raggruppati in base a data e ora dei batch, questo significa che gli avvisi e gli eventi attivati dai dati per tutte le proprietà aggiornate con la stessa data e ora vengono attivati insieme. Di conseguenza, le sottoscrizioni a più eventi registrate per alcuni o per tutti questi eventi vengono eseguite solo una volta per ogni data e ora, con gli eventi corrispondenti passati nel parametro events.
* 
Quando si scrivono servizi personalizzati, evitare di generare codice che allo stesso tempo potrebbe modificare la stessa proprietà di una determinata entità. Ad esempio non incrementare o decrementare contemporaneamente un valore della proprietà in quanto può generare valori di proprietà imprevedibili. Allo stesso modo l'incremento delle proprietà in modo che si comportino come contatori nelle sottoscrizioni è un uso improprio comune che determina un'inesattezza.
L'evento HistoricalDataLogged si attiva quando viene impostato un valore di proprietà cronologico. Si considerino, ad esempio, la data e l'ora dell'insieme corrente di una proprietà VTQ per un'entità: 2020-02-04 20:16:20. Durante l'importazione di una nuova versione di questa entità viene impostata una proprietà VTQ precedente, ad esempio 2019-12-24 19:00:45. Questo insieme causerà l'attivazione dell'evento HistoricalDataLogged per la proprietà e verrà utilizzata qualsiasi sottoscrizione all'evento per la proprietà.
Avvisi
Per informazioni sugli avvisi, vedere Avvisi.
Aspetti delle proprietà
Le proprietà possono avere le impostazioni degli aspetti seguenti:
Tipo di base - Vedere Tipi di base delle proprietà.
Con valore di default - Imposta un valore di default per la proprietà quando l'oggetto viene inizializzato.
Indice - Se questa opzione è selezionata, la proprietà viene memorizzata e indicizzata nel provider di persistenza proprietà del database per migliorare la ricerca utilizzando il servizio QueryImplementingThingsOptimized. Per ulteriori informazioni, vedere Proprietà indicizzate.
Solo le proprietà che cambiano raramente devono essere indicizzate. Le proprietà dei dati di telemetria non devono essere indicizzate.
Se è selezionata l'opzione Indice, viene selezionata automaticamente l'impostazione Persistenza e la modifica dell'impostazione Persistenza è disattivata.
Se l'impostazione Indice viene successivamente disattivata, resterà selezionata l'impostazione Persistenza, ma verrà riattivata la modifica in modo da consentirne l'impostazione o la deselezione.
Solo i tipi di base seguenti supportano l'impostazione Indice: STRING, NUMBER, INTEGER, LONG, BOOLEAN, DATETIME, THINGNAME, USERNAME, GROUPNAME, HYPERLINK, IMAGELINK, MASHUPNAME, MENUNAME, DASHBOARDNAME, TEXT, GUID, NOTIFICATIONCONTENTNAME, NOTIFICATIONDEFINITIONNAME, STYLETHEMENAME e THINGGROUPNAME.
Persistenza - Se questa voce è selezionata o impostata su true, ogni modifica del valore viene resa persistente nel database. Le scritture nel database delle proprietà persistenti si verificano in modo asincrono per evitare blocchi critici. Mentre il valore della proprietà viene impostato immediatamente, la scrittura nel database avviene in modo asincrono in un momento successivo. Le convalide seguenti si verificano prima della scrittura di un valore di proprietà persistente nel database.
L'oggetto deve essere ancora esistente.
L'oggetto deve avere un ID.
L'ID dell'oggetto e l'ID della scrittura in attesa devono corrispondere.
L'oggetto deve comunque definire la proprietà con lo stesso nome della scrittura in attesa.
La proprietà definita deve comunque essere persistente.
Gli aggiornamenti e i riavvii non influiscono sull'elaborazione della coda.
Sola lettura - Se questa voce è selezionata o impostata su true, i dati sono statici e non possono essere scritti in fase di esecuzione. L'unico modo per modificare il valore consiste nel cambiare il valore di default. Ciò è utile per i dati di configurazione statici.
Log - Se questa voce è selezionata o impostata su true, il valore della proprietà viene registrato automaticamente in uno stream di valori alla modifica dei dati, in base al tipo di modifica dati.
* 
Se l'evento di modifica dei dati non viene attivato in determinate circostanze, la voce dello stream di valori non viene registrata, ma viene mantenuto l'insieme di valori della proprietà. È possibile che vengano impostate le proprietà per un'entità, ma che venga eliminata la scrittura dello stream di valori corrispondente a causa del riempimento della coda che contiene queste scritture e dell'impossibilità di svuotarla nel database. Questa operazione può verificarsi se il volume delle scritture in arrivo è maggiore della velocità con cui viene configurato lo svuotamento della coda. Questa impostazione può essere ottimizzata in platform-settings.json per ogni provider di persistenza. La perdita di connessione tra ThingWorx e il database può anche causare il backup della coda e il mancato svuotamento in modo conforme.
Ambito - Selezionare l'ambito della proprietà.
Informazioni sulla modifica dati
Tipo di modifica dati
Questa impostazione specifica quando un evento modifica dati è attivato da una modifica del valore della proprietà. Si utilizza quando devono essere avviati altri processi in base al valore della proprietà. Ogni sottoscrittore riceve una notifica di modifica con una infotable contenente i valori della proprietà precedenti e nuovi. Ad esempio è possibile configurare una sottoscrizione per le modifiche alla proprietà DeliverySchedule. Se la pianificazione cambia, è possibile inviare un SMS di notifica all'autista.
Di seguito sono riportate le opzioni relative a Tipo di modifica dati:
Sempre - Attiva l'evento ai sottoscrittori per qualsiasi modifica del valore della proprietà.
Mai - Non attiva un evento di modifica.
ON - Per la maggior parte dei valori, qualsiasi modifica attiva un evento. Per i tipi di base più complessi, ad esempio le infotable, le regole degli eventi possono essere diverse.
OFF - Attiva l'evento se il nuovo valore restituisce un valore booleano false.
Valore - Per i tipi numerici, se il nuovo valore è stato modificato di un valore oltre quello di soglia, si attiva l'evento di modifica. Per i tipi non numerici, l'evento di modifica si attiva quando il valore cambia in un modo qualsiasi rispetto al valore originale. La registrazione del valore in uno stream di valori si verifica solo se è stato determinato che il valore è cambiato.
Obsoleto
Se si seleziona la casella di controllo Contrassegnato come obsoleto, l'entità viene dichiarata obsoleta. Immettere la Versione a partire dalla quale l'entità deve essere contrassegnata come obsoleta nel formato major.minor.patch. Facoltativamente, aggiungere un commento.
Informazioni sull'associazione remota
Nella tabella seguente sono elencate le opzioni disponibili se l'opzione Associazione è impostata su Associata in remoto:
Opzione
Descrizione
Nome proprietà remota
Il nome della proprietà nell'edge.
* 
Non è necessario che il nome della proprietà e il nome della proprietà dell'oggetto edge associato siano uguali.
Metodo memorizzazione nella cache
Il metodo di memorizzazione nella cache fornisce i metodi seguenti per leggere i valori delle proprietà edge associate:
Leggi da cache server vieta le richieste del server per il valore della proprietà edge. L'opzione recupera solo il valore dal server. Eventuali aggiornamenti del valore della proprietà edge nella cache del server dipendono dal Tipo di modifica dati della proprietà edge e dalla frequenza di analisi (definizione push del valore della proprietà edge). Senza le impostazioni corrette nella proprietà edge, è possibile che il server non disponga mai del valore della proprietà edge e restituisca solo il valore di default della proprietà del server. Se il Tipo di modifica dati della proprietà edge a cui si sta eseguendo l'associazione è uguale a SEMPRE o VALORE, per default verrà utilizzata questa impostazione per il tipo di cache.
Recupera da remoto a ogni lettura recupera il valore della proprietà edge dal server edge per ogni richiesta. Questa opzione non implica alcuna memorizzazione nella cache. Se il Tipo di modifica dati della proprietà edge a cui si sta eseguendo l'associazione è uguale a MAI, per default verrà utilizzata questa impostazione per il tipo di cache.
Memorizzazione nella cache per un periodo specifico controlla la frequenza delle richieste alla proprietà edge. Dopo la prima richiesta, il server accede alla proprietà edge per il relativo valore e non effettua un'altra richiesta alla proprietà edge per il numero definito di secondi. Durante questo intervallo di tempo, la proprietà edge può aggiornare il valore del server (tramite push).
Intervallo cache
La quantità di tempo (in secondi) in cui il server memorizzerà nella cache il valore della proprietà edge prima che una richiesta per il valore della proprietà lo recuperi dall'edge. Il valore viene sempre recuperato dall'edge alla prima richiesta.
Tipo di avvio
Specifica il valore utilizzato per inizializzare una proprietà associata in remoto quando il rispettivo oggetto viene avviato o riavviato. Questo valore inizializzato non attiva un evento di modifica della proprietà.
Utilizza valore di default - Imposta il valore iniziale della proprietà sul valore di default specificato, nonostante il valore lato edge. Se la proprietà viene resa persistente, il valore iniziale sarà impostato sull'ultimo valore persistente nel database.
Leggi valore Edge - Interroga il dispositivo edge per il relativo valore corrente in modo che il valore sul server sia sempre sincronizzato con il valore sul dispositivo edge, anche quando l'oggetto viene riavviato sul server.
Tipo di push
Tipo di push si applica solo a proprietà di oggetti ottimizzate per il dispositivo edge. Questi componenti possono effettuare il push delle modifiche del proprio valore al server. Questa possibilità è configurabile tramite l'associazione delle proprietà server.
Push in base alla modifica del valore: è possibile configurare una soglia di modifica del valore. Quando si utilizza questa impostazione, è inoltre possibile impostare il valore Soglia push, ovvero una banda inutilizzata che deve essere superata affinché possa essere eseguito il push di un nuovo valore sul server dal dispositivo edge.
Nessun push
Sempre push
Soglia push
Questa opzione è disponibile se Tipo di push è impostato su Push in base alla modifica del valore. Specifica l'intervallo (più o meno) attorno al valore della proprietà edge per l'esecuzione del push del valore della proprietà. Il valore della proprietà deve cambiare superando il valore specificato.
In assenza di connessione
Specifica come deve essere gestita l'associazione del valore della proprietà remota se la connessione all'oggetto remoto viene temporaneamente persa.
Ignora valori modificati mentre è disconnesso.
Combina tutte le modifiche in un ultimo valore modificato - Invia l'ultimo valore modificato quando la connessione viene ripristinata.
* 
Se l'opzione In assenza di connessione è configurata tramite un servizio per impostare Combina tutte le modifiche in un ultimo valore modificato, specificare foldType: FOLD.
Se In assenza di connessione è configurato tramite un servizio per impostare Ignora valori modificati, definirefoldType: NONE.
Timeout
Il timeout utilizzato per chiamate a oggetti remoti durante un'operazione di lettura o scrittura della proprietà.
Utilizza default di sistema - Il valore di default è 30 secondi.
Timeout personalizzato. Da aggiungere a Intervallo timeout (sec).
Link correlati
È stato utile?