0

KINCIDENT と ASSISTANT という 2 つのテーブルを使用しています。主なものはKINCIDENTで、2つはIDを使用してリンクされています。アプリケーションから新しい行を追加することはできますが、これを Java を使用して行いたいと考えています。次のコードを試しましたが、うまくいきませんでした:

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

行が追加されたかどうかを確認しましたが、そうではなく、データベースにも新しいエントリが見つかりませんでした。何か不足していますか?

4

1 に答える 1

2

コードが実行されている限り、アシスタント テーブルにその新しいレコードが表示されているはずですが、画面には表示されません。レコードを画面に表示するには、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);

これはまだレコードを保存しません (データベースに保持します) が、保存を最小限に抑えたいと考えています。ツールバーの「保存」/ディスク アイコンをクリックして、レコードを保存するかどうかをユーザーが指定できるようにします。

于 2015-01-05T13:04:47.923 に答える