BIRT获取报告中所需参数的列表

时间:2014-06-21 13:02:50

标签: java birt

假设我有一个报告,在执行之前需要设置一些必需的参数。 如果我在BIRT查看器中执行报告,则会出现要求输入所需参数的弹出窗口。 我使用BIRT API,我不想在我的应用程序中部署BIRT查看器。 如何在执行报告之前以编程方式获取我需要设置的参数列表?

或者说另一种方式,我怎样才能以编程方式了解,在执行之前应该设置哪些参数?

如何设置我从用户那里得到的报告值?

1 个答案:

答案 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