2013-08-16 4 views
1

Я должен принять решение в правиле guvnor, основанное на некотором значении на листе excel. Так можно ли это сделать в правиле guvnor? Позвольте мне объяснить простой пример того, что я хочу сделать именно:Чтение листа Excel в правиле Guvnor

Правило: Прочитать среднюю зарплату в конкретной стране для человека. Чем основан на сред. зарплата вычисляет другие вычисления в правиле.

Я получу страну человека во входных данных. Затем я должен взять эту страну и проверить в Excel Sheet среднюю зарплату и выполнить расчеты на ее основе. Содержание

Excel:


Страна Зарплата


IND $ 2000


США $ 3000


CHN $ 1900


Теперь, если вход Person со страной IND. Итак, как я могу прочитать excel в guvnor?

Лучше прочитать excel в guvnor или прочитать его в java-коде перед вызовом правила и добавив его значение как одно из полей pojo.

Любая помощь очень ценится.

+0

Проблемы заключается в том, что я не могу редактировать Excel, его доступный в стандартном формате , Только для чтения. Поэтому я не могу использовать его в качестве таблицы решений, я думаю. – Neeraj

ответ

2

Я бы проанализировал файл xls извне и ввел данные как факты (или, если хотите, глобалы). Таким образом, вы можете написать правила, как:

when 
    Person($country: country) 
    AvgSalary(country == $country, $salary: salary) //This fact comes from the xls. 
then 
    ... 
end 

Другой вариант заключается в инкапсуляции разборе файла XLS и обеспечивают механизм для извлечения конкретной зарплаты для конкретной страны. В этом случае, вы можете предоставить этот механизм с помощью глобального и писать правила как этот:

global XLSParser; // your parser class 

rule "..." 
when 
    Person($country: country) 
    $salary: Double() from XLSParser.getAvgSalary($country) 
then 
    ... 
end 

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

+0

Спасибо Esteban, я также думал использовать другой факт с данными excel. Я на самом деле новичок в плагине guvnor. Не могли бы вы рассказать мне, как мы можем использовать эту функцию в правилах, как вы делали выше XLSParser.getAvgSalary ($ country). Я использовал редактор правил управления в плагине guvnor. Каков наилучший способ создания правила? – Neeraj

Смежные вопросы