Die Idee, dass nur die diff übertragen wird, läßt sich imho wirklich relativ einfach realisieren.
Notes kennt seit 7 offenbar einen neuen Datentyp XSD_DATETIME
SOAP | Java | LotusScript |
xsd:dateTime | java.util.Calendar | XSD_DATETIME |
Die letzte Tabelle in diesem Artikel:
http://www-128.ibm.com/developerworks/lotus/library/nd7-webservices/index.htmlImho könnte man das in die Search Formula einbauen. Das dort ein Date/Time Wert geschickt wird und dann in der Funktion GetAllTicketsBySupporter nur solche Tickets runtergesendet werden als der DateTime Wert, der der Funktion in einem Bonus-Parameter übergeben wurde.
Arbeite aber erstmal mit dem was da ist.
Im Grunde ist das eine Art selbstgebaute Replizierung.
Auf der Seite des Clients würd ich den Datumswert nach jedem update request gegen den Webservice Request in eine Datei schreiben.
Es erscheint mir wichtig, die Menge der Daten, die am Client ankommen, klein zu halten. V.a. auch, damit der weniger zu tun hat. Diese kleinen Geräte haben ja auch nicht unbedingt so viel processing power wie ein PC. Z.B. könnte man mit Swing die neuen Dokumente wohl auch prima in die existierende Struktur einmischen. Wenn immer alles neu runtergesendet wird, müßte man die gesamten Widgets quasi ganz neu aufbauen. Und Gui-Objekte sind nicht unbedingt klein. Ausserdem sollte dort im Namen von übersichtlichen, erweiterbaren und leicht änderbaren Design eine Zwischenschicht da sein. D.h. die Inhalte der ganzen Objekte der Webservices werden sowieso noch einmal in extra Business Objekte kopiert.
2.700 oder 700 Tickets kann man eh nicht in einem Blackberry anzeigen. Deshalb werd ich für den ersten Client-Prototypen sowieso nur die ersten 10 oder 20 Tickets anzeigen. Das dürfte auch für eine Demo ausreichend sein. Ich hatte im meinem Leben noch nicht mehr als 20 Tickets.
Falls es jemanden interessiert, kann ich das Eclipse Projekt irgendwie über ein peer-to-peer Netzwerk verfügbar machen, wenn ausreichend da ist. Arbeite inzwischen mit Eclipse WTP1.0. Kann als Komplettpaket runtergeladen werden und wirkt stabiler als WTP 0.7.
Ich hab ständig im Hinterkopf, dass in der gesamten Literatur document-style Webservices (und nicht rpc-style) präferiert wird. Im Kontext der Funktion GetAllTicketsBySupporter wird mir auch klar, warum. Bei großen Datenmengen wird einfach alles doppelt und dreifach übertragen, wenn man sich das tatsächliche SOAP-Dokument in SOAPUI oder ähnlichem mal genauer anschaut.
Ist aber erstmal nicht so dramatisch. Domino unterstützt beides.
In der Literatur wird btw. auch davon gesprochen, dass error-codes in einem header-Bereich der SOAP Nachricht gehören. Weiss aber momentan auch nicht wie man das implementiert und nur am Rande. Ist nicht funktional.
Gruß Axel