1

我创建了一组实用程序以在我的 BIRT 报告中使用。

我将它们(my-utils.jar)放在 BIRT 的 lib 目录中:

BIRT_HOME\plugins\org.eclipse.birt.report.viewer_x.x.x.x\birt\scriptlib

它们工作正常,但现在我想创建一个 JS 文件,将其放在类路径中以便能够使用它的功能。

// my-utils.js
GLOBAL_VARIABLE = {  
    formatSomething: funnction(value) {
       // do my stuff with 'value' and return
    }
};

我想直接使用它,而不是在动态文本或脚本事件中明确加载它,如下所示:

GLOBAL_VARIABLE.formatSomething('bla bla bla')

我怎样才能做到这一点?

4

2 回答 2

1

您想创建一个扩展点。在 Eclipse 中,创建一个新的空白插件项目,然后添加这个扩展点:

org.eclipse.birt.core.ScriptFunctionService

在项目根目录下创建一个文件夹,将其命名为“jslib”并将您的 js 文件放在此文件夹中。编辑 plugin.xml 并添加一个 JSLib 标记,使其看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension
         id="my.js.function"
         name="My custom JS functions"
         point="org.eclipse.birt.core.ScriptFunctionService">
   </extension>
  <JSLib
        location="jslib">
  </JSLib>

</plugin>

将插件导出为 jar 并将其部署在 Eclipse 和/或 Web 应用程序中,您的 js 函数应该可用。有关自定义 birt 函数的更多信息,请单击此处

于 2016-02-29T21:19:23.083 回答
0

请注意,Dominique 的解决方案仅适用于使用 Java 实现功能的情况。

以下解决方案适用于使用 Javascript 实现功能的情况:

首先,您不需要将 **.js* 文件添加到类路径中。相反,您将它们放入为资源指定的目录中,并在您的报告(或您在报告中使用的库之一)中引用它们。请参见以下示例:

目录结构:

workspace
    \birt    # I have this configured as as "Report Project" in the WS
        my_report.rptdesign
    \res  
        my-utils.js

在首选项菜单中:报表设计/资源/资源文件夹 = <当前项目文件夹>/res

(在运行时,您可以使用 API 设置资源文件夹,我不知道如何为 Web Viewer 示例配置这个)

在 my_report.rptdesign 中,查看报告本身的属性。在“资源”选项卡中,将my-utils.js添加到 Javascript 文件中。

现在您可以在报告中使用库的功能。

于 2016-03-01T07:34:03.710 回答