Ce gestionnaire est utilisé pour mettre en œuvre la lecture de codes à barres à l'aide d'un matériel de lecture dédié. Il extrait l'entrée du scanner ou de la parole sur la base d'une liste de modèles et vérifie si au moins un de ces modèles est valide.
Type : Value_extractor_handler
Attributs
L'attribut du gestionnaire d'extraction de valeur est :
modèle : L'entrée doit correspondre au modèle défini. S'il correspond, les groupes définis peuvent être extraits.
Éléments
Les différents éléments sont les suivants :
grp : Stocke l'information, comment chaque membre du groupe doit être extrait comme une liste de paramètres.
- Obligatoire : non
- Valeur par défaut : liste vide
allowed_values : Permet de définir une liste de valeurs, qui seront vérifiées, si le motif est correct. Ne peut pas être utilisé avec des regex contenant "ou", car chaque groupe doit contenir une valeur autorisée ou un scan.
- Obligatoire : non
- Valeur par défaut : none
code_word_extraction : L'entrée Soeech ne sera vérifiée que si cet attribut est défini. Il peut s'agir d'une chaîne vide. Si une commande de saisie vocale commence par le mot clé donné, le reste de la commande sera utilisé pour extraire les informations nécessaires. Notez qu'il n'est pas possible de faire une reconnaissance vocale par expression régulière. Toutes les valeurs possibles doivent être ajoutées à la grammaire en utilisant l'action
- Obligatoire : non
- Valeur par défaut : none
extract_to_workflow : Par défaut, les groupes résultants seront enregistrés dans la portée de l'étape. Si vous mettez cet attribut à true, les variables seront enregistrées dans la portée du workflow.
- Obligatoire : non
- Valeur par défaut : none
entrée : Permet de passer une entrée initiale à vérifier lors de la reprise.
- Obligatoire : non
- Valeur par défaut : none
Événements
Le gestionnaire émet les événements suivants :
VALID_EXTRACTION
ou INVALID_EXTRACTION
: Le gestionnaire vérifiera tout événement d'entrée avec la modalité "BARCODE" et "SPEECH" (si le paramètre "code_word_extraction" est fourni) et émettra un événement avec la commande "VALID_EXTRACTION" ou "INVALID_EXTRACTION".INVALID_PATTERN
: Si le modèle fourni contient une erreur de syntaxe, le gestionnaire émettra un événement avec la commande "INVALID_PATTERN".
La structure de la charge utile est comme dans l'exemple d'événements ci-dessous :
{
"command": "VALID_EXTRACTION",
"device":
{
"modality": "value_extractor",
"name": "value_extractor",
"source": "value_extractor",
"descriptor": "value_extractor"
},
"payload":
{
"technology": "SCAN", // [SCAN, VOICE]
"code": "123456789",
"speech_command": "null"
}
}
{
"command": "INVALID_PATTERN",
"device":
{
"modality": "value_extractor",
"name": "value_extractor",
"source": "value_extractor",
"descriptor": "value_extractor"
},
"payload":
{
"technology": "pattern",
"code": "(.()*",
"speech_command": "null"
}
}
Exemple
<value_extractor_handler pattern="(.+)_(.+)" code_word_extraction="USER">
<grp>
<param name="grp_1" type="string">prefix</param>
<param name="grp_2" type="string">suffix</param>
</grp>
</value_extractor_handler>
Le code 'test_user' sera une extraction réussie. Par la suite, #{prefix}
contiendra 'test' et #{suffix}
contiendra 'user'.
Exemple étendu avec le traitement des événements émis
<context>
<list name="user_name_list" listType="UNNAMED">
<elem>barry</elem>
<elem>white</elem>
</list>
</context>
<handlers>
<value_extractor_handler pattern="(.+)_(.+)">
<code_word_extraction></code_word_extraction>
<input>admin_barry</input>
<extract_to_workflow>true</extract_to_workflow>
<grp>
<param name="grp_1" type="string">user_role</param>
<param name="grp_2" type="string">user_name</param>
</grp>
<allowed_values>
<list name="grp_1" listType="UNNAMED">
<elem>admin</elem>
<elem>supervisor</elem>
</list>
<param name="grp_2" type="object">#{user_name_list}</param>
</allowed_values>
</value_extractor_handler>
</handlers>
<states>
<onevent>
<rule id="set_user">
<expression><![CDATA[ #{event(value_extractor):command} == 'VALID_EXTRACTION' && exists(#{user_role}) && exists(#{user_name}) ]]></expression>
<actions>
<setvar id="set_user">
<context_of>workflow</context_of>
<context_update>
<param name="userrole" type="string">#{user_role}</param>
<param name="username" type="string">#{user_name}</param>
</context_update>
</setvar>
</actions>
</rule>
<rule id="invalid_input">
<expression><![CDATA[ #{event(value_extractor):command} == 'INVALID_EXTRACTION' && #{event:payload.technology} == 'SCAN' ]]></expression>
<actions>
<ui_notification id="invalid_user" type="ERROR" duration="SHORT" show_immediately="true">
<message>"#{event:payload.code}" is not a valid user!</message>
</ui_notification>
</actions>
</rule>
</onevent>
</states>