Megosztás a következőn keresztül:


Adatproxy szabadkézelemzéssel

Ahogy az Szabadkézett elemzés áttekintésiis említi, a szabadkézett elemzési technológia belsőleg egy faalapú dokumentummodellt tart fenn, amely elemzési eredményeket és kapcsolatokat tartalmaz. Ha az alkalmazás már rendelkezik egy már létrehozott, eltérő dokumentumtárolóval, akkor a különböző dokumentummodellek közötti proxyadatokhoz tervezett szabadkézi elemzési funkciókat kell használnia.

Adatproxy-típusok

Az adatproxy funkciói lehetővé teszik az alkalmazás számára a következő lehetőségeket:

  • Az elemzési eredmények adatainak integrálása egy meglévő dokumentummodellbe.
  • A korábbi eredményeket (vagy állapotot) a InkAnalyzer.
  • Szabadkéza állapotának kommunikálása a InkAnalyzer.
  • Csak az elemzési művelet végrehajtásához szükséges minimális adatkészletet (mind az előző, mind a nem szabadkézik állapotot) közölje.
  • A belső alkalmazásdokumentum-modell egyszerűen frissíthető elemzési eredményekkel.

A szabadkézelemzési adatproxynak két alapvető megközelítése van. A különbség a dokumentummodellek közötti szinkronizálás időpontjának és módjának részleteiben van. Az első megközelítés, a szinkron frissítés megköveteli a szabadkézatelemzési dokumentummodell módosítását az alkalmazásdokumentum változásainak megfelelően. A második, igény szerinti frissítéshez csak az alkalmazásdokumentum-modell módosításai által érintett adatokat kell továbbítani az InkAnalyzer. Vagyis csak az alkalmazásdokumentum módosításaival azonos területen lévő Szabadkézia-elemzési dokumentummodell részeinek adatait kell átadni az InkAnalyzer, ahogy szüksége van rájuk.

Szinkron frissítés

A szinkron frissítési megközelítés megköveteli a csomópontok módosítását (létrehozását és törlését) az InkAnalyzer objektum ContextNode objektumgyűjteményében, amint az az alkalmazásdokumentumban történik. Például minden alkalommal, amikor egy szöveges szót ad hozzá az alkalmazáshoz, egy megfelelő TextWord stílusú ContextNode jön létre az InkAnalyzer. Ha a szöveges szó helye megváltozik a lapon, akkor a megfelelő ContextNode helye is frissül. Ez a módszer kevésbé hatékony a számítási erőforrások szempontjából, mint az igény szerinti módszer, mivel minden dokumentummódosítás magában foglalja az InkAnalyzerfrissítését, még akkor is, ha a módosítás nem befolyásolja az elemzett szabadkémet.

Az alábbi példa a szinkron frissítés működését mutatja be. Képzeljen el egy meglévő dokumentummodellel rendelkező alkalmazást. Amikor a végfelhasználó módosítja a dokumentumot, például új szöveget ad hozzá, a módosítás a következőképpen lesz feldolgozva:

  1. A végfelhasználó létrehozza az új adatokat.
  2. Az alkalmazás meghatározza az adatok feldolgozásának, tárolásának és megjelenítésének módját.
  3. Gyakorlati okokból a következő lépések egyidejűleg történnek.
    1. Az alkalmazás az adatokat a dokumentummodellbe helyezi.
    2. Az alkalmazás létrehoz egy InkAnalyzer, és frissíti azt. Ezzel egyidejűleg biztosítja, hogy a InkAnalyzer mindig a legfrissebb információkkal rendelkezik.
    3. Az alkalmazás meghívja BackgroundAnalyze az InkAnalyzer az elemzés megkezdéséhez.
  4. Eseménysorozat akkor aktiválódik, ha a változás szabadkéza, és a InkAnalyzer új eredményeket határoz meg. Az inkAnalyzer ContextNode objektumainak gyűjteményében végrehajtott minden módosításhoz egy esemény aktiválódik. Ezek az események közé tartozik ContextNodeCreated, ContextNodeDeleting, ContextNodeMovingToPosition, ContextNodePropertiesUpdated, ContextNodeLinkAdding, ContextNodeLinkDeletingés ContextNodeReparenting. Az alkalmazás ezeket az eseményeket úgy kezeli, hogy az elemzési művelet eredményeit szükség szerint visszaproxyzhassa a dokumentummodellbe.
  5. Az alkalmazás frissíti a dokumentum elrendezését, és lekérte az új adatokat a dokumentummodellből.
  6. Az új adatok vissza lesznek renderelve a végfelhasználónak.

Igény szerinti frissítés

Az igény szerinti megközelítés csak azoknak az ContextNode- objektumoknak az adatait adja át, amelyek az elemzett területeken találhatók. A szükséges ContextNode objektumokat a rendszer az elemzési művelet meghívása után nyeri ki az alkalmazás dokumentummodelléből, majd az eredmények egyeztetése előtt. Bár a szinkron frissítéseknél bonyolultabb implementálni, ez a megközelítés jobb teljesítményeredményeket eredményez.

szabadkézelemzés áttekintése

InkAnalyzer osztály (C++)

Microsoft.Ink.InkAnalyzer

Microsoft.Ink.ContextNode