Java 如何通过BIRT API设置BIRT报表设计器创建的BIRT报表的参数并将其传递给该报表?

Java 如何通过BIRT API设置BIRT报表设计器创建的BIRT报表的参数并将其传递给该报表?,java,jakarta-ee,report,birt,Java,Jakarta Ee,Report,Birt,我创建了一个简单的报告,它只接受一个参数。此参数在查询中使用,直接在报表设计器中执行时执行良好。顺便说一句,我没有在这个报告中使用javascript或任何脚本。我见过一些人试图通过脚本和/或javascripts来传递参数以获得答案,但这不是我要做的。我通过java传递所有参数。继续,在本报告中,我列出了活动/非活动项。我传入一个“N”用于列出非活动项,传入一个“Y”用于列出活动项。当我试图通过API传入一个参数时,无论传入什么,我都会得到一个活动项列表。顺便说一下,“Y”是传入参数的默认值。

我创建了一个简单的报告,它只接受一个参数。此参数在查询中使用,直接在报表设计器中执行时执行良好。顺便说一句,我没有在这个报告中使用javascript或任何脚本。我见过一些人试图通过脚本和/或javascripts来传递参数以获得答案,但这不是我要做的。我通过java传递所有参数。继续,在本报告中,我列出了活动/非活动项。我传入一个“N”用于列出非活动项,传入一个“Y”用于列出活动项。当我试图通过API传入一个参数时,无论传入什么,我都会得到一个活动项列表。顺便说一下,“Y”是传入参数的默认值。(我正在覆盖下面代码中的默认值)我遇到的问题是,报表似乎不希望采用我设置的参数。是的,传入的变量中的值发生了更改,但报告没有反映更改。我的代码如下。我试着按照这个链接的建议以及如何设置参数

如果转到链接,请转到#4并查看要执行的任务列表。这就是我一直试图遵循的。我觉得我可能错过了什么。如果你能做到这一点,你能给我一些建议来弥补我所缺少的吗?多谢

-戴尔

公共类报表生成器{
公共静态void main(字符串args[])引发异常{
ReportGenerator rg=新的ReportGenerator();
rg.executeReport(“N”);
}
@SuppressWarnings({“未选中”、“弃用”})
public void executeport(字符串activeIndicator)引发EngineeException{
IReportEngine引擎=空;
EngineConfig config=null;
试一试{
config=新的EngineConfig();
配置setBIRTHome(“C:\\birt-rcp-report-designer-3_7_2\\ReportEngine”);
config.setLogConfig(“c:/temp/test”,Level.FINEST);
平台启动(配置);
IReportEngineFactory=(IReportEngineFactory)平台.createFactoryObject(IReportEngineFactory.EXTENSION\u报告\u引擎\u工厂);
engine=factory.createReportEngine(配置);
IReportRunnable reportDesign=null;
reportDesign=engine.openReportDesign(“C:\\workspace\\SimpleReport\\ReportTemplates\\ItemListingReport.rptdesign”);
IRunAndRenderTask task=engine.createrunandendertask(reportDesign);
IGetParameterDefinitionTask parameterDefinitionTask=engine.createGetParameterDefinitionTask(reportDesign);
parameterDefinitionTask.EvaluatedDefaults();
HashMap params=parameterDefinitionTask.getDefaultValues();
参数put(“ainindicator”,activeIndicator);
parameterDefinitionTask.setParameterValues(参数);
ConnectionHelper ConnectionHelper=新的ConnectionHelper();
task.getAppContext();
PDFRenderOption=new PDFRenderOption();
options.setOutputFormat(“pdf”);
options.setOutputFileName(“C:\\workspace\\SimpleReport\\output\\itemListingReport.pdf”);
task.setRenderOption(选项);
task.run();
task.close();
引擎。销毁();
}捕获(例外情况除外){
例如printStackTrace();
}最后{
平台关闭();
}
}
}

您需要在IRunAndRenderTask上设置参数:

IRunAndRenderTask task =
    engine.createRunAndRenderTask(reportRunnable);
Map< String, Object > birtParams = ...;
task.setParameterValues( birtParams );
IRunAndRenderTask任务=
engine.createRunAndRenderTask(reportRunnable);
地图<字符串,对象>鸟图=。。。;
task.setParameterValues(birtParams);
在以前的版本(BIRT 4之前)中,我所要做的就是新建EngineConfig().setAppContext(birtParams)。
IRunAndRenderTask task =
    engine.createRunAndRenderTask(reportRunnable);
Map< String, Object > birtParams = ...;
task.setParameterValues( birtParams );