Controlador de evaluación de valores

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

Atributos

A continuación, se muestra una explicación de los atributos disponibles:

  • to_evaluate: La entrada debe coincidir con el patrón /sdefinido. Si coincide, la entrada es válida.
  • code_word_evaluation: La entrada de voz solo se comprobará si se establece este atributo. Puede ser una cadena vacía. Si un comando de entrada de voz comienza con la palabra clave dada, el resto del comando se usará para la evaluación.
    • Obligatorio: Falso
    • Valor predeterminado: Ninguno

Eventos

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":
          {
          }
    }

Ejemplo

<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>

Controlador de extractor de valores

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

Atributos

A continuación, se muestra una explicación del atributo disponible:

  • patrón: La entrada debe coincidir con el patrón definido. Si coincide, se pueden extraer los grupos definidos.
    • Obligatorio: Sí

Elementos

Los diferentes elementos son los siguientes:

  • PRFV: Almacena la información sobre cómo se debe extraer cada elemento del grupo como una lista de parámetros.
    • Obligatorio: No
    • Valor predeterminado: Lista vacía
  • allowed_values: Permite establecer una lista de valores que se comprobarán después de que el patrón haya sido evaluado como correcto. Esto no se puede usar con expresiones regulares que contengan or, porque cada grupo debe contener un valor o escaneo permitido.
    • Obligatorio: No
    • Valor predeterminado: Ninguno
  • code_word_extraction: La entrada de voz solo se comprobará si se establece este atributo. Puede ser una cadena vacía. Si un comando de entrada de voz comienza con la palabra clave dada, el resto del comando se utilizará para extraer la información necesaria. Tenga en cuenta que el reconocimiento de voz a través de expresiones regulares no es posible. Todos los valores potenciales deben agregarse a la sintaxis a través de la acción correspondiente.
    • Obligatorio: No
    • Valor predeterminado: Ninguno
  • extract_to_workflow: De forma predeterminada, los grupos resultantes se almacenarán en el ámbito del paso. Si se establece este atributo en true se guardarán las variables almacenadas en el scopte del flujo de trabajo.
    • Obligatorio: No
    • Valor predeterminado: Ninguno
  • entrada: Le permite pasar una entrada inicial para que se compruebe en resume.
    • Obligatorio: No
    • Valor predeterminado: Ninguno

Eventos

El controlador emite los siguientes eventos:

  • VALID_EXTRACTIONo 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"
          }
    }

Ejemplo

<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".

Ejemplo extendido con el procesamiento de eventos emitidos

<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>