値評価ハンドラー

このハンドラーは、パターンまたはパターンのリストに基づいて値が有効かどうかを評価します。

タイプ: value_evaluation_handler

属性

使用可能な属性の説明は次のとおりです。

  • to_evaluate: 入力は、定義されたパターン /sと一致する必要があります。一致する場合、入力は有効です。
  • code_word_evaluation: 音声入力は、この属性が設定されている場合にのみチェックされます。空の文字列にすることができます。音声入力コマンドが指定されたキーワードで始まる場合、コマンドの残りの部分が評価に使用されます。
    • 必須:
    • 既定値: 何一つ

イベント

ハンドラーは、次のイベントを発行します。

  • 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

属性

使用可能な属性の説明は次のとおりです。

  • パターン: 入力は、定義されたパターンと一致する必要があります。一致すると、定義されたグループを抽出できます。
    • 必須:はい

元素

さまざまな要素は次のとおりです。

  • GRPです。 グループ内の各項目の抽出方法に関する情報をパラメーターのリストとして格納します。
    • 必須: いいえ
    • 既定値: 空のリスト
  • allowed_values: パターンが正しいと評価された後にチェックする値のリストを設定できます。これは、各グループに許可された値またはスキャンを含める必要があるため、 を含むor通常の式では使用できません。
    • 必須: いいえ
    • 既定値: 何一つ
  • code_word_extraction: 音声入力は、この属性が設定されている場合にのみチェックされます。空の文字列にすることができます。音声入力コマンドが指定されたキーワードで始まる場合、コマンドの残りの部分を使用して必要な情報が抽出されます。なお、正規表現による音声認識は行えません。すべての潜在的な値は、対応するアクションを介して構文に追加する必要があります。
    • 必須: いいえ
    • 既定値: 何一つ
  • extract_to_workflow: 既定では、結果のグループはステップのスコープに格納されます。この属性を に設定する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です>