假设我有一个报告,在执行之前需要设置一些必需的参数。 如果我在BIRT查看器中执行报告,则会出现要求输入所需参数的弹出窗口。 我使用BIRT API,我不想在我的应用程序中部署BIRT查看器。 如何在执行报告之前以编程方式获取我需要设置的参数列表?
或者说另一种方式,我怎样才能以编程方式了解,在执行之前应该设置哪些参数?
如何设置我从用户那里得到的报告值?
答案 0 :(得分:1)
我发现了以下决定。 我们应该定义一个单独的任务:
IGetParameterDefinitionTask taskGetParameters = engine
.createGetParameterDefinitionTask(design);
之后我们可以从这个任务中获得参数的迭代器:
Collection params = taskGetParameters.getParameterDefns(true);
Iterator iter = params.iterator();
之后我们可以迭代参数并获取它们的属性。我正在获取参数的名称及其在报表设计阶段定义的帮助文本,以及我存储类型和默认值的位置:
while (iter.hasNext()) {
IParameterDefnBase param = (IParameterDefnBase) iter.next();
System.out.println(param.getName() + ": " + param.getHelpText());
}
然后我形成一个参数的Hashmap,key是name,value是value,并将它传递给IRunAndRenderTask:
HashMap<String, String> setParameters = new HashMap<String, String>();
//some code for adding parameters to the hashmap is here
IRunAndRenderTask task = engine.createRunAndRenderTask(design);
task.setParameterValues(setParameters);
EXCELRenderOption options = new EXCELRenderOption();
options.setOutputFormat("csv");
options.setOutputFileName("output\\myxls.csv");
task.setRenderOption(options);
task.run();
task.close();
我省略了一些代码以避免大量文本,当然必须关闭引擎和所有BIRT资源以避免内存泄漏。
如您所见,重点是我们需要从一个任务获取参数属性并传递给另一个任务。
我找到了一些提示here。