1

Maximo ワークフローには、作業指示書が開始日をチェックして条件ノードに到達するスキーマがいくつかあります。現在の日付が開始日より前の場合、作業指示書は「maximo.workorder.update」条件で待機ノードに移動します。そのため、WO の予定日が来ると、WO 追跡に移動して、この WO を手動で保存する必要があります。その後、ワークフローを続行します。それ以外の場合、WO は時間の終わりまでその待機ノードに留まります。

私がやりたいことは、毎日 crontask によってこの更新イベントをトリガーして、適切な日付が来ると WO が自動的に起動するようにすることです。

WO トラッキング アプリケーションの [保存] ボタンのソース コードを調べたところ、MboRemoteSet.save() メソッド呼び出しが何であってもそれがわかりました。いくつかの変更を行ってから、適切な MboSet で save() を呼び出す必要があると想定しました。また、DB には、ワークフローの待機ノードにある WO を追跡する EVENTRESPONSE というテーブルがあることも知っています。私のcrontaskクラスには次のコードが含まれています:

MXServer mxServer = MXServer.getMXServer();
UserInfo userInfo = mxServer.getUserInfo("maxadmin");
woSet = mxServer.getMboSet("WORKORDER", userInfo);
...
String query = "select sourceid as WORKORDERID from EVENTRESPONSE"
                + " where eventname = 'maximo.workorder.update'"
                + " and sourcetable = 'WORKORDER'";
SqlFormat sqf = new SqlFormat("workorderid IN (" + query + ")");
woSet.setWhere(sqf.format());
MboRemote wo;
Date currentDate = new Date();
for (int i = 0; (wo = woSet.getMbo(i)) != null; i++) {
    System.err.println(wo.getString("description"));
    wo.setValue("CHANGEDATE", currentDate);
}
woSet.save();

workorder.changedate は正常に更新されますが、「maximo.workorder.update」イベントは処理されず、WO は待機ノードにとどまります。

では、maximo.workorder.update を起動するにはどうすればよいでしょうか?

4

1 に答える 1

2

この回答は 1 年遅れて届きますが、それは他の人を助けるかもしれません。

「エスカレーション」を使用して、時間が来ているすべての作業指示書を特定し、エスカレーションでアクションを使用して作業指示書の何かを更新することができます。これにより、Maximo は変更を保存し、それによってワークフローの待機ノードをトリガーします。コードは一切必要なく、構成だけです。

私は過去に似たようなことをしたことがありますが、通常、この目的のために作成した YORN フィールドを反転させてしまいます。

于 2014-05-23T14:57:03.627 に答える