API перечисления данных Drools Guvnor

В документации Guvnor я знаю, как определить перечисление данных и использовать его в Guvnor. Можно ли получить перечисление данных из моего собственного кода Java?


person Oliver Zhou    schedule 03.11.2012    source источник


Ответы (2)


Из документации Гувнора:

Программная загрузка перечислений: в некоторых случаях людям может потребоваться полностью загрузить свои данные перечисления из внешнего источника данных (например, из реляционной базы данных). Для этого вы можете реализовать класс, который возвращает карту. Ключ карты — это строка (имя поля Fact.field, как показано выше), а значение — java.util.List of Strings.

public class SampleDataSource2 {
    public Map<String>, List<String> loadData() {
        Map data = new HashMap();
        List d = new ArrayList();
        d.add("value1");
        d.add("value2");
        data.put("Fact.field", d);
        return data;
    }
}

А в перечислении в BRMS ставите:

=(new SampleDataSource2()).loadData()

«=» сообщает ему загрузить данные, выполнив ваш код.

С уважением,

person Esteban Aliverti    schedule 05.11.2012

Надеюсь, еще не поздно ответить на этот вопрос.

Чтобы загрузить enum из приложения в guvnor,

  1. Создайте класс перечисления динамически из строки (в моем случае значения перечисления предоставляются пользователем через графический интерфейс)
  2. Добавьте его в банку, преобразуйте в массив байтов
  3. ОТПРАВИТЬ его руководителю как актив (модель jar) через вызов REST
  4. Вызов операции сохранения репозитория (изменение исходного кода управляющего)

Теперь перечисление будет отображаться как факт в окне вашего правила.

Редактирование/удаление банки модели и последующая проверка правил — это то, о чем вы должны позаботиться.

person user1818489    schedule 17.01.2013