Az SDM interfészek írása során van egy már kialakított és az elmúlt évek során folyamatosan csiszolt eljárás rendszerem, amit .NET alá készítettem. E rendszerben a kapcsolati szálat egy alap kezelőobjektumon keresztül lehet kezelni, melynek szolgáltatásai között szerepel a leíró mezők induláskor való beolvasása. E megoldás segítségével jelentősen gyorsítani lehet az egyes interfészek működését, hisz nem kell minden leíróadatért elrohanni a szerverhez, hanem az helyben a memóriából olvasható.

E megoldás szépen muzsikált már az elmúlt pár évben, de most beleütköztem egy problémába, nevezetesen, hogy a WebService doSelect utasítása max 250 elem átadását teszi lehetővé. Ez a korlát nem okozott eddig gondot, de a mostani implementációnál már nem volt elégséges. Kénytelen voltam utánanézni mi is az eljárási rend ilyen esetben.

A megoldás – annak ismeretében – frappáns és egyszerű (csak amíg rájössz, hogy mit csinálj másképp…):

  1. Kérdezzük le az adatokat a doQuery metódussal. Itt egy a WebService által definiált ListResult elem lesz a válasz, amiben két infó van a szerveren összeállított lekérdezés azonosítója és a lekérdezésben szereplő elemek száma
  2. Olvassuk ki a számunkra szükséges adatokat a getListValues metódussal, amelynek van egy StartIndex és egy EndIndex paramétere. Ezekkel szabályozhatjuk az egyszerre visszaküldött elemek számát.
    Fontos! Egy adatlekérésben a rendszer max. 250 elemet ad vissza, ennél nagyobb elemszám esetén a lekérdezést a szükséges mennyiségben ismételni kell.
  3. A lista végigolvasását követően a szerver oldalon szabadítsuk fel a listát (és a hozzá kapcsolódó erőforrásokat) a freeListHandles metódussal.

Ennyi az egész, ugye nem is bonyolult? Mosolygó arc

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

*