Proxy de données avec analyse d’encre

Comme indiqué dans Vue d’ensemble de l’analyse d’encre, la technologie d’analyse manuscrite gère en interne un modèle de document basé sur une arborescence pour contenir les résultats et les relations d’analyse. Si votre application dispose déjà d’un magasin de documents établi qui est différent, vous devez utiliser les fonctionnalités d’analyse d’encre conçues pour proxyer des données entre des modèles de documents disparates.

Types de proxy de données

Les fonctionnalités de proxy de données permettent à votre application de :

  • Intégrez à nouveau les données des résultats d’analyse dans un modèle de document existant.
  • Communiquez de nouveau les résultats précédents (ou l’état) dans InkAnalyzer.
  • Communiquez l’état non manuscrit dans InkAnalyzer.
  • Communiquez uniquement le jeu minimal de données (état précédent et non manuscrit) nécessaire pour terminer l’opération d’analyse.
  • Mettez facilement à jour le modèle de document d’application interne avec les résultats de l’analyse.

Il existe deux approches de base pour le proxy de données d’analyse manuscrite. Les différences résident dans les détails du moment et de la façon dont la synchronisation entre les modèles de document se produit. La première approche, la mise à jour synchrone, nécessite la modification du modèle de document d’analyse manuscrite à mesure que des modifications se produisent dans le document d’application. La deuxième approche, la mise à jour à la demande, nécessite que seules les données affectées par les modifications apportées au modèle de document d’application soient transmises à InkAnalyzer. Autrement dit, seules les données des parties du modèle de document Analyse d’encre qui se trouvent dans la même zone que les modifications du document d’application doivent être transmises à InkAnalyzer en fonction des besoins.

Mise à jour synchrone

L’approche de mise à jour synchrone nécessite la modification (création et suppression) des nœuds de la collection d’objets ContextNode de l’objet InkAnalyzer à mesure qu’ils se produisent dans le document d’application. Par exemple, chaque fois qu’un mot de texte est ajouté à l’application, un ContextNode de style TextWord correspondant est créé dans InkAnalyzer. Si l’emplacement du mot texte sur la page change, l’emplacement du ContextNode correspondant est mis à jour en même temps. Cette méthode est moins efficace en termes de calcul des ressources que la méthode à la demande, car chaque modification de document implique une mise à jour d’InkAnalyzer, même si la modification n’affecte pas l’entrée manuscrite analysée.

L’exemple suivant est destiné à montrer le fonctionnement de la mise à jour synchrone. Imaginez une application qui a un modèle de document existant. Lorsque l’utilisateur final apporte une modification au document, par exemple en ajoutant un nouveau texte, la modification est traitée comme suit :

  1. L’utilisateur final crée les nouvelles données.
  2. L’application détermine comment traiter les données, les stocke et les affiche.
  3. À des fins pratiques, les étapes suivantes se produisent simultanément.
    1. L’application place les données dans son modèle de document.
    2. L’application crée un InkAnalyzer et le met à jour. Cela garantit simultanément que InkAnalyzer dispose toujours des informations les plus récentes.
    3. L’application appelle BackgroundAnalyze sur InkAnalyzer pour commencer l’analyse.
  4. Une série d’événements est déclenchée si la modification implique de l’entrée manuscrite et si InkAnalyzer détermine de nouveaux résultats. Un événement est déclenché pour chaque modification apportée à la collection d’objets ContextNode dans InkAnalyzer. Ces événements incluent ContextNodeCreated, ContextNodeDeleting, ContextNodeMovingToPosition, ContextNodePropertiesUpdated, ContextNodeLinkAdding, ContextNodeLinkDeleting et ContextNodeReparenting. L’application gère ces événements pour renvoyer les résultats de l’opération d’analyse dans le modèle de document, le cas échéant.
  5. L’application met à jour la disposition du document, en extrayant les nouvelles données du modèle de document.
  6. Les nouvelles données sont rendues à l’utilisateur final.

Mise à jour à la demande

L’approche à la demande exige uniquement que les données soient transmises pour les objets ContextNode qui se trouvent dans les zones analysées. Les objets ContextNode nécessaires sont extraits du modèle de document de l’application juste après l’appel de l’opération d’analyse, puis juste avant le rapprochement des résultats. Bien qu’elle soit plus compliquée à implémenter que les mises à jour synchrones, cette approche produit de meilleurs résultats en matière de performances.

Vue d’ensemble de l’analyse d’encre

Classe InkAnalyzer (C++)

Microsoft.Ink.InkAnalyzer

Microsoft.Ink.ContextNode