在Maximo中使用java将新行添加到另一个表

时间:2015-01-04 08:15:57

标签: java maximo

我有两张桌子,我正在使用:KINCIDENT和ASSISTANT。主要是KINCIDENT,两个使用ID链接。我可以从应用程序添加一个新行,但我想用Java做这个。我尝试了以下代码但没有工作:

MboSetRemote assistSet = MXServer.getMXServer().getMboSet("ASSISTANT",userInfo);
MboRemote newAssist = assistSet.add();
newAssist.setValue("LOCATION",x);
newAssist.setValue("INCNUM",y);
assistSet.save();

我检查了行是否已添加,但事实并非如此,我也没有在数据库中找到任何新条目。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

只要您的代码正在运行,您应该已经在助理表中看到了这条新记录,但您肯定不会在屏幕上看到它。要使记录显示在屏幕上,您必须知道Maximo"缓存"系统来获取和编辑支持屏幕的集合的确切实例,而不仅仅是任何实例(或者像你在那里创建的全新实例)。

我不知道您的Java代码在哪里(应用程序bean,MBOSet,MBO或字段类),我不知道您要挂钩的事件/触发器(添加一个新记录,保存现有记录或其他内容),这两者都很重要。我将假设您在" add()"中运行的KINCIDENT对象的MBO类中。方法;意味着当创建新的KINCIDENT时,您想要添加新的ASSISTANT记录。作为该触发器的一部分运行应该意味着当用户添加新记录时,您已经被挂钩到KINCIDENT对象的屏幕实例中。要使ASSISTANT记录显示在支持屏幕的设置实例中,您需要遵循屏幕从KINCIDENT到ASSISTANT的关系。我假设在屏幕上使用关系将ASSISTANT表设置为KINCIDENT表的子节点。在这种情况下,您只需要使用该关系获取ASSISTANT集。假设你的关系被命名为与集合相同(" ASSISTANT"),它看起来像这样:

MboSetRemote assistSet = getMboSet("ASSISTANT");
MboRemote newAssist = assistSet.add();
newAssist.setValue("LOCATION",x);
newAssist.setValue("INCNUM",y);

这不会保存您的记录(将其保存到数据库中),但您希望将保存保持在最低限度。让用户指定是否应保存记录,方法是按工具栏中的" save" / disk图标。