2012-03-15 3 views

답변

2

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 
1

참고 : "실행 구성"내에 규칙 집합 작성을 자동화 할 수 있습니다.
규칙을 변경할 때마다 수동으로 새 규칙 집합을 만들 필요가 없습니다.
규칙 아티팩트에서 뭔가를 테스트 할 때처럼 규칙을 자주 변경하면 규칙 집합을 내보내는 것이 고통입니다 .

코드는 물론 다음과 같이 수 :

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“);

재생을 자바에보고하거나 물건을 주장와 ...

그것이

+0

대답 하나 대답 할 수 있습니까? http://stackoverflow.com/questions/10233177/how-to-pass-a-collection-from-a-rule-to-a-java-method – cherit

0

문제가 모든 매개 변수를 삭제와 함께있다 도움이되기를 바랍니다 매개 변수 페이지에서 규칙 프로젝트 페이지/탭에서 '함수를 사용하여 프로젝트 시작'을 선택한 후; 인수 집합을 지정하지 않고 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();