2012-01-24 3 views
6

Я хотел бы добавить механизм отчетности BIRT в существующий webapp в Tomcat. Мне не нужен просмотрчик BIRT, я просто хочу иметь возможность запускать отчеты с URL-адреса, например http://localhost:8080/birt/output?__report=test.rptdesign&sample=my+parameter, и использовать различные опции экспорта pdf, xls, doc, html.Интеграция BIRT в существующем webapp

Руководства по интеграции, которые я нашел до сих пор, включают в себя средства просмотра и записи моих собственных сервлетов для обработки различных форматов.

Я надеялся, что кто-то знает, какие отображения сервлетов из файла web-файла report-engine, который мне нужен, и какие ящики, которые мне нужно будет включать из каталога lib для этой бибонной реализации BIRT в существующем webapp.

ответ

17

Я надеялся, что кто-то знал, просто который сервлетов из файла web.xml отчет двигателем я нуждался и которые банки я должен был бы включать от Lib каталога для этого усеченный реализации BIRT в существующих веб-приложение.

Я не обязательно хочу написать свой собственный сервлет Я просто хотел, чтобы интегрировать существующую среду выполнения отчетов из своего собственного автономного веб-приложение (here под кнопкой «во время выполнения») в мой существующий веб-приложение, так что я не» t должен распространять 2 webapps для поддержки отчетов BIRT. Извините, если это не яснее.

я решить эту проблему, хотя, самым простым способом, в случае, если кто-нибудь имеет подобный вопрос (с использованием BIRT выполнения 3.7.1):

  1. Все, что вам нужно, это следующее отображение сервлета добавлены в собственный webapp\web-inf\web.xml файл:

    <!-- Engine Servlet --> 
    <servlet> 
        <servlet-name>EngineServlet</servlet-name> 
        <servlet-class>org.eclipse.birt.report.servlet.BirtEngineServlet</servlet-class> 
    </servlet> 
    
    <servlet-mapping> 
        <servlet-name>EngineServlet</servlet-name> 
        <url-pattern>/output</url-pattern> 
    </servlet-mapping> 
    
  2. Включите все банки из web-inf\lib каталога runtime в свой собственный webapp\web-inf\lib каталог.

Вы можете запустить .rptdesign файлы с помощью отчетов URL output BIRT из собственного веб-приложение, и указав любой формат, который вы хотите, например:

http://localhost:8080/myOwnWebapp/output?__report=test.rptdesign&__format=pdf 
http://localhost:8080/myOwnWebapp/output?__report=test.rptdesign&__format=html 
http://localhost:8080/myOwnWebapp/output?__report=test.rptdesign&__format=xls 
http://localhost:8080/myOwnWebapp/output?__report=test.rptdesign&__format=doc 
http://localhost:8080/myOwnWebapp/output?__report=test.rptdesign&__format=ppt 
+3

Фантастический ответ, кредит для переполнения стека. Полностью и точно, что просили. Сделал Вель. – MystikSpiral

+0

revisited - работает и для 4.2.2 – Geronimo

+0

Это работает для BIRT 4.3.2 в Tomcat 7. Он не работал в Jetty для 3.7.1 или 4.3.2. – Ryan

1

Как я понимаю вас, вы пытаетесь создать отчет birt для сервлета, где у вас есть * .rptdesign в каком-либо месте.

Хорошо, посмотрите на следующий код

this.bundle = ResourceBundle.getBundle("com.tts.mersal.resources.MersalResources"); 
this.config = new EngineConfig(); 
this.config.setEngineHome(bundle.getString("BIRT_ENGINE_HOME")); 
this.config.setLogConfig(bundle.getString("BIRT_LOGGING_FOLDER_PATH"), Level.ALL); 
Platform.startup(config); 
this.factory = (IReportEngineFactory)Platform.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY); 
this.engine = factory.createReportEngine(config); 
this.engine.changeLogLevel(Level.ALL); 
ContentReader contentReader = Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getFileFolderService().getReader(MersalOutboundReportDialogBean.this.dialogReportNode.getNodeRef()); 
IReportRunnable report = MersalOutboundReportDialogBean.this.getEngine().openReportDesign(contentReader.getContentInputStream()); 
ReportDesignHandle designHandle = (ReportDesignHandle)report.getDesignHandle(); 
OdaDataSource source = (OdaDataSource)designHandle.getModule().findDataSource(DATA_SOURCE_NAME); 
source.setProperty(source.getPropertyDefn("FILELIST"), buildUrl((String)source.getProperty(designHandle.getModule(), "FILELIST"))); 
IRunAndRenderTask runAndRenderTask = MersalOutboundReportDialogBean.this.getEngine().createRunAndRenderTask(report); 
HTMLRenderOption render = new HTMLRenderOption(); 
render.setOutputFileName("G:/Render.html"); 
render.setOutputFormat("html"); 
runAndRenderTask.setRenderOption(render); 
runAndRenderTask.run(); 
runAndRenderTask.close(); 

Как вы можете видеть, первое, что вы должны подготовить Birt двигатель, а затем получить экземпляр отчета от типа IReportRunnable, так что вы можете после этого установить местоположение вывода с использованием параметра therender, который будет изменен в зависимости от вашего запроса.

У вас есть несколько chocies, HTMLRenderOption, PDFRenderOption и другие.

Надеюсь, что это послужит вам.

Спасибо.

+0

Спасибо за это, я был в основном пытается интегрировать существующая среда выполнения в моем собственном webapp.Извините, если это не яснее. У меня это получилось ниже. – Geronimo

+0

+1 для показа, как все работает за BirtEngineServlet. – dragon66

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