• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
#dd12 Applicazioni a tre voci (Android e Domino)
 

#dd12 Applicazioni a tre voci (Android e Domino)

on

  • 715 views

Di androidi, mele morsicate e more (realizzare applicazioni Domino su Android con Titaniun)

Di androidi, mele morsicate e more (realizzare applicazioni Domino su Android con Titaniun)

Statistics

Views

Total Views
715
Views on SlideShare
604
Embed Views
111

Actions

Likes
0
Downloads
0
Comments
0

5 Embeds 111

http://www.dominopoint.it 100
http://m.dominopoint.it 5
http://127.0.0.1 3
http://www.linkedin.com 2
http://planetlotus.org 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    #dd12 Applicazioni a tre voci (Android e Domino) #dd12 Applicazioni a tre voci (Android e Domino) Presentation Transcript

    • Applicazioni a tre vociDi androidi, mele morsicate e more Fabrizio Marchesano Frame srl
    • Fabrizio Marchesano• Domino Solutions Architect, Frame Srl - Genova• Speaker agli eventi: ● Dominopoint Day 1, 2 & 3 ● Dominopoint DDive 1 & 2 ● Lotusphere 09 & 10 ● UKLUG 09• Co-autore del Redbooks® Wiki: Developing Plugins for Lotus Notes, Sametime, and Symphony ( http://www-10.lotus.com/ldd/ddwiki.nsf/dx/Table_of_Contents_Developing_Customized_Components_for_Lotus_Notes_Sametime_and_Symphony )•• http://www.frameweb.it/
    • Di cosa parleremo...• … di quello di cui non parleremo• … di quello di cui parleremo• … dellambiente di sviluppo utilizzato per creare applicazioni mobile native che si interfacciano con Domino• … di chi si ricorda del progetto B.A.C.H.• … di come consultare database Domino dal vostro tablet o smartphone tramite applicazioni mobile native• … di come eseguire agenti Domino in mobilità inviando parametri in ingresso e ottenendo un output• … di come sfruttare le potenzialità dei Web Services Domino per realizzare applicazioni mobile avanzate
    • Di cosa non parleremo• Progettazione e caratteristiche generali di unapplicazione mobile cross-platform: ● da 320x240 a 2048x1536 ● 16:9... no, 9:16... no, 3:2... no, 1.85:1 ● Tap o Swipe? ● Security• Android vs. iOS vs. BlackBerry• Titanium vs. PhoneGap vs. Corona vs...• Mobile Web App• E sì, lo so: parlando di ciò di cui non parleremo ne stiamo in realtà parlando, ritrovandoci di fatto in una “slide di Möbius”
    • A.A.A. Domino in mobilità cercasi• Applicazioni Domino mobile vs. applicazioni Domino mobilizzate• «Signori, è arrivato il vecchio Bach»• Utilizzare le funzioni native di Domino per consentire laccesso rapido in consultazione a dati in mobilità• Sfruttare le potenzialità di LotusScript inviando parametri e ottenendo un ritorno dati lasciando che sia Domino a occuparsi delle attività onerose e comunicando con basi dati non esposte a internet (anche riutilizzando codice già creato in precedenza)• Implementare web services Domino per lo scambio dati complessi realizzando applicazioni mobile avanzate per lavorare anche in modalità off-line
    • Domino App Mobile....• Creare oggi una nuova applicazione Domino significa con tutta probabilità sviluppare con le XPages• Unapplicazione realizzata con questa tecnologia è di fatto già pronta per lutilizzo mobile, senza limitazioni di OS, necessitando eventualmente di una ottimizzazione orientata alle necessità pratiche di smartphone e tablet (dimensioni schermo, connettività, ecc.)
    • ...Vs. Domino App Mobilizzate• Necessità specifiche legate a funzionalità proprie dei dispositivi mobile (e.g. accesso a rubrica contatti locale, geolocalizzazione, accesso ai dati in modalità off-line) potrebbero invece far propendere per lo sviluppo di applicazioni native che si interfacciano con Domino...• ...soluzione che può risultare particolarmente indicata per rendere accessibili in mobilità applicazioni client consolidate da tempo (anche realizzate su versioni Notes meno recenti), sfruttando la possibilità di creare un framework centralizzato per la gestione rapida delle configurazioni mobile• (e se eravate presenti al primo storico Dominopoint Day, tra quattro slide sperimenterete probabilmente una sensazione di déjà vu)
    • Scontro di Titani...um• http://www.appcelerator.com/• Parole chiave: Titanium Studio, Titanium Mobile SDK• Programmazione Javascript• Ricompilazione del codice in applicazioni native tramite gli SDK per Android, iOS, BlackBerry (il supporto per questultimo è attualmente in beta)• Perchè proprio Titanium? Ve lo dirò alla fine (ma niente a che vedere con Titanium vs. the rest of the world)
    • Whats App? Cartella principale(script, immagini, ecc.)Script eseguito allavvio Librerie di script Configurazione
    • Codice cross-platform? Sì, ma almeno un “if” vi tocca...• In ambito business, lopportunità di realizzare applicazioni mobile rivolte a un sottoinsieme noto di piattaforme non è così infrequente• La possibilità di scrivere il codice una sola volta lasciando a Titanium lonere di compilarlo per i diversi sistemi operativi è comunque benvenuta...• … anche se oggetti, proprietà e metodi dedicati sono a disposizione dei programmatori per sfruttare al meglio le caratteristiche specifiche dei vari dispositivi (e.g. Titanium.UI.Android, Titanium.UI.iOS, Titanium.UI.iPad, Titanium.UI.iPhone)• Curiosamente, sarà una peculiarità hardware a forzarvi allutilizzo di unistruzione “if” platform-specific: if(Titanium.Platform.getOsname == "android") { Titanium.App.addEventListener(android:back, function(){ //do something }) };
    • Il caro vecchio Johann Sebastian• Ricordate il progetto B.A.C.H. - BlackBerry Application Central Highway?• Le potenzialità legate allutilizzo di un unico punto di accesso alla intranet Domino per i dispositivi in mobilità (e in grado di automatizzare la gestione dellautenticazione e delle ACL) sono a tuttoggi considerevoli e valorizzabili sviluppando in Titanium• Parole chiave: Lightweight Persistence, Properties API Ti.App.Properties.setString(myString,This is a string); Ti.App.Properties.setInt(myInt,10); secondo parametro metodo GET per per metodo GET: Ti.App.Properties.setBool(myBool,true); per recupero informazioni valore di default Ti.App.Properties.setDouble(myDouble,10.6); Ti.App.Properties.setList(myList,myArray); Ti.App.Properties.getString(myString,This is a string default); Ti.App.Properties.getInt(myInt,20); metodo SET per Ti.App.Properties.getBool(myBool,false); impostazione proprietà Ti.App.Properties.getDouble(myDouble,20.6); Ti.App.Properties.getList(myList);
    • Soggetto: accesso dati in lettura (1)• Esigenza base: consultazione via HTTP da dispositivi mobili di dati residenti su applicazioni intranet
    • Soggetto: accesso dati in lettura (2)• Rendere disponibili i dati da Domino in modalità strutturata: comando URL ReadViewEntries e relativi parametri
    • Soggetto: accesso dati in lettura (3) • Lettura dati: Titanium.Network.HTTPClient, getResponseXML e Titanium.XML.Documentvar client = Ti.Network.createHTTPClient({ // funzione richiamata quando sono disponibili dati di ritorno onload : function(e) { var xmlDoc=this.responseXML; // inserire il codice per il parsing }, // funzione richiamata in caso di errore, incluso il timeoutonerror : function(e) { // inserire il codice per la gestione degli errori }, timeout : 5000 // in millisecondi });var url=http://<servername>/<dbpath>/<dbname>/<viewname>?ReadViewEntries&StartKey=+field.value;// preparazione della connessioneclient.open("GET", url);// invio della richiestaclient.send();
    • Risposta: LotusScript Agents (1)• Esigenza speciale: S.I.C.B.S.O (Simple In, Complex Between, Simple Out)Parametro Parametro IN OUT http://turbulence.org/spotlight/thinking/chess.html
    • Risposta: LotusScript Agents (2)• Predisposizione agente LotusScript per chiamata via URL con passaggio parametri e ritorno valore: Query_String e Print Dim Ss As New NotesSession Dim wDoc As NotesDocument Dim ret As String, retError As String Dim strParamList As Variant Dim strQueryString As String, param1 As String On Error GoTo retError gestione per errori non previsti Set wDoc=Ss.DocumentContext lista dei parametri passati via url strQueryString=StrRight(wDoc.Query_String(0),"&") strParamList=Evaluate({@Explode("} & strQueryString & {"; "&")}) definisco i parametri passati via url param1=StrRight(strParamList(0),"=") INSERIRE CODICE PERSONALIZZATO ret="Operazione eseguita con successo." ret: Print "Content-type: text/xml; charset=utf-8" Print ret Exit Sub retError: Resume errMsg errMsg: retError="ATTENZIONE!"+Chr(10)+"Lapplicazione ha riscontrato un errore imprevisto." Print "Content-type: text/xml; charset=utf-8" Print retError
    • Risposta: LotusScript Agents (3)• Esecuzione agente e lettura risposta: Titanium.Network.HTTPClient e getResponseText var client = Ti.Network.createHTTPClient({ // funzione richiamata quando sono disponibili dati di ritorno onload : function(e) { var retAgent=this.responseText; // inserire il codice per la gestione del messaggio di ritorno }, // funzione richiamata in caso di errore, incluso il timeout onerror : function(e) { // inserire il codice per la gestione degli errori }, timeout : 5000 // in millisecondi }); var url=http://<servername>/<dbpath>/<dbname>/<agentname>?OpenAgent&param1=+field.value; // preparazione della connessione client.open("GET", url); // invio della richiesta client.send();
    • Controsoggetto per aumentazione:Domino Web Services e SQLite Database (1)• Esigenza complessa: importazione-esportazione record
    • Controsoggetto per aumentazione:Domino Web Services e SQLite Database (2)• Predisposizione Domino per gestione dati strutturati: LotusScript/Java e WSDL Class wsClass Function wsFunction(param1 As String, param2 As String) As String Dim Ss As New NotesSession Dim Db As NotesDatabase On Error GoTo retError Set Db = Ss.CurrentDatabase INSERIRE CODICE PERSONALIZZATO IMPOSTARE VALORE DI RITORNO wsFunction = "ok" Exit Function retError: Resume errMsg errMsg: VALORE DI RITORNO IN CASO DI ERRORE wsFunction="error" End Function End Class
    • Controsoggetto per aumentazione:Domino Web Services e SQLite Database (3)• Interazione da dispositivo: Titanium.Network.HTTPClient, SOAPAction e Ti.Database.open var url = http://<servername>/<dbpath>/<dbname>/<webservicename>?OpenWebService; var callparams = { parameter1 : field1.value, parameter2 : field2.value, }; var wsclient = new customWSHTTPClient({ // funzione che restituisce un oggetto endpoint : url, // HTTPClient predisposto per protocollo SOAP targetNamespace : http://www.webserviceX.NET/ }); try { wsclient.invoke(<FUNCTIONAME>, callparams, function(xmlDoc) { var results = xmlDoc.documentElement.getElementsByTagName(<TAGNAME>); if(results && results.length > 0) { var result = results.item(0).firstChild.nodeValue; var db = Ti.Database.open(dbname); db.execute(INSERT INTO tablename (columnname) VALUES (?), result); db.close(); } else { alert(Errore risultato); } }); } catch(e) { alert(Errore connessione); }
    • Applicazione a tre voci (demo)
    • Dal frontespizio dellautografo delle “Invenzioni e Sinfonie” di J. S. Bach• «Metodo efficace con cui si presenta in forma chiara agli appassionati degli strumenti a tastiera e soprattutto a coloro che sono desiderosi di apprendere, non soltanto (1) come si suona correttamente a due voci, ma anche (2) come si può arrivare, man mano che lallievo progredisce, a far buon uso di tre voci obbligate e ottenere così non soltanto delle buone invenzioni, ma poterle pure bene eseguire e soprattutto acquistare larte del cantabile e il gusto della composizione» (Joh. Seb. Bach, Maestro di Cappella di Sua Altezza il Principe di Anhalt-Köthen, Anno Christi 1723)
    • PERCHÈ PROPRIO TITANIUM (1) Uno studio in Titaniumhttp://www.theindieshelter.com/2012/indieanapolis-2012-fabriziomarchesano/
    • PERCHÈ PROPRIO TITANIUM (2)Halloween Stories for Music Lovershttps://play.google.com/store/apps/details?id=com.mozartfma.firstnameday
    • Questions?Contatti: fabrizio.marchesano@frameweb.it
    • Grazie agli sponsor per aver reso possibile i Dominopoint Days 2012! Main Sponsor Vad sponsor Platinum sponsor Gold sponsor