Я создаю отчет, который должен содержать столбец «оценка», который основан на данных, недоступных в наборе данных.Отображение вычисленных данных с внешними зависимостями
В идеале я хотел бы иметь возможность определить интерфейс Java
public int getEstimate(int foo_id, int bar_id, int quantity);
где foo_id
, bar_id
и quantity
доступны в строке я хочу оценка представлены.
Будет создано несколько стратегий для составления оценки, поэтому было бы полезно использовать интерфейс, позволяющий их заменять, когда это необходимо.
Глядя на документы BIRT, я думаю, что, возможно, я должен использовать механизмы обработчика событий, но это только позволяет определить класс для использования, и я хотел бы как-то добавить настроенную оценку.
Непринужденный пример может означать, что у меня есть набор данных, который включает столбец IP-адреса, и я хотел бы иметь возможность использовать некоторую службу GeoIP для разрешения страны с IP-адреса. В этом случае у меня будет интерфейс public String getCountryName(String address)
, и фактические реализации могут использовать MaxMind, локальный кеш или другую систему.
Как бы я это сделал?
Или .. было бы лучше, если бы я написал сценарий источника данных, который может интегрировать вычисленные данные перед их доставкой в BIRT?
Или .. какой-то сценарий источника данных, который затем используется для создания набора данных соединения?
Я пытаюсь понять, как в вашем примере экземпляр redwood.HelloWord сможет иметь предварительно сконфигурированные свойства не из сценария BIRT. Например, мой контекст Spring, в котором я пытаюсь запустить BIRT, может иметь реализацию интерфейса службы, которую должен использовать мой оценщик.Игнорирование HelloWorld напрямую означает, что он нуждается в настройке. Возможно, мне нужно взглянуть на Spring AOP для динамического ввода, но я подозреваю, что бит BIRT OSGI может мешать. Обработчики событий выглядят красиво, но я просто не знаю, как получить ссылку на ранее существовавший экземпляр external-to-birt. – ptomli
В примере обработчика событий, если вам нужно захватить ранее существовавший экземпляр чего-либо (и вы работаете в той же виртуальной машине), вам, скорее всего, понадобится «что-то» для реализации шаблона Singleton. Частный конструктор и общедоступный метод getInstance(). Это позволит вам легко схватить его с POJO. – MystikSpiral
ОК, я собираюсь попробовать пару вариантов и посмотреть, что выпадет. Я думаю, что источник данных обеспечит лучшие механизмы контроля в Spring (я могу ввести экземпляр, избегая Singleton), хотя обработчик событий имеет хорошее «чувство» к нему (конкретные классы для определенных целей). благодаря – ptomli