【问题标题】:BIRT get list of required parameters in reportBIRT 获取报告中所需参数的列表
【发布时间】:2014-06-21 13:02:50
【问题描述】:

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

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

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

【问题讨论】:

    标签: java birt


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多