как вызвать функцию ilrmain в ilog jrules - PullRequest
1 голос
/ 15 марта 2012

как мне вызвать функцию ilrmain в ilog jrules, вызывается ли она неявно или мы должны явно вызывать, в последнем случае, как мне это сделать.Документация IBM очень неясна в отношении функции ilrmain.

Ответы [ 3 ]

2 голосов
/ 21 марта 2012

IlrMain предоставляет простой способ проверить ваши правила без лишних затрат. Вы определяете свои входные переменные, создаете свой тестовый сценарий и вызываете правило выполнение с context.execute. После выполнения вы можете отобразить результат.

Вот небольшой пример: Представьте, что вы создали набор правил, чтобы решить, предоставлять ли кредит или нет. Ваш ввод называется приложение типа LoanApplication и вы ожидайте решения в вашем выводе. Ваш IlrMain будет выглядеть что-то как это:

LoanApplication app = new LoanApplication();
app.loanAmount = 5000
Applicant applicant = new Applicant();
app.applicant = applicant;
applicant.dateOfBirth = new ilog.rules.xml.types.IlrDate("1980-01-01");
applicant.income = 2000;
applicant.fixedExpenses = 600;

input = app;
context.execute();

System.out.println("Loan Decision: "+output.decision);

Чтобы запустить IlrMain, нажмите Выполнить> Выполнить настройки ...> Правило Спроектируйте и создайте новую конфигурацию запуска для вашего проекта правила. Выберите проект с вашей IlrMain-функцией и сделайте shure Launch проект с функцией ilrmain выбран. В разделе Параметры и аргументы следует выбрать Очистить все значения , поэтому что параметр из вашего IlrMain используется для выполнения. Применить и запустить

В вашей командной строке должно появиться ваше решение о кредите. Что-то вроде:

Loan Decision: green
1 голос
/ 18 апреля 2012

Примечание: внутри вашей "Run Configuration" вы можете автоматизировать создание набора правил.
Поэтому вам не нужно создавать новый набор правил каждый раз, когда вы меняете правило ...
Экспорт набора правил - это боль в спине, если вы часто меняете правила, например, когда вы что-то тестируете в своих артефактах правил.

Ваш код может выглядеть так же:

IlrSessionFactory factory = new IlrJ2SESessionFactory();<br> IlrStatelessSession session = factory.createStatelessSession();<br> IlrSessionRequest sessionRequest = factory.createRequest();<br> sessionRequest.setRulesetPath(“/RuleAppName/rulesetName”);<br> sessionRequest.setTraceEnabled(true);<br> sessionRequest.getTraceFilter().setInfoAllFilters(true);<br> Map inputParameters = new HashMap ();<br> Report in_report = new Report(); // no-arg constructor<br> // ...populate the report...<br> inputParameters.put("report", in_report);<br> sessionRequest.setInputParameters(inputParameters);<br> IlrSessionResponse sessionResponse = session.execute(sessionRequest);<br> Report out_report = (Report)sessionResponse.getOutputParameters().get("report“);<br>
Поиграйте с вами на Java или отстаивайте ...

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

0 голосов
/ 20 ноября 2013

Существует проблема с очисткой всех параметров на странице параметров после выбора «Запустить проект с функцией ilrmain» на странице / вкладке Rule Project;Вы не можете запустить техническую функцию ilrmain без установленных аргументов.Вы должны установить выражение аргумента в что-то, это могут быть пустые значения.Предположим, что XOM имеет конструктор без аргументов {Customer ()};затем установите выражение аргумента в 'new Customer ()'. Сохраните и запустите ilrmain.Убедитесь, что CLASSPATH VARIABLE IS установлен в файл rule-engine.jar и запустите функцию.Он должен работать.Если у вас есть еще вопросы, пожалуйста, напишите обратно.Вот пример - (счетчик количества правил подтвердит, что правило сработало), используйте подпись ilrmain как void ilrmain (Object arg) .--

    customer.firstName="Abhishek";

    customer.age=17;

    int nrules = 0;



    insert customer;



    execute ();

    System.out.println(" The last name of the customer is " + customer.lastName );

    System.out.println("The first name of the customer is " +customer.firstName);


    nrules += returnValues.getIntValue("ilog.rules.firedRulesCount");

    System.out.println("The Number of rules fired " + nrules);

    //retractAll();

    //reset (); 
...