Présence d'objet
Pour rendre compte de l'éventail d'appareils qui se connectent à ThingWorx Platform, le concept de "connecté" est passé de "actuellement lié à l'aide d'un WebSocket" à "normalité de connexion", et retraduit par le terme présence d'objet. Ce terme indique lorsque la connexion d'un objet est "normale", en fonction du comportement attendu de l'appareil.
Les appareils ThingWorx AlwaysOn (exécutant une application basée sur un SDK ThingWorx Edge ou le ThingWorx WebSocket-based Edge MicroServer) lient les WebSockets. S'ils ne sont pas configurés pour être hors connexion pendant un certain moment, ils restent disponibles en permanence pour recevoir des messages de ThingWorx Platform. De leur côté, les appareils des agents Axeda eMessage sondent la plateforme périodiquement (taux de "ping") et peuvent recevoir des messages de la plateforme lorsqu'ils sont connectés et liés. Ces deux types principaux d'appareils sont pris en charge par le concept de présence d'objet.
La présence d'objet est similaire dans les différentes catégories d'appareil et prise en charge par toutes les interfaces ThingWorx. Par exemple, une organisation de service peut souhaiter créer un tableau de bord qui indique tous les appareils disponibles pour les appels de services ou tous les appareils qui sont inopinément hors ligne. Cette fonctionnalité est utilisée par l'extension ThingWorx SCM pour déterminer si un appareil est connecté "normalement" (en vérifiant une propriété appelée isReporting) afin qu'un package puisse être sélectionné pour un appareil et déployé sur celui-ci.
Il est important de comprendre que la présence d'objet ne tente pas de diagnostiquer l'état général d'un appareil. La présence d'objet se présente sous la forme d'une propriété booléenne unique, qui permet à ThingWorx de fournir une expérience unifiée au sein des nombreux actifs.
Fonctionnement
Dans le sens général, tous les appareils définis comme RemoteThing présentent les nouveaux attributs suivants.
Type
Nom
Description
Propriété
isReporting
Identifie si un appareil est ou non déterminé à être disponible pour les communications "normales" en fonction de la "stratégie de reporting" appliquée.
Propriété
reportingLastChange
Identifie quand la valeur isReporting a été modifiée pour la dernière fois.
Propriété
reportingLastEvaluation
Identifie quand isReporting a été évalué pour la dernière fois.
Configuration
reportingStrategy
Objet qui définit l'algorithme permettant de déterminer si un appareil émet des informations de reporting.
Service
EvaluateReporting
Evalue si un appareil émet des informations de reporting et définit la propriété isReporting en conséquence.
Service
SetReportingStrategy
Définit la stratégie utilisée pour évaluer si un appareil émet des informations de reporting.
Service
GetReportingStrategy
Obtient la stratégie actuellement utilisée pour évaluer si un appareil émet des informations de reporting.
L'algorithme exact pour déterminer si un appareil émet des informations de reporting dépend de l'objet ReportingStrategy spécifique. Toutefois, le processus général est le suivant :
1. Le service EvaluateReporting est déclenché par un événement.
2. EvaluateReporting appelle ensuite le service ReportingAlgorithm sur l'objet de stratégie.
3. Le service ReportingAlgorithm renvoie une valeur booléenne, en fonction de l'algorithme spécifique.
4. La propriété isReporting est définie en fonction des résultats du service ReportingAlgorithm.
Le Service EvaluateReporting
Le service EvaluateReporting prend en entrée les paramètres suivants :
eventName : nom de l'événement qui a provoqué la réévaluation de l'état de reporting.
eventTime : heure à laquelle l'événement s'est produit.
source : nom de l'objet qui a généré l'événement.
sourceProperty : propriété source de l'événement.
eventData : données de l'événement.
Tous les paramètres du service EvaluateReporting() sont transmis directement à ReportingStrategy.ReportingAlgorithm().
En cas d'exécution lorsqu'un objet est lié ou non lié :
Le paramètre eventName est défini sur BindingEvent.
eventData contient une seule ligne avec une valeur unique sous la clé isBound, indiquant si l'objet vient d'être lié ou s'il n'est plus lié (true en cas de liaison, false en cas d'annulation de la liaison).
Si un problème survient avec ce service (y compris dans le service ReportingAlgorithm), l'objet est mis à jour comme n'émettant pas d'informations de reporting, et un message est consigné dans le journal de l'application.