Value Evaluation Handler
Dieser Handler bewertet, ob ein Wert auf der Grundlage eines Musters oder einer Liste von Mustern gültig ist.
Typ: wert_auswertung_handler
Attribute
Hier finden Sie eine Erläuterung der verfügbaren Attribute:
- zu_auswerten: Die Eingabe muss mit dem definierten Muster
/s
übereinstimmen. Wenn sie übereinstimmt, ist die Eingabe gültig. - code_word_evaluation: Die Spracheingabe wird nur geprüft, wenn dieses Attribut gesetzt ist. Es kann eine leere Zeichenkette sein. Beginnt ein Spracheingabebefehl mit dem angegebenen Schlüsselwort, wird der Rest des Befehls zur Bewertung herangezogen.
- Erforderlich: False
- Standardwert: Keine
Veranstaltungen
Der Handler gibt die folgenden Ereignisse aus:
VALID
: Wenn die angegebene Eingabe mit dem Muster übereinstimmt.ALREADY_VALID
: Wenn die angegebene Eingabe mit einem Muster übereinstimmt, das bereits erfolgreich überprüft wurde.ALL_VALID
: Wenn alle Elemente der to_evaluate-Sammlung
erfolgreich validiert wurden.INVALID
: Wenn die angegebene Eingabe mit keinem Muster übereinstimmt.
Die Struktur der Nutzlast ist wie folgt:
{
"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":
{
}
}
Beispiel
<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>
Wert-Extraktor-Handler
Dieser Handler wird verwendet, um das Scannen von Barcodes über eine spezielle Scan-Hardware zu implementieren. Er extrahiert Scanner- oder Spracheingaben auf der Grundlage einer Liste von Mustern und prüft, ob mindestens eines dieser Muster gültig ist.
Typ: value_extractor_handler
Attribute
Hier finden Sie eine Erläuterung der verfügbaren Attribute:
- Muster: Die Eingabe muss mit dem definierten Muster übereinstimmen. Wenn sie übereinstimmt, können die definierten Gruppen extrahiert werden.
Elemente
Die verschiedenen Elemente sind wie folgt:
- grp: Speichert die Informationen darüber, wie jedes Element in der Gruppe extrahiert werden soll, als eine Liste von Parametern.
- Erforderlich: Nein
- Standardwert: Leere Liste
- erlaubte_Werte: Ermöglicht es, eine Liste von Werten festzulegen, die überprüft werden sollen, nachdem das Muster als korrekt bewertet wurde. Dies kann nicht mit regulären Ausdrücken verwendet werden, die
oder
enthalten, da jede Gruppe einen zulässigen Wert oder eine Prüfung enthalten muss.- Erforderlich: Nein
- Standardwert: Keine
- code_word_extraction: Die Spracheingabe wird nur geprüft, wenn dieses Attribut gesetzt ist. Es kann eine leere Zeichenkette sein. Wenn ein Spracheingabebefehl mit dem angegebenen Schlüsselwort beginnt, wird der Rest des Befehls verwendet, um die erforderlichen Informationen zu extrahieren. Beachten Sie, dass eine Spracherkennung über reguläre Ausdrücke nicht möglich ist. Alle möglichen Werte müssen der Syntax über die entsprechende Aktion hinzugefügt werden.
- Erforderlich: Nein
- Standardwert: Keine
- extract_to_workflow: Standardmäßig werden die resultierenden Gruppen im Bereich des Schritts gespeichert. Wird dieses Attribut auf
true
gesetzt, werden die Variablen stattdessen im Bereich des Workflows gespeichert.- Erforderlich: Nein
- Standardwert: Keine
- Eingabe: Ermöglicht die Übergabe einer Anfangseingabe, die bei der
Wiederaufnahme
geprüft wird.- Erforderlich: Nein
- Standardwert: Keine
Veranstaltungen
Der Handler gibt die folgenden Ereignisse aus:
VALID_EXTRACTION
oder INVALID_EXTRACTION
: Der Handler prüft jedes Eingabeereignis mit den Modalitäten BARCODE
und SPEECH
(wenn der Parameter code_word_extraction
angegeben ist) und gibt ein Ereignis mit den Befehlen VALID_EXTRACTION
oder INVALID_EXTRACTION
aus.INVALID_PATTERN
: Wenn das angegebene Muster einen Syntaxfehler enthält, wird der Handler ein Ereignis mit dem Befehl INVALID_PATTERN
auslösen.
Die Struktur der Nutzlast ist wie folgt:
{
"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"
}
}
Beispiel
<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>
Ein Code wie "test_user" wird erfolgreich extrahiert. Danach wird #{prefix}
"test" und #{suffix}
"user" enthalten.
Erweitertes Beispiel mit der Verarbeitung von emittierten Ereignissen
<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>