2016-06-06 3 views
0

У меня есть набор правил для каждого из моих пользователей. Сейчас эти правила настраиваются в файле. Но я хочу разрешить моим пользователям изменять/добавлять правила. Правила не так уж сложны. Например, ниже несколько правил:Разрешение конечным пользователям изменять файл правил

rule "Rule 1" 
    when 
     $order : OrderInfo(getOrderDate() < new Date(...) 
    then 
     $order.setReturnEligibility(false); 
end 

rule "Rule 2" 
when 
    $item : ItemInfo(nonReturnableCategory.contains(getItemCategory().toLowerCase())) 
then 
    $item.setReturnEligibility(false); 
end 

rule "Rule 3" 
    when 
     $item : ItemInfo(isFinalSale()) 
    then 
     $item.setReturnMethod(...); 
end 

Я хочу построить пользовательский интерфейс, похожий на Drools верстак. Но это для конечного пользователя, поэтому я хочу, чтобы это был простой, удобный пользовательский интерфейс. И я планировал хранить правила в базе данных.

Я хочу, чтобы пользователи могли добавлять новые правила и изменять существующие. Например, если правило 3 выше не было доступно, у пользователя будет выпадающий список в пользовательском интерфейсе, где они могут выбирать категории товаров, которые не подлежат возврату. Или они могут включать или отключать любое из правил и т. Д.

Что я хотел знать, это лучший способ сохранить правила? Должен ли я просто содержать весь файл правил в виде строки в БД с помощью каких-либо держателей мест и изменять строку как и когда пользователь добавляет/обновляет правила? Я использую Drools 6.2. Я знаю, что вопрос нечеткий, но я понятия не имею, как и с чего начать, поэтому любое предложение оценивается.

Спасибо.

+0

Ваши «конечные пользователи» знают, по крайней мере, твердое подмножество Java? Вы уверены? * – laune

ответ

0

Если изменение существующего правила означает, что только ограничение ограничивает «текст с помощью держателя места», это может быть хорошей идеей.

Однако я не буду хранить весь файл DRL в качестве записи в БД. Вероятно, система, в которой отдельные правила хранятся, поскольку сущности будут работать лучше всего. Атрибуты были бы именем, текстом, атрибутом «выбрано» и т. Д.

+0

Спасибо за ваши предложения. Я планирую следовать вашему методу хранения отдельных правил как отдельных объектов. Однако у меня есть еще один вопрос относительно производительности, о котором я просил по адресу http://stackoverflow.com/questions/37671645/drools-concerns-about-performance-and-thread-safety. Любые предложения для этого? – drunkenfist

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