Este manipulador é usado para implementar a leitura de código de barras usando hardware de leitura dedicado. Ele extrai o scanner ou a entrada de voz com base em uma lista de padrões e verifica se pelo menos um desses padrões é válido.
Tipo: value_extractor_handler
Atributos
O atributo para o manipulador de extrato de valor é:
padrão: A entrada precisa corresponder ao padrão definido. Se corresponder, os grupos definidos podem ser extraídos
Elementos
Diferentes Elementos são os seguintes:
grp: Armazena as informações, como cada membro do grupo deve ser extraído como uma lista de parâmetros
- Obrigatório: não
- Valor padrão: lista vazia
valores_permitidos: Permite definir uma lista de valores, que será verificada, após o padrão estar correto. Não pode ser usado com regexes contendo "ou", porque cada grupo tem que conter um valor permitido ou scan
- Obrigatório: não
- Valor padrão: nenhum
código_palavra_extração: Soeech Input só será verificado se este atributo for definido. Ele pode ser uma string vazia. Se um comando de entrada de fala começar com a palavra-chave dada, o resto do comando será usado para extrair as informações necessárias. Note que não é possível fazer reconhecimento de fala de expressão regular. Todo o valor possível precisa ser adicionado à gramática usando a ação
- Obrigatório: não
- Valor padrão: nenhum
extract_to_workflow: Por padrão, os grupos resultantes serão salvos no escopo da etapa. Definindo este atributo como verdadeiro, as variáveis serão salvas no escopo do fluxo de trabalho.
- Obrigatório: não
- Valor padrão: nenhum
entrada: Permite que você passe uma entrada inicial para ser verificado no currículo
- Obrigatório: não
- Valor padrão: nenhum
Eventos
O manipulador emite os seguintes eventos:
VALID_EXTRACTION
ou INVALID_EXTRACTION
: O manipulador verificará qualquer evento de entrada com a modalidade "BARCODE" e "SPEECH" (se o parâmetro "code_word_extraction" for fornecido) e emitirá um evento com o comando "VALID_EXTRACTION" ou "INVALID_EXTRACTION".INVALID_PATTERN
: Se o padrão fornecido contiver um erro de sintaxe, o manipulador emitirá um evento com o comando "INVALID_PATTERN".
A estrutura de carga útil é como nos eventos de exemplo abaixo:
{
"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"
}
}
Exemplo
<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>
O código 'test_user' será uma extração bem sucedida. Depois disso, #{prefixo}
conterá 'teste' e #{sufixo}
conterá 'usuário'.
Exemplo ampliado com o processamento 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}" is not a valid user!</message>
</ui_notification>
</actions>
</rule>
</onevent>
</states>