2012-04-18 3 views
0

Я использую JRules Studio для разработки некоторых чрезвычайно простых правил. Правила заполняют параметр IN_OUT. Когда тест заканчивается, есть ли способ опроса значений в объекте IN_OUT?JRules Studio - отображает значения параметров IN_OUT при тестировании

Первоначально я хотел бы допросить его в отладчике, но любые другие идеи будут приветствоваться.

+0

Can вы добавляете немного больше деталей? Что именно вы хотите сделать после выполнения правила? – sdfx

ответ

0

Я не уверен, чтобы понять вопрос:

Ваш код JAVA, как это:
IlrSessionFactory factory = new IlrJ2SESessionFactory();
IlrStatelessSession session = factory.createStatelessSession();
IlrSessionRequest sessionRequest = factory.createRequest();
sessionRequest.setRulesetPath(“/RuleAppName/rulesetName”);
sessionRequest.setTraceEnabled(true);
sessionRequest.getTraceFilter().setInfoAllFilters(true);
Map inputParameters = new HashMap();
Report in_report = new Report(); // no-arg constructor
// ... populate the Object ...
inputParameters.put("report", in_report);
sessionRequest.setInputParameters(inputParameters);
IlrSessionResponse sessionResponse = session.execute(sessionRequest);
Report out_report = (Report)sessionResponse.getOutputParameters().get("report“);


А потом, когда вы играете с «из» параметров ... Как вы могли бы сделать с любой JAVA объект

Если вы хотите увидеть их во время отладки, я бы сказал:

1/(не проверено) Посмотрите на «рабочей вкладке памяти» в отладчике перспектива
Я не уверен, но это самый простой способ, чтобы найти их, если это видно здесь

2/(испытания) в начальном действии начальной точки вашего ruleflow, добавьте:
context.insert ( техническое название вашего параметра);
Не «фирменное наименование». Во всяком случае, избегайте использования BAL в техническом артефакте, таком как правила, правила IRL!

При этом вы вынуждаете двигатель вставлять ваш параметр в рабочую память.
отсутствие дублирования (не волнуйтесь, он будет работать как шарм), но, насколько я помню, это самый короткий путь, чтобы сделать их видимыми в отладчик Eclipse, в JRules

Надеюсь, что это помогает

+0

BTW: вы можете добавить точку останова внутри самого правила. Но только на части действия. Это связано с тем, что двигатель не обязательно знает, что такое тест условий для какого правила. Иными словами, двигатель может задавать такой вопрос, как (user.age) и сохранять ответ на вопрос пользователя. Который заставляет двигатель работать быстрее, и вы не будете постоянно задавать один и тот же вопрос, особенно в таблице решений, например, – Damien

+0

Совет: если вы хотите знать значение переменной в части состояния, тогда трюк прост , Создайте метод в своей спецификации, который возвращает логическое значение и просто напечатает параметр в теле метода. :) – Damien