ilogain 함수를 ilog jrules에서 호출하려면 어떻게해야합니까? implcitly로 호출되는지, 아니면 후자의 경우에 어떻게 호출해야합니까? IBM 설명서는 ilrmain 기능과 관련하여 매우 모호합니다.ilogain 함수를 ilog jrules에서 호출하는 방법
답변
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-Function을 사용하여 프로젝트를 선택하고 shure를 만듭니다. 기능을 사용하여 프로젝트를 ilrmain으로 시작합니다. 미만 매개 변수 & 인수을 선택해야합니다. 모두 지우기이므로 IlrMain의 매개 변수가 실행에 사용됩니다. 적용 및 실행
명령 줄에 대출 결정이 표시되어야합니다. 다음과 같이하십시오 :
Loan Decision: green
참고 : "실행 구성"내에 규칙 집합 작성을 자동화 할 수 있습니다.
규칙을 변경할 때마다 수동으로 새 규칙 집합을 만들 필요가 없습니다.
규칙 아티팩트에서 뭔가를 테스트 할 때처럼 규칙을 자주 변경하면 규칙 집합을 내보내는 것이 고통입니다 .
코드는 물론 다음과 같이 수 :
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 report...
inputParameters.put("report", in_report);
sessionRequest.setInputParameters(inputParameters);
IlrSessionResponse sessionResponse = session.execute(sessionRequest);
Report out_report = (Report)sessionResponse.getOutputParameters().get("report“);
재생을 자바에보고하거나 물건을 주장와 ...
그것이
문제가 모든 매개 변수를 삭제와 함께있다 도움이되기를 바랍니다 매개 변수 페이지에서 규칙 프로젝트 페이지/탭에서 '함수를 사용하여 프로젝트 시작'을 선택한 후; 인수 집합을 지정하지 않고 ilrmain 기술 함수를 실행할 수 없습니다. 인수 식을 무언가로 설정해야합니다. 값이 emplty 일 수 있습니다. XOM에 {Customer()} 인수가없는 생성자가 있다고 가정합니다. 인수 표현식을 'new Customer()'로 설정하십시오. ilrmain을 저장하고 실행하십시오. rule-engine.jar 파일에 CLASSPATH VARIABLE이 설정되어 있는지 확인하고 기능을 실행하십시오. 그것은 작동해야합니다. 더 궁금한 점이 있으면 다시 게시하십시오. 다음은 샘플입니다. (규칙 발동 횟수가 규칙이 자동 실행되면 확인됩니다.) 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();
대답 하나 대답 할 수 있습니까? http://stackoverflow.com/questions/10233177/how-to-pass-a-collection-from-a-rule-to-a-java-method – cherit