在Maximo中有时候我们需要根据一些mbo的属性来查询,比如说根据status和reportdate属性,此时可以通过MboSetRemote的setWhere方法来实现,下面的代码演示了怎样根据status和reportdate来查询结果。这里由于后台使用的是oracle数据库,所以使用了oracle的日期函数。
import psdi.mbo.MboRemote;
import psdi.mbo.MboSetRemote;
import psdi.util.MXException;
import psdi.util.MXSession;
import java.rmi.RemoteException;
public class TestQuery {
public static void main(String[] args) throws Exception {
MXSession mxSession = null;
try {
mxSession = getMXSession();
MboSetRemote mboSetRemote = (MboSetRemote) mxSession.getMboSet("WORKORDER");
mboSetRemote.setWhere("(status = 'CLOSE') and (reportdate between to_date('1999-01-01', 'YYYY-mm-dd') and to_date('2014-01-01', 'YYYY-mm-dd'))");
mboSetRemote.setQbeExactMatch(true);
int idx = 0;
MboRemote mboRemote = mboSetRemote.moveFirst();
while (true) {
if (mboRemote == null || idx >= 10) {
break;
}
System.out.println(mboRemote.getString("wonum") + ": " + mboRemote.getMboValueData("reportdate").getDataAsDate());
mboRemote = mboSetRemote.moveNext();
idx++;
}
} catch(Exception ex) {
ex.printStackTrace();
} finally {
closeMXSession(mxSession);
}
}
public static MXSession getMXSession() throws RemoteException, MXException {
String server = "<host>:<port>/MXServer";
String username = "<username>";
String password = "<password>";
MXSession mxSession = MXSession.getSession();
mxSession.setHost(server);
mxSession.setUserName(username);
mxSession.setPassword(password);
mxSession.connect();
return mxSession;
}
public static void closeMXSession(MXSession mxSession) throws RemoteException, MXException {
if (mxSession != null) {
mxSession.disconnect();
}
}
}