Warunki źródłowe zaimplementowane przez odbiornik ESM
Warunki źródłowe zaimplementowane przez odbiornik ESM
Połączony stan źródła
Łączy warunki (które również mogą być CombinedSourceConditions) za pomocą operatorów AND lub OR. W pliku XML najbardziej zewnętrzny element source_conditions sam w sobie jest CombinedSourceCondition.
<source_conditions boolean="AND">
<combined_source_condition boolean="OR">
<source_condition>
...
</source_condition>
<source_condition>
...
</source_condition>
</combined_source_condition>
<source_condition>
...
</source_condition>
</source_conditions>ZawszePrawdziwyWarunekŹródłowy
Zawsze prawdziwe, tzn. karta danych zawsze spełnia ten warunek.
<source_condition>
<always_true/>
</source_condition>W wersji 4105 i wcześniejszych
<source_condition>
<alwaysTrue/>
</source_condition>Właściwie nie musisz w ogóle używać tego warunku. Słuchacz będzie zawsze uruchamiany, nawet jeśli pominiesz source_conditions.
Warunek źródła encji
Czy karta danych jest ukryta przed zapisaniem czy po zapisaniu (current_value): tak lub nie
Czy karta danych została wyjęta (do kosza) przed zapisaniem czy po zapisaniu: tak lub nie
<!-- Source condition that matches a data card which was in the trashcan before saving (restored from trashcan?) -->
<source_condition>
<entity>
<state>entityIsDeleted</state>
<value>true</value>
<current_value>false</current_value>
</entity>
</source_condition>
<!-- Source condition that matches a data card which was hidden in saving -->
<source_condition>
<entity>
<state>entityIsHidden</state>
<value>false</value>
<current_value>false</current_value>
</entity>
</source_condition>
<source_condition>
<entity>
<state>entityIsHidden</state>
<value>true</value>
<current_value>true</current_value>
</entity>
</source_condition>FolderSourceCondition
Czy karta danych znajduje się w określonym folderze lub w innym (operator !=). Użyj kodów folderów, a nie identyfikatorów.
<source_condition>
<folder>
<code>computers</code>
<operator>=</operator>
</folder>
</source_condition>GuiEditSourceCondition
Prawda, gdy karta danych źródłowych jest edytowana w edytorze graficznym Efecte.
<source_condition>
<gui_edit/>
</source_condition>NewDataCardSourceCondition
Czy zamierzamy zapisać nową kartę danych: tak czy nie
<source_condition>
<new_datacard>
<value>true</value>
</new_datacard>
</source_condition>Pro źródła własności
Porównaj pole na karcie danych (atrybut) przed zapisaniem lub po zapisaniu (wartość bieżąca true lub false) z wartością innego pola przed zapisaniem lub po zapisaniu za pomocą operatora. Obsługiwane operatory zależą od typu danych.
<!-- Source condition that tests if the name attribute's old value is not the same as the new value -->
<source_condition>
<property>
<attribute>
<code>name</code>
<current_value>false</current_value>
</attribute>
<operator><></operator>
<compared_attribute>
<code>name</code>
<current_value>true</current_value>
</compared_attribute>
</property>
</source_condition>Warunek źródła wartości
Porównaj pole (atrybut) przed zapisaniem lub po zapisaniu (wartość_bieżąca prawda lub fałsz) ze stałą wartością za pomocą operatora. Obsługiwane operatory zależą od typu danych, np. nie można porównać odniesienia do stałej (takiej jak identyfikator lub nazwa karty danych).
<!-- Source condition that tests if the status attribute's value is "Closed" -->
<source_condition>
<value>
<attribute>
<code>status</code>
<current_value>true</current_value>
</attribute>
<operator>=</operator>
<compared_value>Closed</compared_value>
</value>
</source_condition>
<!-- Source condition that tests if the status attribute's value is not empty -->
<source_condition>
<value>
<attribute>
<code>status</code>
<current_value>true</current_value>
</attribute>
<operator>IS NOT NULL</operator>
<compared_value></compared_value>
</value>
</source_condition>ReferencePathValueSourceCondition
Porównaj wartość znalezioną w ścieżce referencyjnej ($code1:code2:code3$) przed zapisaniem lub po zapisaniu (current_value true lub false) z wartością stałą za pomocą operatora. Obsługiwane operatory zależą od typu danych, np. nie można porównać referencji ze stałą (np. identyfikatorem lub nazwą karty danych).
<source_condition>
<reference_path_value>
<reference>
<path>$code1:code2$</path>
<current_value>true</current_value>
</reference>
<operator>=</operator>
<compared_value>Removed</compared_value>
</reference_path_value>
</source_condition>Powyższy warunek będzie spełniony, jeśli atrybut „code1” bieżącej karty danych odwołuje się do karty danych, która ma atrybut z kodem „code2” i wartością „Removed”.
Notatka:
Obecna implementacja działa w taki sposób, że nawet jeśli odwoływany szablon nie ma atrybutu z kodem „code2” lub „code1” jest pustym odniesieniem, wykonywanie jest kontynuowane normalnie. Na przykład, jeśli operatorem jest !=, a porównywaną wartością jest jakaś stała, warunek całego źródła nadal jest w tym przypadku prawdziwy.
Pro PropertySourceCondition
Dzięki temu warunkowi źródłowemu możliwe jest porównanie wartości dwóch takich atrybutów, z których jeden lub oba mogą być referencjami. Pierwszy z nich może być referencją do atrybutu lokalnego (niereferencyjnego), ale drugi musi być atrybutem jakiejś karty danych, do której istnieje referencja. Oba atrybuty muszą mieć ten sam typ danych . Ten warunek źródłowy obsługuje również atrybuty wielowartościowe w sposób zdefiniowany poniżej.
Atrybuty wielowartościowe i dopasowanie warunku
- Jeżeli wszystkie wartości muszą być zgodne, oznacza to, że wszystkie wartości pierwszego atrybutu muszą być zgodne z pewnymi wartościami drugiego atrybutu.
- Jeśli pierwszy lub drugi atrybut nie ma wartości, warunek nie jest spełniony.
- Jeśli nie wszystkie wartości muszą być takie same, wystarczy, że dowolna z wielu wartości w pierwszym atrybucie będzie zgodna z niektórymi z wielu wartości w drugim atrybucie.
W poniższym przykładzie znajduje się odwołanie do własnego pola karty danych oraz pola na innej karcie danych:
<reference_path_property>
<reference>
<path>$code1$</path>
<current_value>true</current_value>
</reference>
<operator>!=</operator>
<compared_reference>
<path>$code2:code3$</path>
</compared_reference>
<require_all_values_match>false</require_all_values_match>
</reference_path_property>W poniższym przykładzie znajdują się odwołania do dwóch pól na innej karcie danych:
<reference_path_property>
<reference>
<path>$code1:code4$</path>
<current_value>true</current_value>
</reference>
<operator>!=</operator>
<compared_reference>
<path>$code2:code3$</path>
</compared_reference>
<require_all_values_match>false</require_all_values_match>
</reference_path_property>