我已经开发了一个报告,我可以在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上运行的问题是什么?
答案 0 :(得分:1)
有时报告不会在多个浏览器上运行。 尝试使用特定版本的Mozilla-Firefox。
答案 1 :(得分:1)
您可以编写报告的代码,以便非常轻松地为表使用别名。通常,应用程序期望针对该应用程序标识的默认表运行:
在maxapps表中检查要链接报表的特定应用程序的maxintbname值。这是主要的select语句将引用的表,并且牢记这一点构造了maximo传递给报表的部分“ where”子句。 (例如,对于工单跟踪应用程序-WOTRACK-主表为WORKORDER)
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