Отображение вычисленных данных с внешними зависимостями

StackOverflow https://stackoverflow.com/questions/1299043

  •  18-09-2019
  •  | 
  •  

Вопрос

Я создаю отчет, который должен включать столбец "оценка", основанный на данных, недоступных в наборе данных.

В идеале я хотел бы иметь возможность определять интерфейс 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?

Или..какой-то скриптовый источник данных, который затем используется для создания набора данных join?

Это было полезно?

Решение

Я думаю, что скриптовый источник данных работал бы нормально, но обработчик событий на основе Java был бы более простым.Вы можете реализовать его как простой POJO и получить доступ ко всем без исключения сложным объектам и инструментам, которые позволят вам рассчитать вашу оценку.Самым простым решением из всех может быть простое добавление вычисляемого поля к набору данных.

При создании вычисляемого поля вы можете получить довольно сложную с точки зрения логики сценария логику, которую вы можете использовать для получения результирующего значения.Самое приятное в этом маршруте то, что все остальные значения столбца в строке (которые, я полагаю, вам нужны для вычисления оценки) становятся доступными через редактор выражений.Вы можете использовать сложные объекты (POJO), чтобы помочь в ваших вычислениях и здесь, используя объект "Пакеты" (т.е. var red = new Packages.redwood.HelloWorld())

Если вы хотите создать класс обработчика событий, вот что я бы сделал.Я бы создал текстовый объект и привязал onCreate даже к вашему POJO (расширив TextItemEventAdapter) и переопределил метод "onCreate".Там вы можете выполнить любую работу, какую захотите, и в конце просто позвонить 'text.setText(theEstimateResult);"чтобы сделать видимой саму оценку.Что касается доступа к значениям данных для выполнения ваших вычислений, вы также можете получить доступ к ним в POJO.Я предполагаю, что оценка будет частью более крупной таблицы значений.Вы можете получить доступ к любому конкретному значению строки через reportContext.

Это две идеи, которые я бы попробовал в первую очередь.Вычисляемый столбец является самым быстрым в реализации и с наименьшей вероятностью вызовет кривизну во время развертывания.Дайте мне знать, какой способ вы выберете, и мы сможем обсудить это подробнее, если потребуется.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top