このハンドラーは、パターンまたはパターンのリストに基づいて値が有効かどうかを評価します。
タイプ: value_evaluation_handler
使用可能な属性の説明は次のとおりです。
/sと一致する必要があります。一致する場合、入力は有効です。ハンドラーは、次のイベントを発行します。
VALID: 指定された入力がパターンと一致する場合。ALREADY_VALID: 指定された入力が、既に正常に検証されているパターンと一致する場合。ALL_VALID: コレクションのすべての要素が to_evaluate 正常に検証された場合。INVALID: 指定された入力がどのパターンにも一致しない場合。ペイロードの構造は次のとおりです。
{
"command": "VALID",
"device":
{
"modality": "value-evaluation",
"name": "value-evaluation",
"source": "value-evaluation",
"descriptor": "value-evaluation"
},
"payload":
{
"code": "私はレジェンド"
}
}{
"command": "無効",
"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><
ruleid="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>"有効な値ではありません!</message><
/ui_notification>
</actions><
/rule></onevent><
/states>
このハンドラは、専用のスキャンハードウェアを介してバーコードスキャンを実装するために使用されます。パターンのリストに基づいてスキャナーまたは音声入力を抽出し、これらのパターンの少なくとも 1 つが有効かどうかを確認します。
タイプ: value_extractor_handler
使用可能な属性の説明は次のとおりです。
さまざまな要素は次のとおりです。
or通常の式では使用できません。
trueと、代わりにワークフローのスコープに変数が保存されます。
resume初期入力を渡すことができます。
ハンドラーは、次のイベントを発行します。
VALID_EXTRACTIONor INVALID_EXTRACTION: ハンドラーは、 BARCODE と (SPEECHパラメーターが指定されている場合code_word_extraction) モダリティを持つ入力イベントをチェックし、 or INVALID_EXTRACTION コマンドでVALID_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" と "user" が含まれます#{suffix}。
<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です>