如何在BIRT上从类路径自动加载JS文件

时间:2016-02-29 14:13:57

标签: javascript birt birt-deapi

我创建了一组在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')

我该怎么做?

2 个答案:

答案 0 :(得分: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函数应该可用。有关自定义生物函数here

的更多信息

答案 1 :(得分: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

在首选项菜单中:   报告设计/资源/资源文件夹=&lt;当前项目文件夹&gt; / res

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

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

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