价值评估处理程序
该处理程序根据模式或模式列表评估值是否有效。
类型:值评估处理程序
属性
下面是对可用属性的解释:
- 进行评估: 输入必须与定义的
/s
模式匹配。如果匹配,则输入有效。 - code_word_evaluation: 只有设置了该属性,才会对语音输入进行检查。它可以是空字符串。如果语音输入命令以给定的关键字开头,命令的其余部分将用于评估。
活动
处理程序会发出以下事件
VALID(有效
): 如果提供的输入与模式匹配。ALREADY_VALID
:如果提供的输入与已成功验证的模式匹配。ALL_VALID
: 如果to_evaluate
集合中的所有元素都已成功验证。无效
: 如果提供的输入与任何模式都不匹配。
有效载荷结构如下
{
"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">
<expression>
<![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>"Not a valid value!</message>
</ui_notification>
</actions>
</rule>
</onevent>
</states>
值提取处理程序
该处理程序用于通过专用扫描硬件实现条形码扫描。它根据模式列表提取扫描仪或语音输入,并检查其中至少一个模式是否有效。
类型:值提取器处理程序
属性
下面是对可用属性的解释:
- 模式: 输入必须与定义的模式匹配。如果匹配,就可以提取定义的分组。
要素
不同的要素如下:
- grp: 以参数列表的形式存储有关如何提取组中每个项目的信息。
- allowed_values: 允许设置一个值列表,在模式被评估为正确后进行检查。此功能不能用于包含
或 的
正则表达式,因为每组必须包含一个允许值或扫描。 - code_word_extraction: 只有设置了该属性,才会检查语音输入。它可以是空字符串。如果语音输入命令以给定的关键词开头,命令的其余部分将用于提取必要的信息。请注意,通过正则表达式进行语音识别是不可能的。所有可能的值都需要通过相应的操作添加到语法中。
- extract_to_workflow: 默认情况下,生成的组将存储在步骤的范围内。将此属性设置为
true
后,变量将保存在工作流的范围内。 - 输入: 允许传递初始输入,以便在
恢复
时进行检查。
活动
处理程序会发出以下事件
VALID_EXTRACTION
或INVALID_EXTRACTION
:处理程序将使用BARCODE
和SPEECH
模式(如果提供了code_word_extraction
参数)检查任何输入事件,并发出带有VALID_EXTRACTION
或INVALID_EXTRACTION
命令的事件。INVALID_PATTERN
:如果提供的模式包含语法错误,处理程序将发出INVALID_PATTERN
命令事件。
有效载荷结构如下
{
"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"
}
}
示例
<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>
诸如 "test_user "这样的代码将被成功提取。之后,#{prefix}
将包含 "test",#{suffix}
将包含 "user"。
处理发射事件的扩展示例
<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>