Интеграция BIRT в существующее webapp

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

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

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

2 ответов


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

Я не обязательно хотел писать свой собственный сервлет, я просто хотел интегрировать существующую среду выполнения отчетов из собственного автономного webapp (здесь под кнопкой" runtime") в мой существующий webapp, так что Мне не нужно распространять 2 webapps для поддержки запуска отчетов BIRT. Извини, если не было яснее.

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

  1. все, что вам нужно, это следующее сопоставление сервлетов, добавленное к вашему собственному :

    <!-- 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. включить все коробит от из время работы на свой


Как я понимаю, вы пытаетесь создать отчет 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 и другие.

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

спасибо.