このハンドラーは、パターンまたはパターンのリストに基づいて値が有効かどうかを評価します。
タイプ: 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_EXTRACTION
or 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です>