使用自定义JSP组件和Mbo库创建动态图表

使用自定义JSP组件和Mbo库创建动态图表,jsp,maximo,Jsp,Maximo,我希望在Maximo中实现一个自定义图表,它提取资产mbo值并填充资产应用程序上可见的图表。像这样: 我可以成功地绘制图表并从硬编码的资产管理层收购(Mbo)中提取数据,但我不知道如何为单个资产动态绘制图表。例如,资产AB100001是从列表选项卡中选择的,但资产AB234560是硬编码到jsp代码中的,因此来自资产AB234560的数据将呈现在每个图表上,针对每个资产 我的jsp代码类似于此示例,其中该开发人员获取仪表数据并将其显示在同一类型的jsp图表上: <%@ include f

我希望在Maximo中实现一个自定义图表,它提取资产mbo值并填充资产应用程序上可见的图表。像这样:

我可以成功地绘制图表并从硬编码的资产管理层收购(Mbo)中提取数据,但我不知道如何为单个资产动态绘制图表。例如,资产AB100001是从列表选项卡中选择的,但资产AB234560是硬编码到jsp代码中的,因此来自资产AB234560的数据将呈现在每个图表上,针对每个资产

我的jsp代码类似于此示例,其中该开发人员获取仪表数据并将其显示在同一类型的jsp图表上:

<%@ include file="../common/componentheader.jsp"%>  
<%
String width = component.getProperty("width");
String height = component.getProperty("height");
String assetnum = boundComponent.getString();

MboSetRemote readingsSet = s.getMboSet("MEASUREMENT"); 
readingsSet.setWhere("ASSETNUM = '11450' and METERNAME = 'O-PRESSUR'");
readingsSet.reset();
String readingData = "[";
for (MboRemote r = readingsSet.moveFirst(); r != null; r = readingsSet.moveNext())
{
    readingData += "{'Offset_ms':" + r.getDate("MeasureDate").getTime() + 
                    ",'Value':" + r.getDouble("MeasurementValue") + "},"; 
};
readingData += "]";
%>

这几乎正是我所需要的,只是您会注意到,当使用第3行中的setWhere时,他对assetnum进行了硬编码:
readingset.setWhere(“ASSETNUM='11450'和METERNAME='O-pressure'”

有没有一种方法可以在setWhere函数中使用绑定变量来动态拉取assetnum,而不是使用字符串“11450”


链接到具有以下情况的博客帖子:

在开头附近,我们看到这一行:

String assetnum = boundComponent.getString();
OP说
boundComponent.getString()正在返回未定义的
。一些研究表明,该代码应该工作得更好:

String assetnum = boundComponent.getDataBean().getMbo().getString("ASSETNUM");
那么这条线

readingset.setWhere(“ASSETNUM='11450'和METERNAME='O-pressure'”

应该变成这样

SqlFormat readingWhere = new SqlFormat("ASSETNUM = :1 and METERNAME = 'O-PRESSUR'");
readingWhere.setObject(1, "ASSET", "ASSETNUM", assetnum);
readingSet.setWhere(readingWhere.format())

我喜欢这个问题。应该有一个
getApp()
方法,或者在
component
上的某个东西,它将返回当前应用程序的句柄。我认为在应用程序上有一个不带参数的
getMboSet()
方法,因为它返回应用程序正在使用的MboSet。我必须花一些时间使用Maximo的JavaDocs或JDGUI来拼凑调用链,但我相信这是可以做到的。然后,当然,您应该使用
psdi.mbo.SqlFormat
,而不是将数字连接到where子句中。我将留下我之前的评论,以了解其他人在决定如何开始寻求帮助时可能获得的价值。但是,我现在看到assetnum已经在您发布的代码中可用,因此提供了一个答案。ASSET是一个站点级对象,因此assetnum可能存在于多个站点中,因此您确实需要改进代码以解决这一问题。当你这样做的时候,你应该看看你是否能动态地输入仪表名。您可能需要将图表放在扩展的米表下或表中。在这种情况下,boundComponent关键字的作用是什么?我找不到太多关于它的文档。经过一点调试,我意识到该行正在打印“无效绑定”,所以我没有所需的assetnum。我不知道。如果我是你,我会查看包含的
componentheader.jsp
,试图找出答案。我只是相信代码做了它看起来应该做的事情。出于我自己的原因,我需要做更多的研究。我已更新了答案,以包括设置
assetnum
时应该使用的代码。