SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
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
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 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
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/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
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
EKSEMPEL PÅ POST
KODEEKSEMPEL: SKRIVE DOKUMENT
• Byg en Request-body
– Subject
– Body

• Sæt LtpaToken i requestheader
• 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 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/

Contenu connexe

En vedette (13)

Dec.1702010
Dec.1702010Dec.1702010
Dec.1702010
 
Decreto 87
Decreto 87Decreto 87
Decreto 87
 
Decreto 170
Decreto 170Decreto 170
Decreto 170
 
Implementacion del decreto 170
Implementacion del decreto 170Implementacion del decreto 170
Implementacion del decreto 170
 
Programas de Integración escolar en el Marco de la Ley 20.201 y su Decreto 170
Programas de Integración escolar en el Marco de la Ley 20.201 y su Decreto 170Programas de Integración escolar en el Marco de la Ley 20.201 y su Decreto 170
Programas de Integración escolar en el Marco de la Ley 20.201 y su Decreto 170
 
Decreto 1300
Decreto 1300Decreto 1300
Decreto 1300
 
Normativas en Educacion Especial
Normativas en Educacion EspecialNormativas en Educacion Especial
Normativas en Educacion Especial
 
Presentación Decreto 170 y Ley Sep
Presentación Decreto 170 y Ley SepPresentación Decreto 170 y Ley Sep
Presentación Decreto 170 y Ley Sep
 
Decreto n° 170 1
Decreto n° 170 1Decreto n° 170 1
Decreto n° 170 1
 
TALLER NECESIDADES EDUCATIVAS ESPECIALES
TALLER NECESIDADES EDUCATIVAS ESPECIALESTALLER NECESIDADES EDUCATIVAS ESPECIALES
TALLER NECESIDADES EDUCATIVAS ESPECIALES
 
Tipos de nee
Tipos de neeTipos de nee
Tipos de nee
 
Necesidades educativas especiales
Necesidades educativas especialesNecesidades educativas especiales
Necesidades educativas especiales
 
Decreto 170
Decreto 170Decreto 170
Decreto 170
 

Similaire à Udvikling af en app med brug af Domino Data Dervice Apiet

Similaire à Udvikling af en app med brug af Domino Data Dervice Apiet (12)

Lamp - Apache | appacademy.dk
Lamp - Apache | appacademy.dkLamp - Apache | appacademy.dk
Lamp - Apache | appacademy.dk
 
Clio online flow undervisning
Clio online flow undervisningClio online flow undervisning
Clio online flow undervisning
 
Drupalcamp2016 dockerftw
Drupalcamp2016 dockerftwDrupalcamp2016 dockerftw
Drupalcamp2016 dockerftw
 
080619 Dw2
080619 Dw2080619 Dw2
080619 Dw2
 
Notes til XPage på 1 time
Notes til XPage på 1 timeNotes til XPage på 1 time
Notes til XPage på 1 time
 
LAMP for webudviklere | Linux | Appacademy.dk
LAMP for webudviklere | Linux | Appacademy.dkLAMP for webudviklere | Linux | Appacademy.dk
LAMP for webudviklere | Linux | Appacademy.dk
 
Netværk powerpoint
Netværk powerpointNetværk powerpoint
Netværk powerpoint
 
Basic tcpip-print
Basic tcpip-printBasic tcpip-print
Basic tcpip-print
 
Hadoop - the data scientist's toolbox
Hadoop - the data scientist's toolboxHadoop - the data scientist's toolbox
Hadoop - the data scientist's toolbox
 
F2-REST seminar april 2014
F2-REST seminar april 2014F2-REST seminar april 2014
F2-REST seminar april 2014
 
WordPress Themes
WordPress ThemesWordPress Themes
WordPress Themes
 
Administrering af en_d!ng-hjemmeside
Administrering af en_d!ng-hjemmesideAdministrering af en_d!ng-hjemmeside
Administrering af en_d!ng-hjemmeside
 

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
  • 14. EKSEMPEL PÅ UDDATA FOR DOKUMENT
  • 15. KODEEKSEMPEL: LÆSE COLLECTION • GET ../api/data/documents • Inkludere LtpaToken • Parse indhold og sammenligne med lokale database • Evt udlæse hele dokumenter
  • 16. KODEEKSEMPEL: LÆSE DOKUMENT • GET url taget fra @href • Inkludere LtpaToken • Parse indhold og skrive til database
  • 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
  • 24. KODEÆNDRING: NOTIFIKATION • Opdater til nyeste compatibility library i ActionBarSherlock -
  • 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. 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/