Алгоритмы ветвления
Ниже описаны стандартные алгоритмы ветвления:
Алгоритм
|
Описание
|
wt.rule.algorithm.BooleanBranch
|
Использует список из трех объектов. Первый объект в теге Value должен возвращать логическое значение, сообщающее алгоритму BooleanBranch, какой из двух других объектов, содержащихся в аргументе, следует вернуть.
|
wt.rule.algorithm.CaseBranch
|
Подобно BooleanBranch, за исключением того, что ветвление происходит для случая ИСТИНА. Для каждого случая существует аргумент и один дополнительный аргумент, возвращаемый по умолчанию, если ни один из случаев не соответствует значению ИСТИНА.
|
Общий синтаксис алгоритмов BooleanBranch следующий:
<Value algorithm="wt.rule.algorithm.BooleanBranch">
<Value algorithm="xxx">
:
</Value>
<Arg>yyy</Arg>
<Arg>zzz</Arg>
</Value>
Алгоритм, упомянутый во вложенном теге
Value(идентифицируемый в формате "ххх"), может быть любым допустимым алгоритмом, возвращающим логическое значение. Один из объектов в
аргументах (идентифицируемых как теги
Arg и строки "yyy" и "zzz") используется в зависимости от результата алгоритма "xxx".
Алгоритм CaseBranch содержит три случая и имеет следующий общий синтаксис:
<Value algorithm="wt.rule.algorithm.CaseBranch">
<Value algorithm="xxx1">
:
</Value>
<Arg>yyy1</Arg>
<Value algorithm="xxx2">
:
</Value>
<Arg>yyy2</Arg>
<Value algorithm="xxx3">
:
</Value>
<Arg>yyy3</Arg>
<Arg>yyy4</Arg>
</Value>
Алгоритм CaseBranch может иметь любое количество случаев. Каждый случай в алгоритме CaseBranch состоит из элемента Value, который может принимать значения ИСТИНА или ЛОЖЬ, и аргумента, который следует непосредственно за элементом Value. Если элемент Value принимает значение ИСТИНА, используется аргумент, а оставшиеся теги в ограничении не вычисляются. Если элемент Value в первом варианте принимает значение ЛОЖЬ, вычисляется следующий вариант. Оценка каждого случая продолжается в том порядке, в котором случаи перечислены в файле, до тех пор, пока текущая оценка не вернет результат ИСТИНА. Используется связанный со случаем аргумент. Если ни один из указанных случаев не принимает значение ИСТИНА, используется последний аргумент алгоритма CaseBranch.
В общем синтаксисе, представленном выше, в качестве значений в тегах Arg можно использовать строки. При необходимости теги Arg можно заменить тегами Value. Использование вложенных тегов Value вместо тегов Arg позволяет выполнить дополнительную оценку аргументов.