У меня есть две таблицы в Maximo 7.5.
Таблица A: имеет атрибуты WORKORDERNUM, EXPECTEDTIME и FINISHTIME в таблице A. Таблица B: имеет атрибуты WORKNUM и STATUS в таблице B.
Что я хочу сделать, так это: если FINISHTIME> EXPECTEDTIME, тогда обновите STATUS в таблице B как «NOTGOOD», иначе ничего не делайте. Для этого я создал CronTask, который будет запускаться каждые пять минут.
Теперь я могу думать о двух подходах.
1. Чтобы просмотреть всю таблицу A в цикле. Внутри цикла каждый раз выполнять запрос к базе данных для таблицы B.
Вот пример кода:
MboSetRemote TableA = mxs.getMboSet("TABLEA", ui);
MboSetRemote TableB = mxs.getMboSet("TABLEB", ui);
TableA.setWhere("FINISHTIME > EXPECTEDTIME");
TableA.reset();
TableB.setWhere("");
TableB.reset();
MboSet TableARow = null;
MboSet TableBRow = null;
//now it will give a list of entries. Which needs to be matched with Table B and values be updated in Table B STATUS.
while ((TableARow = TableA.getMbo(i)) != null)
{
int A = TableA.getString("WONUM");
while((TableBRow = TableB.getMbo(i)) != null)
int B = TableB.getString("WONUM");
if (A == B){
//set SATUS etc}
}
TableB.save();
TableA.save();
2. Чтобы перебрать всю таблицу A. Внутри цикла каждый раз выполняйте Compare the values for Table B.
MboSetRemote TableA = mxs.getMboSet("TABLEA", ui);
MboSetRemote TableB = mxs.getMboSet("TABLEB", ui);
TableA.setWhere("FINISHTIME > EXPECTEDTIME");
TableA.reset();
MboSet TableARow = null;
//now it will give a list of entries. Which needs to be matched with Table B and values be updated in Table B STATUS.
while ((TableARow = TableA.getMbo(i)) != null)
{
TableB.setWhere("WONUM= TABLEA.WONUM");
TableB.reset();
//set SATUS etc
TableB.save();
}
TableA.save();
Какой из них лучше и экономичнее?
Любые другие предложения?