udvikling af en app med brug af domino data dervice apiet
DESCRIPTION
Præsentation afholdt på DanNotes 27/11-2013TRANSCRIPT
![Page 1: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/1.jpg)
UDVIKLING AF EN APP MED BRUG AF DOMINO DATA SERVICE APIET DanNotes, Korsør, 27/11-2013
Af Jens Bruntt - Convergens
Systemarkitekt Service Orienteret Arkitektur Digital Post OIO standarderne Notes /Domino baggrund Tomcat Java Leger med Android
Leverandør til offentlige sektor Sagsbehandling (Notes/Domino) Integration – digitalisering Digital Post OIO standarder Fjernprint Notes/Domino generelt Java WebSphere portal xPages iOS
![Page 2: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/2.jpg)
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
![Page 3: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/3.jpg)
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
![Page 4: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/4.jpg)
DEMO AF DOMDISC APP
• Eksempel på diskussionsdatabase på dev.openntf.org
• Der findes en video-demo
![Page 5: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/5.jpg)
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 HTTP-transaktioner 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
![Page 6: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/6.jpg)
LOGIN I BROWSER
![Page 7: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/7.jpg)
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
![Page 8: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/8.jpg)
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
![Page 9: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/9.jpg)
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
![Page 10: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/10.jpg)
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
![Page 11: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/11.jpg)
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
![Page 13: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/13.jpg)
LÆSE ET HELT DOKUMENT
• http//host/sti/db.nsf/api/data/documents/unid/D1D1114365B55618852578B700499AFD
• 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
![Page 14: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/14.jpg)
EKSEMPEL PÅ UDDATA FOR DOKUMENT
![Page 15: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/15.jpg)
KODEEKSEMPEL: LÆSE COLLECTION
• GET ../api/data/documents
• Inkludere LtpaToken
• Parse indhold og sammenligne med lokale database
• Evt udlæse hele dokumenter
![Page 16: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/16.jpg)
KODEEKSEMPEL: LÆSE DOKUMENT
• GET url taget fra @href
• Inkludere LtpaToken
• Parse indhold og skrive til database
![Page 17: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/17.jpg)
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
![Page 19: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/19.jpg)
KODEEKSEMPEL: SKRIVE DOKUMENT
• Byg en Request-body
– Subject
– Body
• Sæt LtpaToken i request-header
• POST
• Kig i svar HTTP-header efter ”Location” <> tom = succes
![Page 20: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/20.jpg)
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
![Page 21: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/21.jpg)
VI SKAL BRUGE
• Er udført
– Installere Android SDK Bundle
– Installere Genymotion Android emulator (option)
• Vi udfører
– Downloade DomDisc kildekoden
– Downloade ActionBarSherlock
![Page 22: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/22.jpg)
SÆTTE ECLIPSE OP MED ACTIONBARSHERLOCK
• File->Import->Existing Android code
![Page 23: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/23.jpg)
SÆTTE ECLIPSE OP MED DOMDISC
• File->Import-> Existing Android code
• Samme som for ActionBarSherlock
• Knyt DomDisc sammen med ActionBarSherlock
![Page 24: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/24.jpg)
KODEÆNDRING: NOTIFIKATION
• Opdater til nyeste compatibility library i ActionBarSherlock -
![Page 25: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/25.jpg)
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()); }
![Page 26: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/26.jpg)
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
![Page 27: Udvikling af en app med brug af Domino Data Dervice Apiet](https://reader034.vdocuments.site/reader034/viewer/2022051817/5485692eb47959050d8b4e78/html5/thumbnails/27.jpg)
KONTAKT Jens Bruntt
Mail [email protected]
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/