Compartir a través de


Proxy de datos con análisis de entrada de lápiz

Como se mencionó en Información general sobre el análisis de lápiz, la tecnología de análisis de entrada de lápiz mantiene internamente un modelo de documento basado en árbol para contener resultados de análisis y relaciones. Si la aplicación ya tiene un almacén de documentos establecido que es diferente, deberá usar las características de análisis de entrada de lápiz diseñadas para proxy de datos entre modelos de documentos dispares.

Tipos de proxy de datos

Las características del proxy de datos permiten a la aplicación:

  • Integre los datos de los resultados de análisis en un modelo de documento existente.
  • Comunique los resultados anteriores (o el estado) en InkAnalyzer.
  • Comunique el estado que no es de entrada de lápiz en InkAnalyzer.
  • Comunique solo el conjunto mínimo de datos (tanto el estado anterior como el que no es de entrada de lápiz) necesario para completar la operación de análisis.
  • Actualice fácilmente el modelo de documento de aplicación interno con resultados de análisis.

Hay dos enfoques básicos para el proxy de datos de análisis de entrada de lápiz. Las diferencias se muestran en los detalles de cuándo y cómo se produce la sincronización entre los modelos de documento. El primer enfoque, actualización sincrónica, requiere la modificación del modelo de documento de análisis de entrada de lápiz a medida que se producen cambios en el documento de la aplicación. El segundo enfoque, actualización a petición, solo requiere que los datos afectados por los cambios en el modelo de documento de aplicación se pasen a InkAnalyzer. Es decir, solo los datos de las partes del modelo de documento de análisis de lápiz que se encuentran en el mismo área que las modificaciones en el documento de la aplicación deben pasarse a InkAnalyzer , ya que las necesita.

Actualización sincrónica

El enfoque de actualización sincrónica requiere la modificación (creación y eliminación) de nodos en la colección del objeto InkAnalyzer de objetos ContextNode a medida que se producen en el documento de la aplicación. Por ejemplo, cada vez que se agrega una palabra de texto a la aplicación, se crea un contextNode con estilo TextWord correspondiente en InkAnalyzer. Si cambia la ubicación de la palabra de texto en la página, la ubicación del contextNode correspondiente se actualiza al mismo tiempo. Este método es menos eficaz en términos de recursos informáticos que el método a petición porque cada cambio de documento implica una actualización de InkAnalyzer, incluso si el cambio no afecta a la entrada de lápiz que se está analizando.

El ejemplo siguiente está diseñado para mostrar cómo funciona la actualización sincrónica. Imagine una aplicación que tiene un modelo de documento existente. Cuando el usuario final realiza un cambio en el documento, como agregar texto nuevo, el cambio se procesa de la siguiente manera:

  1. El usuario final crea los nuevos datos.
  2. La aplicación determina cómo procesar los datos, almacenarlos y representarlos.
  3. Para fines prácticos, los siguientes pasos se llevan a cabo simultáneamente.
    1. La aplicación coloca los datos en su modelo de documento.
    2. La aplicación crea un inkAnalyzer y lo actualiza. Esto garantiza simultáneamente que InkAnalyzer siempre tiene la información más reciente.
    3. La aplicación llama a BackgroundAnalyze en InkAnalyzer para comenzar el análisis.
  4. Se desencadena una serie de eventos si el cambio implica la entrada de lápiz y InkAnalyzer determina nuevos resultados. Se desencadena un evento por cada cambio realizado en la colección de objetos ContextNode en InkAnalyzer. Estos eventos incluyen ContextNodeCreated, ContextNodeDeleting, ContextNodeMovingToPosition, ContextNodePropertiesUpdated, ContextNodeLinkAdding, ContextNodeLinkDeleting y ContextNodeReparenting. La aplicación controla estos eventos para redirigir los resultados de la operación de análisis al modelo de documento según corresponda.
  5. La aplicación actualiza el diseño del documento y extrae los nuevos datos del modelo de documento.
  6. Los nuevos datos se vuelven a representar al usuario final.

Actualización a petición

El enfoque a petición solo requiere que se pasen los datos para los objetos ContextNode que se encuentran en las áreas que se están analizando. Los objetos ContextNode necesarios se extraen del modelo de documento de la aplicación justo después de invocar la operación de análisis y de nuevo justo antes de reconciliar los resultados. Aunque es más complicado implementar que las actualizaciones sincrónicas, este enfoque produce mejores resultados de rendimiento.

Introducción al análisis de entrada de lápiz

Clase InkAnalyzer (C++)

Microsoft.Ink.InkAnalyzer

Microsoft.Ink.ContextNode