Este controlador evalúa si un valor es válido en función de un patrón o de una lista de patrones.
Tipo: value_evaluation_handler
A continuación, se muestra una explicación de los atributos disponibles:
/s
definido. Si coincide, la entrada es válida.El controlador emite los siguientes eventos:
VALID
: Si la entrada proporcionada coincide con el patrón.ALREADY_VALID
: Si la entrada proporcionada coincide con un patrón que ya se ha validado correctamente.ALL_VALID
: Si todos los elementos de la to_evaluate
colección se han validado correctamente.INVALID
: Si la entrada proporcionada no coincide con ningún patrón.La estructura de la carga útil es la siguiente:
{ "command": "VALID", "device": { "modality": "value-evaluation", "name": "value-evaluation", "source": "value-evaluation", "descriptor": "value-evaluation" }, "payload": { "code": "I am legend" } } { "command": "INVALID", "device": { "modality": "value-evaluation", "name": "value-evaluation", "source": "value-evaluation", "descriptor": "value-evaluation" }, "payload": { } }
<context> <param name="validations" type="string"></param> </context> <handlers> <value_evaluation_handler> <code_word_extraction>validate</code_word_extraction> <list name="to_evaluate" listType="UNNAMED"> <elem>machine .+</elem> <elem>station .+</elem> </list> </value_ evaluation_handler> </handlers> <states> <onevent> <rule id="is_valid"> <expression> <![ CDATA[ #{event(value-evaluation):command} == 'VALID' ]]> </expression> <actions> <setvar id="add_validation"> <context_of>step</context_of> <context_update> <param name="validations" type="string">#{validations} #{event:payload.code}</param> </context_update> </setvar> </actions> </rule> <rule id="all_valid"> <expresión> <![ CDATA[ #{event(value-evaluation):command} == 'ALL_VALID' ]]> </expression> <actions> <finish_workflow id="exit"/> </actions> </rule> <rule id="invalid_input"> <expression> <![ CDATA[ #{event(value-evaluation):command} == 'INVALID' ]]> </expression> <actions> <ui_notification id="invalid_value" type="ERROR" duration="SHORT" show_immediately="true"> <message>"¡No es un valor válido!</message> </ui_notification> </actions> </rule> </onevent> </states>
Este controlador se utiliza para implementar el escaneo de códigos de barras a través de hardware de escaneo dedicado. Extrae el escáner o la entrada de voz en función de una lista de patrones y comprueba si al menos uno de estos patrones es válido.
Tipo: value_extractor_handler
A continuación, se muestra una explicación del atributo disponible:
Los diferentes elementos son los siguientes:
or
, porque cada grupo debe contener un valor o escaneo permitido.
true
se guardarán las variables almacenadas en el scopte del flujo de trabajo.
resume
.
El controlador emite los siguientes eventos:
VALID_EXTRACTION
o INVALID_EXTRACTION
: El controlador comprobará cualquier evento de entrada con las BARCODE
modalidades y SPEECH
(si se proporciona el code_word_extraction
parámetro) y emitirá un evento con los VALID_EXTRACTION
comandos orINVALID_EXTRACTION
.INVALID_PATTERN
: Si el patrón proporcionado contiene un error de sintaxis, el controlador emitirá un evento con el INVALID_PATTERN
comando .La estructura de la carga útil es la siguiente:
{ "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", "código": "(.() *", "speech_command": "nulo" } }
<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>
Un código como "test_user" se extraerá correctamente. Después, #{prefix}
contendrá "prueba" y #{suffix}
contendrá "usuario".
<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}" no es un usuario válido!</message> </ui_notification> </actions> </rule> </onevent> </states>