Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Udvikling af en app med brug af Domino Data Dervice Apiet

Præsentation afholdt på DanNotes 27/11-2013

  • Login to see the comments

  • Be the first to like this

Udvikling af en app med brug af Domino Data Dervice Apiet

  1. 1. UDVIKLING AF EN APP MED BRUG AF DOMINO DATA SERVICE APIET DanNotes, Korsør, 27/11-2013 Leverandør til offentlige sektor Sagsbehandling (Notes/Domino) Af Jens Bruntt - Convergens Systemarkitekt Service Orienteret Arkitektur Digital Post OIO standarderne Notes /Domino baggrund Tomcat Java Leger med Android Integration – digitalisering Digital Post OIO standarder Fjernprint Notes/Domino generelt Java WebSphere portal xPages iOS
  2. 2. PROGRAMMET CA 60 MINUTTER        Hurtig introduktion til DomDisc app’en Authentication med IBM Domino fra app Introduktion til Domino Data Service API Læse dokumenter Skrive dokumenter Vi laver en kode-modifikation i DomDisc Eventuelt og ubesvarede spørgsmål
  3. 3. HURTIG INTRODUKTION TIL DOMDISC APP’EN  Native Android app - Java  Konfigureres til at ”replikere” med en Diskussions-type Notes database på en Domino server  HTTP eller HTTPS  Gemmer data lokalt i sql database  Bruger Domino Data Service APIet = REST  Kan installeres fra Google Play  Kildekoden kan downloades fra openntf.org eller github.org  Open source med meget genbrugsvenlige licensforhold
  4. 4. DEMO AF DOMDISC APP • Eksempel på diskussionsdatabase på dev.openntf.org • Der findes en video-demo
  5. 5. AUTHENTICATION MED IBM DOMINO FRA APP  Vi skal bruge en LtpaToken for at kunne tale sikkert med IBM Domino over HTTP  LtpaToken er en sessions-cookie som står i HTTP headeren på alle HTTPtransaktioner mellem klient og webserver når brugeren er logget på Domino  Ved f.eks. iNotes-login til Domino vises en login-formular – den kan vi simulere og få en LtpaToken
  6. 6. LOGIN I BROWSER
  7. 7. KODEEKSEMPEL: GETAUTHENTICATIONTOKEN • Byg en Request-body – Username – Password • POST • Kig i svar HTTP header efter ”Set-Cookie” • ”LtpaToken=abcd” gemmes og bruges i efterfølgende forespørgsler til Domino
  8. 8. INTRODUKTION TIL DOMINO DATA SERVICE API  Domino Data Service APIet er nu en del af Domino Access Services  REST kald til Domino  Arbejde mod views, view-design og dokumenter (selve dokumenterne)  Dokument-muligheder:     GET- læse et dokument PATCH (POST) – opdatere enkelt-felter PUT – overskrive alle felter DELETE – gæt selv
  9. 9. INTRODUKTION TIL DOMINO DATA SERVICE API • Collection-muligheder – GET – udlæse samtlige dokumenter i kompakt format – POST – oprette et helt nyt dokument • View/Folder-muligheder – GET – udlæse view/folder entries. Uddata er system-felter + egne kolonner • Der er flere muligheder – Nogle highlights – Søge-parametre – paging i udlæsninger – Domino Calendar Service
  10. 10. LÆSE DOKUMENTER LOGIK I DOMDISC  Udlæs en liste med samtlige dokumenter i kompakt format  For hvert dokument  Check om vi har det i forvejen (UNID)  Hvis nej  Hent det fulde dokument (nyt REST kald)  Gem  Hvis ja  Er det opdateret (modified er ændret)  Hvis ja  Hent det fulde dokument  Gem
  11. 11. LÆSE DOKUMENTER: SAMTLIGE DOKUMENTER I KOMPAKT FORMAT • http//host/sti/db.nsf/api/data/documents • Indeholder for hver note udelukkende disse – @modified – @unid – @href
  12. 12. EKSEMPEL PÅ COLLECTION DATA
  13. 13. LÆSE ET HELT DOKUMENT • http//host/sti/db.nsf/api/data/documents/unid/D1D1114365B556188 52578B700499AFD • Værdien vi bruger tager vi fra @href i det opslag der hentede den komplette liste med noter • Output er – En række systemfelter som • @unid • @created • @authors • @form – Alle de items der ellers er gemt i dokumentet. Selve applikationens data. som f.eks. • Subject • body
  14. 14. EKSEMPEL PÅ UDDATA FOR DOKUMENT
  15. 15. KODEEKSEMPEL: LÆSE COLLECTION • GET ../api/data/documents • Inkludere LtpaToken • Parse indhold og sammenligne med lokale database • Evt udlæse hele dokumenter
  16. 16. KODEEKSEMPEL: LÆSE DOKUMENT • GET url taget fra @href • Inkludere LtpaToken • Parse indhold og skrive til database
  17. 17. SKRIVE DOKUMENTER  POST en JSON-struktur til Domino. Indhold: De felter som ønskes gemt  Subject  Body  Categories  http//host/sti/db.nsf/api/data/ documents/?form=MainDocument& computewithform= false/true  Der udføres felt-valideringer
  18. 18. EKSEMPEL PÅ POST
  19. 19. KODEEKSEMPEL: SKRIVE DOKUMENT • Byg en Request-body – Subject – Body • Sæt LtpaToken i requestheader • POST • Kig i svar HTTP-header efter ”Location” <> tom = succes
  20. 20. VI LAVER EN KODE-MODIFIKATION I DOMDISC  Problem: DomDisc mangler mulighed for at kunne notificere når der er nyt eller der er opstået en fejl  Vi vil  Downloade DomDisc kildekoden  Downloade et støtte-bibliotek: ActionBar sherlock  Sætte koden op så den virker i Eclipse  Foretage kode-ændringen: notifikation  Se at den virker
  21. 21. VI SKAL BRUGE • Er udført – Installere Android SDK Bundle – Installere Genymotion Android emulator (option) • Vi udfører – Downloade DomDisc kildekoden – Downloade ActionBarSherlock
  22. 22. SÆTTE ECLIPSE OP MED ACTIONBARSHERLOCK • File->Import->Existing Android code
  23. 23. SÆTTE ECLIPSE OP MED DOMDISC • File->Import-> Existing Android code • Samme som for ActionBarSherlock • Knyt DomDisc sammen med ActionBarSherlock
  24. 24. KODEÆNDRING: NOTIFIKATION • Opdater til nyeste compatibility library i ActionBarSherlock -
  25. 25. KODEÆNDRING: NOTIFIKATION import android.support.v4.app.NotificationCompat; notifyUser("We just replicated", "replication"); private void notifyUser(String notificationText, String tickerText) { NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context); notificationBuilder.setSmallIcon(R.drawable.domdisclaunchericon); notificationBuilder.setAutoCancel(true); Intent intent = new Intent(context, StartActivity.class); PendingIntent pIntent = PendingIntent.getActivity(context, 0, intent, 0); notificationBuilder.setContentIntent(pIntent); notificationBuilder.setContentTitle("DomDisc replication"); notificationBuilder.setContentText(notificationText); notificationBuilder.setTicker(tickerText); NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(0, notificationBuilder.build()); }
  26. 26. EVENTUELT OG UBESVAREDE SPØRGSMÅL  Pas på Rich Text - eksempler    Json Simpelt - original Json Text/html - original Json Text/html med inline image – original  Husk at felter kan skifte design i applikationens levetid  HTTP 200 ved login betyder ikke nødvendigvis at der er logget ind  HTTP 302 kan drille ved authentication  Indhold af @href skifter fra absolout til relativt i 9.0.1  Info:   Der er links til informationskilder i præsentationen. Der er en developer readme i DomDisc projektet
  27. 27. KONTAKT Jens Bruntt Mail jbr@convergens.dk Blog http://www.jens.bruntt.dk Mere blog http://www.convergens.dk Twitter https://twitter.com/JensBruntt G+ https://plus.google.com/+JensBruntt LinkedIn http://dk.linkedin.com/in/jbruntt/

×