Udvikling af en app med brug af Domino Data Dervice Apiet
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. 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. 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. DEMO AF DOMDISC APP
• Eksempel på diskussionsdatabase på dev.openntf.org
• Der findes en video-demo
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
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. 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. 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. 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. 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
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
15. KODEEKSEMPEL: LÆSE COLLECTION
• GET ../api/data/documents
• Inkludere LtpaToken
• Parse indhold og
sammenligne med lokale
database
• Evt udlæse hele
dokumenter
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
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. 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. VI SKAL BRUGE
• Er udført
– Installere Android SDK Bundle
– Installere Genymotion Android emulator (option)
• Vi udfører
– Downloade DomDisc kildekoden
– Downloade ActionBarSherlock
22. SÆTTE ECLIPSE OP MED ACTIONBARSHERLOCK
• File->Import->Existing Android code
23. SÆTTE ECLIPSE OP MED DOMDISC
• File->Import->
Existing Android
code
• Samme som for
ActionBarSherlock
• Knyt DomDisc
sammen med
ActionBarSherlock
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. 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/