Upload
jens-bruntt
View
507
Download
0
Embed Size (px)
DESCRIPTION
Præsentation afholdt på DanNotes 27/11-2013
Citation preview
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
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
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
DEMO AF DOMDISC APP
• Eksempel på diskussionsdatabase på dev.openntf.org
• Der findes en video-demo
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
LOGIN I BROWSER
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
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
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
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
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
EKSEMPEL PÅ COLLECTION DATA
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
EKSEMPEL PÅ UDDATA FOR DOKUMENT
KODEEKSEMPEL: LÆSE COLLECTION
• GET ../api/data/documents
• Inkludere LtpaToken
• Parse indhold og sammenligne med lokale database
• Evt udlæse hele dokumenter
KODEEKSEMPEL: LÆSE DOKUMENT
• GET url taget fra @href
• Inkludere LtpaToken
• Parse indhold og skrive til database
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
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
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
VI SKAL BRUGE
• Er udført
– Installere Android SDK Bundle
– Installere Genymotion Android emulator (option)
• Vi udfører
– Downloade DomDisc kildekoden
– Downloade ActionBarSherlock
SÆTTE ECLIPSE OP MED ACTIONBARSHERLOCK
• File->Import->Existing Android code
SÆTTE ECLIPSE OP MED DOMDISC
• File->Import-> Existing Android code
• Samme som for ActionBarSherlock
• Knyt DomDisc sammen med ActionBarSherlock
KODEÆNDRING: NOTIFIKATION
• Opdater til nyeste compatibility library i ActionBarSherlock -
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()); }
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
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/