Итерация не обратная, как вы можете видеть, если вы присоединяете журнал аудита к вашему сеансу. Выполнение правил - это то, что следует по умолчанию порядку LIFO (в случае, если вы не используете какую-либо другую стратегию разрешения конфликтов).
Я предлагаю вам не пытаться инкапсулировать объекты в структуры данных. Если вы читаете строки файла и вам нужно обработать эти строки по порядку, просто используйте класс для представления строки и вставьте строки непосредственно в сеанс. Чтобы гарантировать выполнение заказа, вы можете использовать номер строки в качестве параметра значимости.
Например:
rule "Process lines in order"
// salience executes from higher number to lowest number, so using the
// negative value you will executem them from the first to the last
salience (- $lineNumber )
when
$line : Line( $lineNumber : lineNumber )
then
// do something with $line
end
Очевидно, что тот же трюк можно использовать с выбранным вами подходом "из", но механизм гораздо более эффективно сопоставляет факты в рабочей памяти, чем перебирает коллекции объектов.
Надеюсь, это поможет.
Эдсон