Flow de l’événement de proxy de données

Cette rubrique présente les détails de l’événement lors de l’utilisation des fonctionnalités du proxy d’analyse des données d’encre.

vue d’ensemble des Flow d’événements de Proxy de données

Dans l’utilisation du proxy de données de InkAnalyzer, il est supposé que l’application intégrant le InkAnalyzer possède déjà un modèle de document existant auquel il souhaite effectuer un proxy des résultats de l’analyse. Il est également supposé que l’application aura des résultats de toutes les opérations d’analyse précédentes qu’elle souhaiterait créer sur stockées dans son modèle de document. Il peut également y avoir des contextes non manuscrits qui peuvent être ajoutés au InkAnalyzer sous la forme d’un ContextNode ImageNode ou TextWordNode pour être éventuellement annotés avec de l’encre.

La clé du système de proxy de données est que l’application marque le ContextNode comme étant « partiellement rempli » à l’aide de PartiallyPopulated. Lorsque cet indicateur a la valeur true, InkAnalyzer suppose que trois choses sur ce ContextNode:

Sur la base de ces trois règles, si et quand le InkAnalyzer a besoin d’informations supplémentaires sur un ContextNode , il déclenchera l’événement PopulateContextNode et référencera le ContextNode en question. Cela donne à l’application la possibilité de définir toutes les informations connues sur ce ContextNode avant que le InkAnalyzer ne les examine plus en détail. Après la gestion d’un événement PopulateContextNode , le ContextNode en question doit avoir une propriété Location valide, le nombre correct de sous-nœuds définis s’il s’agit d’un conteneur ContextNode ou avoir les traits corrects définis à l’aide de SetStrokes, s’il s’agit d’une feuille d’entrée manuscrite ContextNode. Si vous ne définissez pas correctement cet emplacement et les informations sur le sous-nœud ou le trait, une exception InvalidOperation se produira. Les sous-nœuds d’un conteneur ContextNode peuvent eux-mêmes être définis comme partiellement remplis, auquel cas davantage d’événements PopulateContextNode sont déclenchés si le InkAnalyzer détermine qu’ils seront nécessaires pour l’opération d’analyse en cours.

Les tableaux ci-dessous décrivent le moment où l’événement PopulateContextNode est déclenché tout au long de l’utilisation de InkAnalyzer.

Une fois que le InkAnalyzer a calculé des résultats, il revient à l’application pour mettre à jour les résultats. Le premier événement déclenché est l’événement InkAnalyzerStateChanging . Cet événement signifie simplement que l’application que l’état de l’arborescence de l’objet InkAnalyzer va changer. Cela offre aux applications la possibilité de définir l’indicateur PartiallyPopulated sur true sur tout ContextNodes dont l’État est stocké ailleurs. InkAnalyzer déclenchera ensuite une série d’événements PopulateContextNode pour déterminre l’état actuel des données. Une fois determiend, une opération de réconciliation est commise pour déterminer les résultats de l’arrière-plan qui peuvent toujours être appliqués.

Pour appliquer des résultats à InkAnalyzer , une série d’événements de modification d’arborescence sont déclenchés. Les événements de modification d’arborescence décrivent, pas à pas, toutes les modifications nécessaires pour mettre à jour les résultats. Ces événements sont destinés à être gérés dans sucession sans interuption ou à annuler. Si l’opération d’analyse est annulée (par le biais de la méthode Abort ) pendant le traitement des événements de modification de l’arborescence, l’état du InkAnalyzer n’est pas valide et le document entier peut nécessiter une réanalyse.

Les tableaux ci-dessous décrivent le moment où les événements de modification d’arborescence sont déclenchés tout au long de l’utilisation de InkAnalyzer. Les tables font référence aux horodateurs présentés ci-après.

IImage présentant le flow entre l’interface utilisateur de l’application et l’analyseur d’arrière-plan

Ajout d’un trait

Horodatage Type d’événement ou objectif Événement déclenché Commentaire
T1, T5 et T9
[À l’intérieur de l’appel à l' ] [ événement d’exploration d’arborescence AddStroke ()]
Événement PopulateContextNode déclenché
Il peut y avoir n événements PopulateContextNode déclenchés en fonction du nombre d’événements ContextNodes non classifiés avec une valeur PartiallyPopulated définie sur true.
T1, T5 et T9
[Événement de modification d’arborescence]
Événement ContextNodeCreated déclenché
Un seul événement ContextNodeCreated est déclenché suite à l’appel de la méthode AddStroke . Tous les traits sont ajoutés au même ContextNodenon classifié.

Suppression d’un trait

Horodatage Type d’événement ou objectif Événement déclenché Commentaire
T2, T6 et T10
[À l’intérieur de l’appel à l' ] [ événement d’exploration d’arborescence RemoveStroke ()]
PopulateContextNode Événement déclenché
Il peut y avoir un certain nombre d’événements PopulateContextNode déclenchés en fonction du nombre de ContextNodes liés aux traits en cours de suppression, avec la valeur PartiallyPopulated true.
T2, T6 et T10
[Événement de modification d’arborescence]
ContextNodeDeleting Événement déclenché
Il peut y avoir un nombre quelconque d’événements ContextNodeDeleting déclenchés, en fonction du contenu de l’encre en cours de suppression et de la structure d’analyse actuelle.

Appel de la méthode BackgroundAnalyze

Horodatage Type d’événement ou objectif Événement déclenché Commentaire
T3
[À l’intérieur de l’appel à l' ] [ événement d’exploration d’arborescence BackgroundAnalyze ()]
PopulateContextNode Événement déclenché
Il peut y avoir n événements PopulateContextNode déclenchés, selon le nombre de ContextNodes dans l’arborescence ayant la valeur PartiallyPopulated true (un événement par ContextNode nécessaire dans l’opération d’analyse actuelle).

Après le retour de l’appel à BackgroundAnalyze ()

Horodatage Type d’événement ou objectif Événement déclenché Commentaire
T3 à T7
[Événements déclenchés par le thread BG]
Événement d’activité déclenché
Plusieurs événements d’activité sont déclenchés pendant la période d’analyse en arrière-plan.

Quand les IntermediateResults sont prêts

Horodatage Type d’événement ou objectif Événement déclenché Commentaire
T7 à T8
[Événements déclenchés par le thread BG, signifiant le début de la première opération de rapprochement]
InkAnalyzerStateChanging Événement déclenché
Un seul événement InkAnalyzerStateChanging déclenché. Cet événement est déclenché avant l’inspection de l’état du InkAnalyzer, ce qui donne à l’application la possibilité de définir la valeur PartiallyPopulated sur tous les nœuds ou d’effectuer tout verrouillage de document local nécessaire.
T7 à T8
[Événement d’exploration d’arborescence]
PopulateContextNode Événement déclenché
Il peut y avoir n événements PopulateContextNode déclenchés, en fonction du contenu de l’encre.
T7 à T8
[Événement de modification d’arborescence]
ContextNodeCreated Événement déclenché
Il peut y avoir n événements ContextNodeCreated déclenchés, en fonction du contenu de l’encre.
T7 à T8
[Événement de modification d’arborescence]
ContextNodeDeleting Événement déclenché
Il peut y avoir n événements ContextNodeDeleting déclenchés, en fonction du contenu de l’encre.
T7 à T8
[Événement de modification d’arborescence]
ContextNodeMovingToPosition
Il peut y avoir n événements ContextNodeMovingToPosition déclenchés, en fonction du contenu de l’encre.
T7 à T8
[Événement de modification d’arborescence]
ContextNodeReparenting
Il peut y avoir n événements ContextNodeReparenting déclenchés, en fonction du contenu de l’encre.
T7 à T8
[Événement de modification d’arborescence]
StrokeReparented
Il peut y avoir n événements StrokeReparented déclenchés, en fonction du contenu de l’encre.
T7 à T8
[Événement de modification d’arborescence]
ContextNodeLinkAdding
Il peut y avoir n événements ContextNodeLinkAdding déclenchés, en fonction du contenu de l’encre.
T7 à T8
[Événement de modification d’arborescence]
ContextNodeLinkDeleting
Il peut y avoir n événements ContextNodeLinkDeleting déclenchés, en fonction du contenu de l’encre.
T7 à T8
[Événement de modification d’arborescence]
ContextNodePropertiesUpdated Événement déclenché
Il peut y avoir n événements ContextNodePropertiesUpdated déclenchés, en fonction du contenu de l’encre. Les ContextNodePropertiesUpdated sont planifiés de générées une fois que tous les autres événements de modification ContextNode ont été déclenchés pendant cette période de rapprochement .
T7 à T8
[L’événement désigne la fin de la première opération de rapprochement]
IntermediateResults Événement déclenché
Un seul événement IntermediateResults est déclenché par opération d’analyse.

Après la gestion de IntermediateResults

Horodatage Type d’événement ou objectif Événement déclenché Commentaire
T8 à T11
[Événements déclenchés par le thread BG]
Activité Événement déclenché
Plusieurs événements d' activité sont déclenchés pendant la période d’analyse en arrière-plan.

Quand les résultats finaux sont prêts

Horodatage Type d’événement ou objectif Événement déclenché Commentaire
T11 à T12
[Événements déclenchés par le thread BG, signifiant le début de la deuxième opération de rapprochement]
InkAnalyzerStateChanging Événement déclenché
Un seul événement InkAnalyzerStateChanging déclenché. Cet événement est déclenché avant l’inspection de l’état du InkAnalyzer, ce qui donne à l’application la possibilité de définir la valeur PartiallyPopulated sur tous les nœuds ou d’effectuer tout verrouillage de document local nécessaire.
T11 à T12
[Événement d’exploration d’arborescence]
PopulateContextNode Événement déclenché
Il peut y avoir un nombre quelconque d’événements PopulateContextNode déclenchés, en fonction du contenu de l’encre.
T11 à T12
[Événement de modification d’arborescence]
ContextNodeCreated Événement déclenché
Il peut y avoir un nombre quelconque d’événements ContextNodeCreated déclenchés, en fonction du contenu de l’encre.
T11 à T12
[Événement de modification d’arborescence]
ContextNodeDeleting Événement déclenché
Il peut y avoir un nombre quelconque d’événements ContextNodeDeleting déclenchés, en fonction du contenu de l’encre.
T11 à T12
[Événement de modification d’arborescence]
ContextNodeMovingToPosition
Il peut y avoir un nombre quelconque d’événements ContextNodeMovingToPosition déclenchés, en fonction du contenu de l’encre.
T11 à T12
[Événement de modification d’arborescence]
ContextNodeReparenting
Il peut y avoir un nombre quelconque d’événements ContextNodeReparenting déclenchés, en fonction du contenu de l’encre.
T11 à T12
[Événement de modification d’arborescence]
StrokeReparented
Il peut y avoir un nombre quelconque d’événements StrokeReparented déclenchés, en fonction du contenu de l’encre.
T11 à T12
[Événement de modification d’arborescence]
ContextNodeLinkAdding
Il peut y avoir un nombre quelconque d’événements ContextNodeLinkAdding déclenchés, en fonction du contenu de l’encre.
T11 à T12
[Événement de modification d’arborescence]
ContextNodeLinkDeleting
Il peut y avoir un nombre quelconque d’événements ContextNodeLinkDeleting déclenchés, en fonction du contenu de l’encre.
T11 à T12
[Événement de modification d’arborescence]
ContextNodePropertiesUpdated Événement déclenché
Il peut y avoir un nombre quelconque d’événements ContextNodePropertiesUpdated déclenchés, en fonction du contenu de l’encre. Les ContextNodePropertiesUpdated sont planifiés de générées une fois que tous les autres événements de modification ContextNode ont été déclenchés pendant cette période de rapprochement .
T11 à T12
[L’événement désigne la fin de la deuxième opération de rapprochement]
Résultats Événement déclenché
Un seul événement results est déclenché par opération d’analyse.