Presenza di oggetto
Per riflettere la gamma di dispositivi che si connettono alla piattaforma ThingWorx, il concetto di "connesso" è cambiato da "attualmente associato tramite un WebSocket" a "normalità di connessione" e viene reso con il termine presenza di oggetto. La presenza di oggetto indica quando la connessione di un oggetto è "normale", in base al comportamento previsto del dispositivo.
I dispositivi ThingWorx AlwaysOn (che eseguono un'applicazione basata su ThingWorx Edge SDK o ThingWorx Edge MicroServer) associano i websocket. Se non è configurata per essere non in linea per un periodo di tempo, è sempre possibile ricevere messaggi dalla piattaforma ThingWorx. I dispositivi dell'agente eMessage Axeda, d'altra parte, eseguono periodicamente il polling della piattaforma ("ping") e possono ricevere messaggi dalla piattaforma solo quando sono connessi e associati. Questi due tipi principali di dispositivi sono supportati dal concetto di presenza di oggetto.
La presenza di oggetto è comparabile tra le categorie di dispositivi ed è supportata da tutte le interfacce ThingWorx. Ad esempio, un'organizzazione di servizi potrebbe voler creare un dashboard che indichi tutti i dispositivi disponibili per le chiamate di servizio o tutti i dispositivi che sono inaspettatamente offline. La presenza di oggetto viene utilizzata dall'estensione SCM ThingWorx per determinare se un dispositivo è connesso "normalmente" (controllando una proprietà chiamata isReporting) in modo che un pacchetto possa essere selezionato e distribuito in un dispositivo.
È importante capire che la presenza di oggetto non tenta di diagnosticare la condizione generale di un dispositivo. La presenza di oggetto è presentata come una singolare proprietà booleana, che consente a ThingWorx di fornire un'esperienza unificata attraverso l'ampia varietà di risorse.
Come funziona
Nel senso più generale, qualsiasi dispositivo definito come RemoteThing presenta i nuovi attributi riportati di seguito
Tipo
|
Nome
|
Descrizione
|
Proprietà
|
isReporting
|
Identifica se un dispositivo viene considerato disponibile per le comunicazioni "normali" in base alla "strategia di report" applicata.
|
Proprietà
|
reportingLastChange
|
Identifica quando il valore isReporting è stato modificato l'ultima volta.
|
Proprietà
|
reportingLastEvaluation
|
Identifica quando si è verificata l'ultima valutazione per isReporting.
|
Configurazione
|
reportingStrategy
|
Un oggetto che definisce l'algoritmo per determinare se un dispositivo sta creando report.
|
Servizio
|
EvaluateReporting
|
Valuta se un dispositivo sta creando report e imposta la proprietà isReporting di conseguenza.
|
Servizio
|
SetReportingStrategy
|
Imposta la strategia utilizzata per valutare se un dispositivo sta creando report.
|
Servizio
|
GetReportingStrategy
|
Ottiene la strategia attualmente utilizzata per valutare se un dispositivo sta creando report.
|
L'algoritmo esatto per stabilire se un dispositivo sta creando report dipende dall'oggetto ReportingStrategy specifico. Tuttavia, il processo generale è quello illustrato di seguito.
1. Il servizio EvaluateReporting viene attivato da un evento
2. EvaluateReporting successivamente chiama il servizio ReportingAlgorithm per l'oggetto strategia.
3. ReportingAlgorithm restituisce un valore booleano in base all'algoritmo specifico.
4. La proprietà isReporting viene impostata in base ai risultati del servizio ReportingAlgorithm.
Il servizio EvaluateReporting
Il servizio EvaluateReporting accetta i parametri riportati di seguito.
• eventName - Il nome dell'evento che ha causato la nuova valutazione dello stato del report.
• eventTime - L'ora in cui si è verificato l'evento.
• source - Il nome dell'oggetto che ha generato l'evento.
• sourceProperty - La proprietà di origine dell'evento.
• eventData - I dati dell'evento.
Tutti i parametri di EvaluateReporting() vengono passati direttamente a ReportingStrategy.ReportingAlgorithm()
Quando questo servizio viene eseguito durante un'operazione di associazione o disassociazione di oggetti:
• eventName è BindingEvent.
• eventData contiene una singola riga con un singolo valore nella chiave isBound, che indica se è stata appena stabilita o annullata l'associazione dell'oggetto (true per l'associazione, false per l'annullamento dell'associazione).
Se si verifica un problema durante questo servizio (incluso in ReportingAlgorithm), lo stato dell'oggetto viene aggiornato come oggetto che non crea report e in ApplicationLog viene aggiunto un messaggio.