Preactiuni

Daca este nevoie ca anumite actiuni sa ia loc inaintea terminarii analizei unui cuvant, acest lucru se realizeaza cu ajutorul preactiunilor. Exista 7 preactiuni disponibile:

  • MySQLInsert
  • MySQL
  • callMethod
  • MySQLProc
  • ResultSetExtract
  • MemStore
  • MemDispose
 <nodes>
   <node name="cat" type="String" regex="[\p{Print}]*" minrep="1" maxrep="1" />
   <node name="rlb" type="String" regex="[\p{Print}]*" minrep="1" maxrep="1" >
     <preaction>
       <actionType>MySQLProc</actionType>
       <MySQLProc>marc_Record_insert('cln','I','$/cat$','$/rlb$')</MySQLProc>
       <save to="rlb"/>
     </preaction>
   </node>
</nodes>

MySQLInsert

Aceasta preactiune are un singur nod: MySQLquery. In acest nod se afla o interogare de tip insert care se presupune ca nu va returna nici un set de rezultate. Din baza de date se va retrage automat ultimul id inserat care va fi stocat in Memoria privata sub numele LastInsertId.

<preaction>
  <actionType>MySQLquery</actionType>
  <MySQLquery>INSERT INTO table1(col1, col2) VALUES('v1','v2')</MySQLquery>
  <LastInsertId>oid</LastInsertId>
</preaction>

MySQL

Preactiunea este sintactic identica cu MySQLInsert diferenta constand in faptul ca operatiunea derulata este una de update in baza de date. Nu se asteapta un set de rezultate si nici un last insert id.

<preaction>
  <actionType>MySQLInsert</actionType>
  <MySQLquery>UPDATE table1 SET col1 = col1 + 1</MySQLquery>
</preaction>

callMethod

Preactiunea permite apelarea metodelor statice din clasele java incarcate/incluse in server. Pentru interpretarea parametrilor vezi Constantele si memoria privata

<preaction>
  <actionType>callMethod</actionType>
  <class>com.package.CustomClass</class>
  <method>customMethod</method>
  <params>param1,param2,param3,param4</params>
</preaction>

MySQLProc

Nodul MySQLProc contine un apel de procedura MySQL, mai putin cuvantul cheie CALL.

Nodul save este optional si repetabil. Prin intermediul acestui nod se pot salva valori din pozitii fixe din setul de rezultate in memoria privata.

Nodul save are patru posibile atribute:

  • to – este obligatoriu si specifica sub ce cheie sa se salveze valoarea in memoria privata.
  • rsi – optional, este indexul de set de rezultate. Valoarea implicita este 0 (zero)
  • ri – optional, este indexul de rand. Valoarea implicita este 0 (zero)
  • ci – optional, este indexul de coloana. Valoarea implicita este 0 (zero)
<preaction>
  <actionType>MySQLProc</actionType>
  <MySQLProc>marc_Record_insert('cln','I','$/cat$','$/rlb$')</MySQLProc>
  <save rsi="0" ri="0" ci="0" to="rlb"/>
</preaction>

ResultSetExtract

Functionarea acestei preactiuni este similara MySQLProc, diferenta fiind ca datele se salveaza dintr-un set de rezultate (salvat de obicei in memoria privata).
Acest set de rezultate este un obiect de tipul Vector<Vector<Vector<String>>>.

<preaction>
  <actionType>ResultSetExtract</actionType>
  <resultsets>$MEM[ressets]$</resultsets>
  <save rsi="0" ri="0" ci="0" to="rlb"/>
</preaction>

MemStore

Este una dintre metodele specializate de manipulare a memoriei private de analiza a mesajelor. Prin intermediul acestei metode se pot stoca diverse valori in aceasta zona de memorie, cu intentia de a folosi aceste valori in alte zone de analiza a mesajelor. Astfel valoarea din nodul value este stocata sub cheia specificata in nodul key.

<preaction>
  <actionType>MemStore</actionType>
  <key>pre</key>
  <value>$/pre$</value>
</preaction>

MemDispose

Este o alta metoda specializata de manipulare a memoriei private de analiza a mesajelor. Prin intermediul acesteia se pot sterge valori in functie de cheia secificata in nodul key.

<preaction>
  <actionType>MemDispose</actionType>
  <key>pre</key>
</preaction>
Sidebar