从Maximo运行时,Maximo BIRT报告运行时错误

时间:2016-02-02 11:34:24

标签: eclipse birt maximo

我已经开发了一个报告,我可以在Eclipse BIRT上运行,无需任何问题进行预览。但是,当它导入Maximo并尝试运行它时,我得到以下错误:

There was an exception on the server. Check your report parameter values, or contact your system administrator, who can find additional details in the server log.

我检查了应用程序服务器日志,那里没有相关信息。我还在DEBUG级别的Maximo上启用了birt报告记录器,但我仍然没有收到任何错误。

如何确定阻止其在Maximo上运行的问题是什么?

6 个答案:

答案 0 :(得分:1)

有时报告不会在多个浏览器上运行。 尝试使用特定版本的Mozilla-Firefox。

答案 1 :(得分:1)

您可以编写报告的代码,以便非常轻松地为表使用别名。通常,应用程序期望针对该应用程序标识的默认表运行:

  1. 在maxapps表中检查要链接报表的特定应用程序的maxintbname值。这是主要的select语句将引用的表,并且牢记这一点构造了maximo传递给报表的部分“ where”子句。 (例如,对于工单跟踪应用程序-WOTRACK-主表为WORKORDER)

  2. BIRT报告中主选择的Open方法将构建适当的SQL Select语句,并将MAXIMO传递的where子句附加到末尾。因此,如果您对工作订单使用别名-这将与maximo提供的传入where子句不匹配。解决此问题的方法是编写一条附加的include语句

例如而不是使用以下内容:

   select ... from workorder mydetails 
    where $where;

使用类似的内容:

 select ... from workorder alias .... 
    where alias.workorderid in (select workorderid from workorder where $where):

(workorderid是包含整数值的唯一列。您可以通过查看要引用的表的MAXTABLS条目并检查uniquecolumn值来确定适当的唯一列)

因此,这使您可以编写一个报表,无论maximo从“工作单跟踪”应用程序传递到何处,该报表都将运行。

如果您现在在PM应用程序中注册此报告-通常会运行该文件,因为传入的where子句将与PM应用程序相关,而与WORKORDER对象无关。这是appname参数的用处-您可以使用它来添加条件逻辑,以根据调用的应用程序执行略有不同的事情。

通常,票证列表报告使用此值来添加适当的标题,具体取决于是从服务请求应用程序,事件应用程序还是问题应用程序中调用该报告!

:)

答案 2 :(得分:0)

如果您使用可以从Maximo服务器获取的Tivoli模板开始报告,我会很好奇。这些模板应始终与您将部署到Maximo中的新报告一起使用。它们包括Maximo将需要的必需参数和库链接,以及默认的DataSource。 如果您没有使用模板开始,我建议您将这些项目从模板中复制到新报告中。

答案 3 :(得分:0)

发现问题,事实证明Maximo并不喜欢别名'在查询中:/

答案 4 :(得分:0)

是的,使用ALIAS可以在SELECT中使用字段名称,但不能在FROM和表名中使用MAXOBJECTNAME

Maximo和BIRT通过隐藏参数相互交谈。其中两个参数是'where'和'appname'。在应用程序之外执行报告时,“appname”用于确定要使用的WORKORDER,并使用“where”参数将信息传递给报告。因此,从StartCenter for WOTRACK运行的报告将使用“ appname WORKORDER来检索主表WHERE as workorder.siteid= ‘xxxx’ and workorder.orgid=’xxxx’.在'where'中传递的元素,例如siteid,orgid 。该报告采用此方法,并在查询/

中使用

如果SQL的主表是别名,则查询将失败,因为BIRT不知道该表已成为FROM workorder的别名

答案 5 :(得分:-1)

可以通过更改Maximo传递的位置来完成在from和to中使用别名的解决方案。例如,接收应用程序传递matrectrans,因此我们只需用别名替换对象名称并使用myWhere。 var myWhere = params [“where”]。replace(“matrectrans”,“m”); -W