SlideShare a Scribd company logo
1 of 4
Download to read offline
B.A.C.H. per chi non c’era
                               di Fabrizio Marchesano, Frame srl

                                         Seconda parte

Disclaimer 1: il presente testo è la revisione in formato articolo della sessione relativa a Domino &
BlackBerry presentata all'evento Dominopoint; anche se i contenuti sono i medesimi, l'esposizione degli
argomenti è naturalmente stata adattata alla pubblicazione per iscritto.

Disclaimer 2: questo articolo è rivolto a sviluppatori e amministratori che abbiano già dimestichezza con
i dispositivi BlackBerry e l'ambiente di sviluppo Domino; anche se in alcuni casi, a scopo di maggior
chiarezza, verranno ribaditi alcuni concetti primari, si dà per scontata una conoscenza di base della
terminologia utilizzata e dei software di riferimento.

Nella prima parte di questo articolo (N.B.: in caso di pubblicazione separata delle
due parti, inserire qui il link alla prima parte) abbiamo visto come sia possibile
risalire al PIN identificativo di un dispositivo BlackBerry utilizzato per accedere al
nostro ambiente Domino.
Riassumiamo per chiarezza espositiva i punti chiave stabiliti:

       il PIN è un codice alfanumerico che identifica univocamente il dispositivo
   ●
       BlackBerry

       l'associazione PIN-Utenza-EMail è univoca e in ambiente Domino è esplicitata
   ●
       nel database BlackBerry User Profiles

       è possibile configurare il BlackBerry Enterprise Server in modo da consentire
   ●
       l'invio delle informazioni relative al PIN nelle headers delle richieste HTTP inviate
       dai dispositivi BlackBerry

       relativamente alla applicazioni MDS Studio, è possibile configurare le Device
   ●
       Policies del BES in modo da consentire la lettura di informazioni da
       un'applicazione a un'altra (con particolare riferimento al gruppo di variabili
       denominato DeviceInfo, comprendente naturalmente il PIN)

       in ambiente Domino esistono diverse metodologie applicative per acquisire il
   ●
       valore del PIN in dipendenza dal tipo di applicazione alla quale stiamo
       accedendo via BlackBerry (Notes Agent, Formule, Web Services)

       noto il PIN, è possibile risalire all'identità dell'utente associato al dispositivo che
   ●
       sta effettuando la richiesta, tramite formule di lookup o script analoghi,
       recuperando l'informazione dal database BlackBerry User Profiles (o
       qualunque altro database contenga la stessa informazione)


La situazione di partenza per questa seconda parte dell'articolo è quindi la seguente: è
stato effettuato un accesso via BlackBerry a dati residenti nella nostra intranet Domino
da parte di un utente identificabile (e identificato) senza necessità di autenticazione
tramite inserimento di username e password.
Siamo dunque pronti a effettuare un primo passo per raggiungere l'obiettivo prefissato
(accesso alla Intranet Domino via BlackBerry bypassando l'autenticazione manuale):
la progettazione di una security di tipo applicativo.
In altre parole, possiamo effettuare in backend la verifica dei diritti di accesso
dell'utente per conto dell'utente stesso.
L'ambiente Domino ci mette a disposizione diversi strumenti per ottenere questo
risultato.
Ad esempio, se all'interno dell'applicazione stiamo già utilizzando campi Authors e
Readers, potremmo semplicemente verificare se l'utente in questione è compreso
nelle liste memorizzate in tali campi.
Naturalmente, la security di un'applicazione Notes non è limitata all'inserimento
esplicito di un nominativo in campi appositi, ma si basa anche e soprattutto su una
corretta gestione dell'Access Control List, dell'appartenenza a gruppi, dell'attribuzione
di ruoli, e spesso una singola applicazione, nel senso più ampio del termine, è
costituita da differenti database NSF, ciascuno con le proprie ACL esecurity rules.
In questi casi possiamo verificare i diritti di una particolare utenza ad esempio via
Lotus Script utilizzando i metodi QueryAccess, QueryAccessPrivileges e
QueryAccessRoles, tutti definiti all'interno dell'oggetto NotesDatabase.
Oppure ancora, a parità di condizioni di security, possiamo impostare regole dinamiche
basate sulla tipologia e lo stato effettivo dei documenti (ad esempio, un certo
documento in un certo stato può essere modificato solo dal responsabile diretto
dell'autore del documento stesso, informazione memorizzata in un database per la
gestione gerarchica dello Staff).
Non esistono regole generali sempre valide per privilegiare una strada piuttosto che
un'altra: la decisione finale verrà presa in base all'esperienza e in dipendenza dalle
specifiche condizioni al contorno.
Vediamo ora un esempio pratico relativo al flusso delle informazioni per
un'applicazione BlackBerry realizzata con MDS Studio via Domino Web Services.


Compilazione Rapportini via BlackBerry

La schermata iniziale dell'applicazione richiede l'inserimento di una chiave di ricerca:




La funzione di ricerca associata, che chiameremo getCustomers, è basata sulla
valorizzazione di due variabili, myPIN e myCust:

Function getCustomers(myPIN as String, myCust As String) As Customers


myPIN, come abbiamo visto nella prima parte di questo articolo (N.B.: in caso di
pubblicazione separata delle due parti, inserire qui il link alla prima parte),
viene valorizzata automaticamente con il PIN del dispositivo, myCust è la chiave di
ricerca inserita.
Una volta risaliti all'identità dell'utente associato al PIN con uno dei metodi sopra
descritti e sulla base della stringa associata alla variabile myCust, il valore di ritorno
sarà costituito dalla collection dei clienti il cui nominativo corrisponde al criterio di
ricerca e filtrata sulla base dei diritti di accesso dell'utente
                                                               :




La funzione associata a questa seconda schermata, che chiameremo getOrders,
restituirà l'elenco delle commesse relative al cliente selezionato, anch'esso filtrato sulla
base dei diritti di accesso dell'utente:

Function getOrders(myName As String, myCust As String) As Orders

La variabile myPIN è stata rinominata in myName (l'utenza associata al PIN è stata
esplicitata in precedenza) mentre myCust conterrà ora l'identificativo completo del
cliente come selezionato dalla lista.
Il valore di ritorno viene così esplicitato nella schermata successiva:




Una volta selezionata la commessa desiderata, si accederà alla compilazione del
rapportino vero e proprio:




Il passo finale sarà la creazione di un documento Notes in apposito database:

Function repStatus (myName As String, myCust As String, myOrder As
String,myDetails As String, myDate As String, myPlace As String, sTime As
String,eTime As String, pMinute As String) As Report

… ' codice per verifica integrità dati
' creo il nuovo documento rapportino
Set rDoc=rDb.CreateDocument
… ' codice per trasferimento dati in documento Notes e salvataggio

Da qui in poi l'unico limite è la vostra fantasia (più spesso la fantasia del cliente): invio
in automatico di notifica al responsabile della commessa, conversione del rapportino in
PDF e invio in tempo reale al cliente (il cui indirizzo di posta elettronica è memorizzato
nel database di anagrafica) finalizzato alla stampa e alla firma del documento
cartaceo, eccetera.


Accentramento delle procedure

Abbiamo dunque analizzato le possibilità offerte dallo sviluppo di applicazioni
BlackBerry in ambiente Domino per l'autenticazione in backend degli utenti e
approfondito un esempio di flusso applicativo.
Ma non è tutto qui: dopo aver semplificato e velocizzato l'utilizzo delle applicazioni per
l'utente, possiamo compiere un piccolo passo in più per facilitarne l'approccio anche
dal punto di vista dei programmatori.
Effettuando l'autenticazione in backend, infatti, non abbiamo più la necessità
contingente di aggregare le procedure costituenti l'applicazione nello stesso database
dove risiedono i dati.
In altre parole, è possibile progettare lo sviluppo di un repository centralizzato e
condiviso atto a contenere Notes Agents, Web Services, codice Java (le Central
Highways dell'acronimo B.A.C.H.) e qualunque altro strumento necessario alla
realizzazione di applicazioni, con tutti i benefici che ne possono derivare.
Ad esempio:

       sviluppo non dispersivo
   ●


       condivisione script libraries e codice
   ●


       omogeneità strutturale delle applicazioni
   ●


       possibilità di gestione funzionalità lato client, tramite compilazione di appositi
   ●
       documenti keyword

       possibilità di realizzazione di un pacchetto di applicazioni base, personalizzabile
   ●
       secondo le esigenze del cliente

e qualunque altro vantaggio riconducibile alla gestione centralizzata di procedure
informatiche.


Sviluppi futuri

All'inizio di questa seconda parte dell'articolo, ho parlato di “primo passo per
raggiungere l'obiettivo prefissato”: prima ancora che l'evento Dominopoint avesse
inizio, noi relatori avevamo già iniziato un proficuo scambio di idee, che nel caso
particolare ha portato a gettare le basi per interessanti evoluzioni future.
Come si suol dire: stay tuned for more.
Buon lavoro a tutti!

More Related Content

Viewers also liked

Les articles
Les articlesLes articles
Les articlesluzjares
 
Superstitions-New Orleans
Superstitions-New OrleansSuperstitions-New Orleans
Superstitions-New Orleanssesiebep
 
Comercio carito flores esssdddd
Comercio carito flores esssddddComercio carito flores esssdddd
Comercio carito flores esssddddCarito Flores
 
china porra weslley me ajuda nigga
china porra weslley me ajuda niggachina porra weslley me ajuda nigga
china porra weslley me ajuda niggaMicael José
 
Presentacion diseño proyecto final compiladaa unad
Presentacion diseño proyecto final compiladaa unadPresentacion diseño proyecto final compiladaa unad
Presentacion diseño proyecto final compiladaa unadjaipacas
 
Preguntas de la unidad
Preguntas de la unidadPreguntas de la unidad
Preguntas de la unidadhuman326
 
Taller 1 de 8 InnovaXion / Educación Superior
Taller 1 de 8 InnovaXion / Educación SuperiorTaller 1 de 8 InnovaXion / Educación Superior
Taller 1 de 8 InnovaXion / Educación SuperiorInnovaXion
 
Los muros de bruselas
Los muros de bruselasLos muros de bruselas
Los muros de bruselasrec_social
 
Acero iii email
Acero iii emailAcero iii email
Acero iii emailpax_paks
 
Evidencia power point no 4
Evidencia power point no 4Evidencia power point no 4
Evidencia power point no 4erickmunozz
 
Sentimientos
SentimientosSentimientos
Sentimientosesraro
 
tiquipaya fin de gestion
tiquipaya fin de gestiontiquipaya fin de gestion
tiquipaya fin de gestionmarin727
 
Առածների բառարան
Առածների բառարանԱռածների բառարան
Առածների բառարանGAnahit
 
Vida de brinquedo
Vida de brinquedoVida de brinquedo
Vida de brinquedospssilvana
 

Viewers also liked (20)

IBM Smart Cloud, #dd13
IBM Smart Cloud, #dd13IBM Smart Cloud, #dd13
IBM Smart Cloud, #dd13
 
Les articles
Les articlesLes articles
Les articles
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
Superstitions-New Orleans
Superstitions-New OrleansSuperstitions-New Orleans
Superstitions-New Orleans
 
Comercio carito flores esssdddd
Comercio carito flores esssddddComercio carito flores esssdddd
Comercio carito flores esssdddd
 
china porra weslley me ajuda nigga
china porra weslley me ajuda niggachina porra weslley me ajuda nigga
china porra weslley me ajuda nigga
 
Presentacion diseño proyecto final compiladaa unad
Presentacion diseño proyecto final compiladaa unadPresentacion diseño proyecto final compiladaa unad
Presentacion diseño proyecto final compiladaa unad
 
Preguntas de la unidad
Preguntas de la unidadPreguntas de la unidad
Preguntas de la unidad
 
Ecologia 1
Ecologia 1Ecologia 1
Ecologia 1
 
Reunio11
Reunio11Reunio11
Reunio11
 
Taller 1 de 8 InnovaXion / Educación Superior
Taller 1 de 8 InnovaXion / Educación SuperiorTaller 1 de 8 InnovaXion / Educación Superior
Taller 1 de 8 InnovaXion / Educación Superior
 
Los muros de bruselas
Los muros de bruselasLos muros de bruselas
Los muros de bruselas
 
Acero iii email
Acero iii emailAcero iii email
Acero iii email
 
Evidencia power point no 4
Evidencia power point no 4Evidencia power point no 4
Evidencia power point no 4
 
Sentimientos
SentimientosSentimientos
Sentimientos
 
tiquipaya fin de gestion
tiquipaya fin de gestiontiquipaya fin de gestion
tiquipaya fin de gestion
 
339
339339
339
 
Առածների բառարան
Առածների բառարանԱռածների բառարան
Առածների բառարան
 
Caries(3)
Caries(3)Caries(3)
Caries(3)
 
Vida de brinquedo
Vida de brinquedoVida de brinquedo
Vida de brinquedo
 

More from Dominopoint - Italian Lotus User Group

IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...Dominopoint - Italian Lotus User Group
 

More from Dominopoint - Italian Lotus User Group (20)

TOTP - Time-Based One Time password in Domino
TOTP - Time-Based One Time password in DominoTOTP - Time-Based One Time password in Domino
TOTP - Time-Based One Time password in Domino
 
Domino Backup V12 - Un nuovo Task
Domino Backup V12 - Un nuovo TaskDomino Backup V12 - Un nuovo Task
Domino Backup V12 - Un nuovo Task
 
Mail Client from Traveler to Verse On-Premises
Mail Client from Traveler to Verse On-PremisesMail Client from Traveler to Verse On-Premises
Mail Client from Traveler to Verse On-Premises
 
IBM Worspace: Towards a culture of conversations
IBM Worspace: Towards a culture of conversationsIBM Worspace: Towards a culture of conversations
IBM Worspace: Towards a culture of conversations
 
Microsoft Outlook for Domino (IMSMO)
Microsoft Outlook for Domino (IMSMO)Microsoft Outlook for Domino (IMSMO)
Microsoft Outlook for Domino (IMSMO)
 
Riding the Enterprise Integration train
Riding the Enterprise Integration trainRiding the Enterprise Integration train
Riding the Enterprise Integration train
 
Ortocloud l'applicazione per fare orto su Bluemix
Ortocloud l'applicazione per fare orto su BluemixOrtocloud l'applicazione per fare orto su Bluemix
Ortocloud l'applicazione per fare orto su Bluemix
 
Meetit16 KeyNote di Apertura
Meetit16 KeyNote di AperturaMeetit16 KeyNote di Apertura
Meetit16 KeyNote di Apertura
 
IBM Domino Modernizing apps with Angularjs
IBM Domino Modernizing apps with AngularjsIBM Domino Modernizing apps with Angularjs
IBM Domino Modernizing apps with Angularjs
 
IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...
 
Cloudant e XPages
Cloudant e XPagesCloudant e XPages
Cloudant e XPages
 
IBM Bluemix
IBM BluemixIBM Bluemix
IBM Bluemix
 
IBM Connections 10 things every user should know
IBM Connections 10 things every user should knowIBM Connections 10 things every user should know
IBM Connections 10 things every user should know
 
IBM Verse New Way To Work
IBM Verse New Way To WorkIBM Verse New Way To Work
IBM Verse New Way To Work
 
Crossware MailSignature
Crossware MailSignatureCrossware MailSignature
Crossware MailSignature
 
Cooperteam soluzioni
Cooperteam soluzioniCooperteam soluzioni
Cooperteam soluzioni
 
Notes and Domino Roadmap
Notes and Domino RoadmapNotes and Domino Roadmap
Notes and Domino Roadmap
 
La Collaborazione Europea
La Collaborazione EuropeaLa Collaborazione Europea
La Collaborazione Europea
 
the future of work
the future of workthe future of work
the future of work
 
Dominopoint meet the experts 2015 - XPages
Dominopoint   meet the experts 2015 - XPagesDominopoint   meet the experts 2015 - XPages
Dominopoint meet the experts 2015 - XPages
 

Bach Per Chi Non C Era Parte Ii

  • 1. B.A.C.H. per chi non c’era di Fabrizio Marchesano, Frame srl Seconda parte Disclaimer 1: il presente testo è la revisione in formato articolo della sessione relativa a Domino & BlackBerry presentata all'evento Dominopoint; anche se i contenuti sono i medesimi, l'esposizione degli argomenti è naturalmente stata adattata alla pubblicazione per iscritto. Disclaimer 2: questo articolo è rivolto a sviluppatori e amministratori che abbiano già dimestichezza con i dispositivi BlackBerry e l'ambiente di sviluppo Domino; anche se in alcuni casi, a scopo di maggior chiarezza, verranno ribaditi alcuni concetti primari, si dà per scontata una conoscenza di base della terminologia utilizzata e dei software di riferimento. Nella prima parte di questo articolo (N.B.: in caso di pubblicazione separata delle due parti, inserire qui il link alla prima parte) abbiamo visto come sia possibile risalire al PIN identificativo di un dispositivo BlackBerry utilizzato per accedere al nostro ambiente Domino. Riassumiamo per chiarezza espositiva i punti chiave stabiliti: il PIN è un codice alfanumerico che identifica univocamente il dispositivo ● BlackBerry l'associazione PIN-Utenza-EMail è univoca e in ambiente Domino è esplicitata ● nel database BlackBerry User Profiles è possibile configurare il BlackBerry Enterprise Server in modo da consentire ● l'invio delle informazioni relative al PIN nelle headers delle richieste HTTP inviate dai dispositivi BlackBerry relativamente alla applicazioni MDS Studio, è possibile configurare le Device ● Policies del BES in modo da consentire la lettura di informazioni da un'applicazione a un'altra (con particolare riferimento al gruppo di variabili denominato DeviceInfo, comprendente naturalmente il PIN) in ambiente Domino esistono diverse metodologie applicative per acquisire il ● valore del PIN in dipendenza dal tipo di applicazione alla quale stiamo accedendo via BlackBerry (Notes Agent, Formule, Web Services) noto il PIN, è possibile risalire all'identità dell'utente associato al dispositivo che ● sta effettuando la richiesta, tramite formule di lookup o script analoghi, recuperando l'informazione dal database BlackBerry User Profiles (o qualunque altro database contenga la stessa informazione) La situazione di partenza per questa seconda parte dell'articolo è quindi la seguente: è stato effettuato un accesso via BlackBerry a dati residenti nella nostra intranet Domino da parte di un utente identificabile (e identificato) senza necessità di autenticazione tramite inserimento di username e password. Siamo dunque pronti a effettuare un primo passo per raggiungere l'obiettivo prefissato (accesso alla Intranet Domino via BlackBerry bypassando l'autenticazione manuale): la progettazione di una security di tipo applicativo.
  • 2. In altre parole, possiamo effettuare in backend la verifica dei diritti di accesso dell'utente per conto dell'utente stesso. L'ambiente Domino ci mette a disposizione diversi strumenti per ottenere questo risultato. Ad esempio, se all'interno dell'applicazione stiamo già utilizzando campi Authors e Readers, potremmo semplicemente verificare se l'utente in questione è compreso nelle liste memorizzate in tali campi. Naturalmente, la security di un'applicazione Notes non è limitata all'inserimento esplicito di un nominativo in campi appositi, ma si basa anche e soprattutto su una corretta gestione dell'Access Control List, dell'appartenenza a gruppi, dell'attribuzione di ruoli, e spesso una singola applicazione, nel senso più ampio del termine, è costituita da differenti database NSF, ciascuno con le proprie ACL esecurity rules. In questi casi possiamo verificare i diritti di una particolare utenza ad esempio via Lotus Script utilizzando i metodi QueryAccess, QueryAccessPrivileges e QueryAccessRoles, tutti definiti all'interno dell'oggetto NotesDatabase. Oppure ancora, a parità di condizioni di security, possiamo impostare regole dinamiche basate sulla tipologia e lo stato effettivo dei documenti (ad esempio, un certo documento in un certo stato può essere modificato solo dal responsabile diretto dell'autore del documento stesso, informazione memorizzata in un database per la gestione gerarchica dello Staff). Non esistono regole generali sempre valide per privilegiare una strada piuttosto che un'altra: la decisione finale verrà presa in base all'esperienza e in dipendenza dalle specifiche condizioni al contorno. Vediamo ora un esempio pratico relativo al flusso delle informazioni per un'applicazione BlackBerry realizzata con MDS Studio via Domino Web Services. Compilazione Rapportini via BlackBerry La schermata iniziale dell'applicazione richiede l'inserimento di una chiave di ricerca: La funzione di ricerca associata, che chiameremo getCustomers, è basata sulla valorizzazione di due variabili, myPIN e myCust: Function getCustomers(myPIN as String, myCust As String) As Customers myPIN, come abbiamo visto nella prima parte di questo articolo (N.B.: in caso di pubblicazione separata delle due parti, inserire qui il link alla prima parte), viene valorizzata automaticamente con il PIN del dispositivo, myCust è la chiave di ricerca inserita. Una volta risaliti all'identità dell'utente associato al PIN con uno dei metodi sopra descritti e sulla base della stringa associata alla variabile myCust, il valore di ritorno
  • 3. sarà costituito dalla collection dei clienti il cui nominativo corrisponde al criterio di ricerca e filtrata sulla base dei diritti di accesso dell'utente : La funzione associata a questa seconda schermata, che chiameremo getOrders, restituirà l'elenco delle commesse relative al cliente selezionato, anch'esso filtrato sulla base dei diritti di accesso dell'utente: Function getOrders(myName As String, myCust As String) As Orders La variabile myPIN è stata rinominata in myName (l'utenza associata al PIN è stata esplicitata in precedenza) mentre myCust conterrà ora l'identificativo completo del cliente come selezionato dalla lista. Il valore di ritorno viene così esplicitato nella schermata successiva: Una volta selezionata la commessa desiderata, si accederà alla compilazione del rapportino vero e proprio: Il passo finale sarà la creazione di un documento Notes in apposito database: Function repStatus (myName As String, myCust As String, myOrder As String,myDetails As String, myDate As String, myPlace As String, sTime As String,eTime As String, pMinute As String) As Report … ' codice per verifica integrità dati ' creo il nuovo documento rapportino
  • 4. Set rDoc=rDb.CreateDocument … ' codice per trasferimento dati in documento Notes e salvataggio Da qui in poi l'unico limite è la vostra fantasia (più spesso la fantasia del cliente): invio in automatico di notifica al responsabile della commessa, conversione del rapportino in PDF e invio in tempo reale al cliente (il cui indirizzo di posta elettronica è memorizzato nel database di anagrafica) finalizzato alla stampa e alla firma del documento cartaceo, eccetera. Accentramento delle procedure Abbiamo dunque analizzato le possibilità offerte dallo sviluppo di applicazioni BlackBerry in ambiente Domino per l'autenticazione in backend degli utenti e approfondito un esempio di flusso applicativo. Ma non è tutto qui: dopo aver semplificato e velocizzato l'utilizzo delle applicazioni per l'utente, possiamo compiere un piccolo passo in più per facilitarne l'approccio anche dal punto di vista dei programmatori. Effettuando l'autenticazione in backend, infatti, non abbiamo più la necessità contingente di aggregare le procedure costituenti l'applicazione nello stesso database dove risiedono i dati. In altre parole, è possibile progettare lo sviluppo di un repository centralizzato e condiviso atto a contenere Notes Agents, Web Services, codice Java (le Central Highways dell'acronimo B.A.C.H.) e qualunque altro strumento necessario alla realizzazione di applicazioni, con tutti i benefici che ne possono derivare. Ad esempio: sviluppo non dispersivo ● condivisione script libraries e codice ● omogeneità strutturale delle applicazioni ● possibilità di gestione funzionalità lato client, tramite compilazione di appositi ● documenti keyword possibilità di realizzazione di un pacchetto di applicazioni base, personalizzabile ● secondo le esigenze del cliente e qualunque altro vantaggio riconducibile alla gestione centralizzata di procedure informatiche. Sviluppi futuri All'inizio di questa seconda parte dell'articolo, ho parlato di “primo passo per raggiungere l'obiettivo prefissato”: prima ancora che l'evento Dominopoint avesse inizio, noi relatori avevamo già iniziato un proficuo scambio di idee, che nel caso particolare ha portato a gettare le basi per interessanti evoluzioni future. Come si suol dire: stay tuned for more. Buon lavoro a tutti!