Dokąd prowadzi skrócony link?

IBM Maximo – pętla po MboSet

To pierwszy z serii wpisów poświęconych oprogramowaniu IBM Maximo oraz możliwościom jego customizacji i developmentowi w języku Java. Pokazujemy jak iterować po obiekcie MboSet.

Wstęp

Autor na co dzień zajmuje się oprogramowaniem IBM z rodziny Maximo – jego wdrażaniem, programowaniem zmian oraz nowych aplikacji i funkcjonalności, a także utrzymaniem istniejących instalacji u klientów.

Mbo i MboSet

Przed przejście do zaprogramowania pętli w MboSet wyjaśnijmy sobie czym właściwie są Mbo i MboSet-y:

  • Mbo reprezentuje rekord (wiersz) w tabeli bazy danych. Przykładowo, mając tabelę WORKORDER, która przechowuje wszystkie zlecenia pracy, Mbo będzie reprezentacją jednego takie zlecenia. Oczywiście wraz z towarzyszącemu jemu logikom biznesową oprogramowaną w poszczególnych metodach,
  • MboSet reprezentuje pojedyńczą tabelę w bazie danych. Jest więc kolekcją obiektów Mbo. Zawiera zestaw metod pozwalających na iterowanie po nim, zmienianie danych czy też ich zawężanie.

Gdy już to wiemy możemy przejść do stworzenia pętli, która „przeleci” po wszystkich Mbo zawartych w danym MboSecie. Jest na to kilka sposobów, które opisuję poniżej.

Pętla for

Spójrzmy na poniższy kod:

MboSetRemote mboSet = MXServer.getMXServer().getMboSet("WORKORDER", ui.getUserInfo());
for(MboRemote mbo = mboSet.moveFirst(); mbo != null; mbo = mboSet.moveNext()) {
    String description = mbo.getString("DESCRIPTION");
}

Na samym początku pobieramy MboSet – wszystkie rekordy z tabeli WORKORDER. Następnie mamy pętle for, która:

  • ustawia zmienną mbo na pierwszy rekord z MboSetu (metoda moveFirst()),
  • warunek mbo != null, który sprawdza czy ma się wykonać kod z wnętrza pętli for,
  • „instrukcję inkrementacji”, która do zmiennej mbo przypisuje kolejny rekord z MboSetu (metoda moveNext()).

Użycie klasy MboSetIterator

MboSetRemote mboSet = MXServer.getMXServer().getMboSet("WORKORDER", ui.getUserInfo());
MboSetIterator it = new MboSetIterator(mboSet);
while (it.hasNext()) {
	MboRemote labTrans = it.next();
}

Kolejny sposób to użycie klasy MboSetIterator, a następnie pętli while. Jak widzimy, jeżeli metoda hasNext() wywołana na iteratorze zwróci true to możemy pobrać sobie kolejny rekord Zlecenia Pracy poprzez wywołanie it.next().

Pętla w Jyhton?

Oczywiście oprócz kodu Java może też zaistnieć konieczność użycia skryptów automatyzacji, które możemy napisać w Jythonie – specyficznej implementacja języka Python zaprojektowanej do działania na platformie Java. Poniżej sposób na iterację po MboSet właśnie w tym języku:

mboSet = mbo.getMboSet('WORKORDER')
 
for i in range(0, mboSet.count()):
    wo = mboSet.getMbo(i)
    print "WO description: ", wo.getString("DESCRIPTION")

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *