27
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

Udvikling af en app med brug af Domino Data Dervice Apiet

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Udvikling af en app med brug af Domino Data Dervice Apiet

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

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

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 5: Udvikling af en app med brug af Domino Data Dervice Apiet

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

LOGIN I BROWSER

Page 7: Udvikling af en app med brug af Domino Data Dervice Apiet

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

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

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

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 13: Udvikling af en app med brug af Domino Data Dervice Apiet

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 15: Udvikling af en app med brug af Domino Data Dervice Apiet

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

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

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

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

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 22: Udvikling af en app med brug af Domino Data Dervice Apiet

SÆTTE ECLIPSE OP MED ACTIONBARSHERLOCK

• File->Import->Existing Android code

Page 23: Udvikling af en app med brug af Domino Data Dervice Apiet

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

KODEÆNDRING: NOTIFIKATION

• Opdater til nyeste compatibility library i ActionBarSherlock -

Page 25: Udvikling af en app med brug af Domino Data Dervice Apiet

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

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

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/