Как я могу интегрировать BIRT в GWT? - PullRequest
0 голосов
/ 25 августа 2011

Мне нужно интегрировать механизм диаграмм BIRT в одно из моих приложений.Birt может генерировать изображение в качестве вывода диаграммы.Моя идея состоит в том, чтобы создать это изображение диаграммы и затем отправить его на сторону клиента для отображения.Возможно, в RemoteServiceServlet на сервере.Это лучший способ сделать это?или есть другие способы сделать это правильно?

заранее спасибо,

Ответы [ 2 ]

0 голосов
/ 28 февраля 2013

Сделайте так, чтобы клиент отправил RPC и разрешил серверу делать все рендеринг BIRT. После завершения работы сервера передайте полученный HTML-код (или изображение) обратно клиенту. См. http://www.birt -exchange.org / org / forum / index.php / topic / 15515-build-birt-report-engine-with-gwt /

myServiceImpl.getReport(
    "monthlySales",
    "2013-02-01",
    "includeGST",
    new AsyncCallback<String>() {
        public void onSuccess(String serverGeneratedBirtHtml) {
            myVerticalPanel.add(new HTML(serverGeneratedBirtHtml));
        }
    }
);
0 голосов
/ 25 августа 2011

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

  1. Клиент отправляет запрос RPC на сервер с параметрами отчета.
  2. Сервер добавляет параметры в очередь отчетов и отвечает некоторым токеном, который можно использовать для получения содержимого.отчета позже.
    • Содержимое отчета генерируется в отдельном потоке или, возможно, на отдельном компьютере, если отчет требует больших вычислительных ресурсов.
    • Если отчет гарантированно займет очень мало времени,завершено, он может быть сгенерирован немедленно, но в любом случае содержимое отчета должно быть записано в механизм хранения для последующего извлечения.
  3. (Опционально) Клиент опрашивает некоторую службучтобы определить, готов ли отчет.
  4. Клиент представляет отчет пользователю.
    • В вашем случае презентация будет состоять из создания Image виджета, возможно, с шаблоном URL http://example.com/getReportImage/<Generated Token>.Этот запрос можно просто заблокировать до завершения отчета.

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

Что касается выбора использования data: URL-адресов, то это имеет смысл, только если ваши пользователи используют современные браузеры и размер изображения крошечный.Это не подходит для общего случая.

...