• Non ci sono risultati.

Implementazione dei flussi di lavoro

I diagrammi BPMN relativi ai flussi di lavoro (capitolo 4.4.1 Figura 4.1 e capitolo 4.4.2 Fi- gura 4.2) sono memorizzati in due file, “richiediCSSemplice.bpmn” e “presentaDRC.bpmn”. Per ogni attività descritta aggiungiamo nomi, identificativi e form associati, secondo lo schema presentato nella Tabella 6.2 e nella Tabella 6.3.

6.4. IMPLEMENTAZIONE DEI FLUSSI DI LAVORO 51

Nome Id Form

Start startevent1 psw:avviaDRC Protocolla Domanda di Ricostruzione di Carrie- ra protocollaDRC psw:activitiProtocollaDRC Verifica Auto- certificazione dei Servizi verificaAS psw:activitiVerificaAS

Notifica di rifiuto della DRC notificaRifiutoDRC psw:activitiNotificaRifiutoDRC Approva Domanda di Ricostruzione di Carrie- ra approvaDRC psw:activitiApprovaDRC

Notifica una nuova DRC

notificaNuovaDRC psw:activitiNotificaNuovaDRC Notifica di invio della

DRC

notificaInvioDRC psw:activitiNotificaApprovazioneDRC

Tabella 6.3: Schema della presentazione di domanda di ricostruzione di carriera

I diagrammi dei flussi di lavoro così implementati non sono ancora completi, mancano infatti numerose informazioni necessarie affinché il lavoro venga svolto. Tali informazioni prendono la forma di tipi e proprietà che descriviamo all’interno di un modello XML “psWorkflowModel.xml”. Utilizziamo come base le informazioni importate dai modelli dei dati (prefissod), dei contenuti (prefisso (prefisso cm), dei flussi di lavoro (prefisso (prefisso

bpm) e dei contenuti personalizzati (prefisso (prefisso psc). Definiamo quindi uno spazio dei nomi specifico, identificato dal prefissopsw.

Il modello contiene la definizione di tredici tipi (corrispondenti ai form associati agli eventi e alle attività dei flussi di lavoro) e di due aspetti (utilizzati per gestire le associa- zioni).

Gli aspetti definiti sonopsw:allegaCS epsw:allegabile. Il primo permette di associa- re un certificato di servizio (quindi un contenuto di tipo psc:certificatoServizio) ed è utilizzato in gran parte dei form della richiesta di certificato di servizio. Si tratta di un aspetto obbligatorio, in quanto il documento è un elemento fondamentale di quel processo di lavoro. < a s p e c t na m e =" psw : a l l e g a C S " > < a s s o c i a t i o n s > < a s s o c i a t i o n n a m e =" psw : n u o v o C S " > < title > C e r t i f i c a t o di S e r v i z io </ title > < source > < m a n d a t o r y > true </ m a n d a t o r y > < many > false </ many >

</ source > < target >

< class > psc : c e r t i f i c a t o S e r v i z i o </ class > < m a n d a t o r y > true </ m a n d a t o r y >

52 CAPITOLO 6. LA PIATTAFORMA SOFTWARE

< many > false </ many > </ target >

</ a s s o c i a t i o n > </ a s s o c i a t i o n s > </ aspect >

Per quanto riguarda invece psw:allegabile, si tratta di un aspetto utilizzato nei moduli della presentazione di domanda di ricostruzione di carriera e consente di associare le tre diverse tipologie di documenti coinvolte nel flusso di lavoro. Abbiamo quindi due asso- ciazioni singole obbligatorie, una per la domanda di ricostruzione di carriera (psw:docDRC) e una per l’autocertificazione dei servizi (psw:docAS), per le quali si limita il tipo di con-

tenuto ammissibile, rispettivamentepsc:domandaRCe psc:autocertificazioneServizi. La terza associazione, invece, permette di inserire ulteriori documenti allegati, la cui pre- senza, numero e tipologia dipende dalla scelta del richiedente. Scegliamo di impostarla come facoltativa, multipla e riferita al tipo radice associato a tutti i contenuti di Alfresco (cm:content).

I primi sei tipi che abbiamo definito sono relativi alla richiesta di certificato di servi- zio. L’evento iniziale è associato a psw:avviaRichiestaCS, dove l’unico dato atteso (che viene quindi inserito dall’utente al momento di avviare il workflow ) è l’assegnatario. Il destinatario della richiesta è il DSGA dell’istituto scolastico dove è stato svolto il servizio, dunque, per la rappresentazione data ai ruoli sulla piattaforma, l’assegnatario è uno dei gruppi rappresentanti la segreteria di un istituto. Abbiamo quindi implementato l’aspetto obbligatoriobpm:groupAssignee per gestire l’assegnamento:

< t y p e n a me =" psw : a v v i a R i c h i e s t a C S " > < parent > bpm : s t a r t T a s k </ parent > < m a n d a t o r y - aspects > < aspect > bpm : g r o u p A s s i g n e e </ aspect > </ m a n d a t o r y - aspects > </ type >

Al momento della creazione del certificato di servizio (attività utente creaCSS che cor-

risponde ai tipi di dato descritti in psw:activitiCreaCSSemplice) il DSGA deve poter allegare il certificato di servizio prodotto e sottoporlo al giudizio del dirigente scolastico (cioè assegnarlo al DS). Realizziamo l’assegnamento in maniera analoga a quanto visto per psw:avviaRichiestaCS, utilizzando però l’aspetto relativo al singolo utente messo a disposizione dal modello bpm, ossia bpm:assignee. Per quanto riguarda il documento da allegare, utilizziamo l’aspetto psw:allegaCS precedentemente definito, inserendolo nel tag

<mandatory-aspects>. Per far sì che il documento associato sia modificabile nel corso del- l’attività, disabilitiamo le impostazioni dibpm:packageItemActionGroupe le impostiamo di default sull’opzione edit :

< o v e r r i d e s >

< p r o p e r t y n a m e =" bpm : p a c k a g e I t e m A c t i o n G r o u p " > < default > e d i t _ p a c k a g e _ i t e m _ a c t i o n s </ default > </ p r o p e r t y >

6.4. IMPLEMENTAZIONE DEI FLUSSI DI LAVORO 53

La richiesta di certificato di servizio presenta due attività di scelta, una relativa alla valu- tazione del documento (valutaCSS), l’altra all’opportunità di revisionarlo (revisionaCSS). I tipi corrispondenti (rispettivamente psw:activitiValutaCS e psw:activitiRevisionaCS) devono gestire dati analoghi: una scelta di tipo binario e un documento allegato. Il modello offerto di base da Alfresco per i flussi di lavoro, presenta un tipo dalle medesime caratte- ristiche che utilizziamo come tipo genitore, ossia bpm:activitiOutcomeTask. I tipi che ne discendono definiscono una proprietà che contiene dati di tipo testuale (d:text), avente due soli valori possibili (utilizziamo un <constraint>). Consideriamo il codice relativo a

psw:activitiValutaCS:

< t y p e n a me =" psw : a c t i v i t i V a l u t a C S " >

< parent > bpm : a c t i v i t i O u t c o m e T a s k </ parent > < p r o p e r t i e s >

< p r o p e r t y n a m e =" psw : e s i t o V a l u t a z i o n e C S " > < type > d : text </ type >

< default > R es p i n t o </ default > < c o n s t r a i n t s > < c o n s t r a i n t t y p e =" L I S T " > < p a r a m e t e r n a m e =" a l l o w e d V a l u e s " > < list > < value > A p p r o v a t o </ value > < value > R e s pi n t o </ value > </ list > </ p a r a m e t e r > </ c o n s t r a i n t > </ c o n s t r a i n t s > </ p r o p e r t y > </ p r o p e r t i e s > < o v e r r i d e s > < p r o p e r t y n a m e =" bpm : p a c k a g e I t e m A c t i o n G r o u p " > < default > e d i t _ p a c k a g e _ i t e m _ a c t i o n s </ default > </ p r o p e r t y > < p r o p e r t y n a m e =" bpm : o u t c o m e P r o p e r t y N a m e " > < default >{ ht t p :// www . p o r t a l e S c u o l a . com / m o d e l / w o r k f l o w / 1 . 0 } e s i t o V a l u t a z i o n e C S </ default > </ p r o p e r t y > </ o v e r r i d e s > < m a n d a t o r y - aspects > < aspect > psw : a l l e g a C S </ aspect > </ m a n d a t o r y - aspects > </ type >

Affinché la proprietà personalizzatapsw:esitoValutazioneCSsia interpretata correttamente come risultato dell’attività, reimpostiamo il valore di default dibpm:outcomePropertyName

54 CAPITOLO 6. LA PIATTAFORMA SOFTWARE Le attività di notifica sono associate a tipi (psw:activitiNotificaApprovazione e psw :activitiNotificaRifiuto) molto simili, si differenziano solo per il fatto che l’aspetto

psw:allegaCSè definito unicamente in caso di approvazione del certificato di servizio7. Gli altri sette tipi di “psWorkflowModel.xml” sono relativi alla presentazione della do- manda di ricostruzione di carriera e riprendono quanto già messo in atto nella richiesta di certificato di servizio.

Il tipo associato all’evento iniziale, ossia psw:avviaDRC, ricalca essenzialmente psw: avviaRichiestaCSper quanto riguarda l’indicazione di un gruppo per l’assegnamento del compito successivo. Inseriamo l’aspettopsw:allegabile, in quanto i documenti che esso as- socia sono necessari per avviare il flusso di lavoro. L’aspettopsw:allegabilesarà applicato a tutti i tipi definiti per questo flusso di lavoro, fatta eccezione per le notifiche di approvazio- ne e rifiuto della domanda di ricostruzione di carriera (psw:activitiNotificaApprovazioneDRC

e psw:activitiNotificaRifiutoDRC). Queste, infatti, sono dirette a colui che ha avviato la pratica e che è quindi anche l’autore dei documenti in esame. I tipi associati a questi compiti assumono la forma:

< t y p e n a me =" psw : a c t i v i t i N o t i f i c a A p p r o v a z i o n e D R C " > < parent > bpm : w o r k f l o w T a s k </ parent > < o v e r r i d e s > < p r o p e r t y n a m e =" bpm : p a c k a g e I t e m A c t i o n G r o u p " > < default > r e a d _ p a c k a g e _ i t e m _ a c t i o n s </ default > </ p r o p e r t y > </ o v e r r i d e s > </ type >

Il tipo associato all’attività di inserimento del numero di protocollo nella domanda di ricostruzione di carriera e nell’autocertificazione dei servizi (psw:activitiProtocollaDRC) deve gestire questi dati. Definiamo due proprietà testuali relative:

< p r o p e r t i e s >

< p r o p e r t y n a m e =" psw : n u m P r o t D R C " > < type > d : text </ type >

< default > </ default > </ p r o p e r t y >

< p r o p e r t y n a m e =" psw : n u m P r o t A S " > < type > d : text </ type >

< default > </ default > </ p r o p e r t y >

</ p r o p e r t i e s >

Il flusso di lavoro comprende due attività di verifica e approvazione, quindi di scelta bi- naria da parte dell’assegnatario. I dati associati a tali compiti sono descritti dai tipi

psw:activitiVerificaAS e psw:activitiApprovaDRC, che strutturiamo sul modello di psw :activitiValutaCS e psw:activitiRevisionaCS. In questi tipi includiamo l’aspetto psw: allegabilee, in psw:activitiVerificaAS, il dato per memorizzare l’assegnamento al diri-

6.4. IMPLEMENTAZIONE DEI FLUSSI DI LAVORO 55

Attività Assegnamento Ruolo

startevent1 Richiedente creaCSS ${bpm_groupAssignee.- properties.authorityName} DSGA valutaCSS ${bpm_assignee.properties.user- Name} Dirigente scolastico revisionaCSS ${bpm_groupAssignee.- properties.authorityName} DSGA notificaApprovazioneS ${initiator.properties.userName} Richiedente notificaRifiutoS ${initiator.properties.userName} Richiedente Tabella 6.4: Assegnamenti della richiesta di certificato di servizio

gente scolastico del compito successivo, che realizziamo applicando l’aspetto obbligatorio

bpm:assignee.

L’attività di notifica di una nuova presentazione di domanda di carriera è rappresentata da un tipo (psw:activitiNotificaNuovaDRC) che contiene i riferimenti ai diversi documenti allegati, realizzato inserendo l’aspettopsw:allegabile.

Con la creazione dei tipi di dato necessari possiamo estendere i diagrammi Activiti precedentemente definiti, così da abilitare le diverse funzionalità associate ai compiti.

Nella richiesta di certificato di servizio la richiesta di creazione di un nuovo certificato di servizio (corrispondente all’attività creaCSS) deve essere ricevuta dalla segreteria della scuola a cui è inviata, affinché il DSGA (o un suo eventuale sostituto) ne prenda carico. La selezione della scuola avviene al momento dell’avvio del processo di lavoro da parte del docente o dell’ATA e viene memorizzata nell’aspetto bpm:groupAssignee. Per assegnare

creaCSS al gruppo indicato richiamiamo il valore della proprietà userName definita per il

tipobpm:groupAssignee, estendendo il tag iniziale del compito come segue:

< u s e r T a s k id =" c r e a C S S " n a m e =" C r e a C e r t i f i c a t o di S e r v i z i o " a c t i v i t i : c a n d i d a t e G r o u p s =" $ { b p m _ g r o u p A s s i g n e e . p r o p e r t i e s . a u t h o r i t y N a m e }"

a c t i v i t i : f o r m K e y =" psw : a c t i v i t i C r e a C S S e m p l i c e " >

La lista completa degli assegnamenti per questo flusso di lavoro è presente nella Tabella 6.4. Per far sì che Alfresco memorizzi i dati inseriti dall’utente una volta che il compito è stato eseguito, integriamo un frammento di codice Javascript che prende le variabili e le inizializza con il valore che hanno assunto localmente. Questo procedimento viene eseguito sia per il certificato di servizio che per l’assegnatario del compito successivo:

< e x t e n s i o n E l e m e n t s > < a c t i v i t i : t a s k L i s t e n e r e v e n t =" c o m p l e t e " c l a s s =" org . a l f r e s c o . r e p o . w o r k f l o w . a c t i v i t i . t a s k l i s t e n e r . S c r i p t T a s k L i s t e n e r " > < a c t i v i t i : f i e l d n a m e =" s c r i p t " > < a c t i v i t i : string > <![ C D A T A [ e x e c u t i o n . s e t V a r i a b l e ( ’ b p m _ a s s i g n e e ’ , t a s k . g e t V a r i a b l e L o c a l ( ’ b p m _ a s s i g n e e ’) ) ; e x e c u t i o n . s e t V a r i a b l e ( ’ p s w _ n u o v o C S ’ , t a s k . g e t V a r i a b l e L o c a l ( ’ p s w _ n u o v o C S ’) ) ;]] > </ a c t i v i t i : string >

56 CAPITOLO 6. LA PIATTAFORMA SOFTWARE

</ a c t i v i t i : field > </ a c t i v i t i : t a s k L i s t e n e r > </ e x t e n s i o n E l e m e n t s >

Il compito valutaCSS richiede al dirigente scolastico di approvare (o meno) il certificato di servizio prodotto. Quando il compito è eseguito, la piattaforma deve valutare il valore assunto dapsw:esitoValutazioneCSe inizializzare di conseguenza la variabilepsw:prosegui:

<![ C D A T A [ if ( ta s k . g e t V a r i a b l e L o c a l ( ’ p s w _ e s i t o V a l u t a z i o n e C S ’) == ’ A p p r o v a t o ’) { e x e c u t i o n . s e t V a r i a b l e ( ’ p s w _ p r o s e g u i ’ , t r u e ) ; var n o m e U t e n t e = i n i t i a t o r . p r o p e r t i e s [" cm : u s e r N a m e "]; var d e s t = c o m p a n y h o m e . c h i l d B y N a m e P a t h ("/ H o m e p a g e dell ’ u t e n t e /"+ n o m e U t e n t e ) ; p s w _ n u o v o C S . m o v e ( d e s t ) ; } e l s e { e x e c u t i o n . s e t V a r i a b l e ( ’ p s w _ p r o s e g u i ’ , f a l s e ) ; }]] >

In caso di valutazione positiva del certificato di servizio, il file relativo viene spostato nella cartella personale del richiedente, sfruttando una funzione messa a disposizione dalla libreria di Javascript (psw_nuovoCS.move(dest)). Per evitare che si creino problemi di permessi quando si sposta il file, utilizziamo il campo (field ) runAS e lo impostiamo su admin, ossia sul ruolo che detiene tutti i permessi.

< a c t i v i t i : f i e l d n a m e =" r u n A s " >

< a c t i v i t i : string > <![ C D A T A [ a d m i n ]] > </ a c t i v i t i : string > </ a c t i v i t i : field >

La variabilepsw:proseguiviene utilizzata dalla piattaforma come condizione per decidere quale sequenza di flusso seguire dopo la porta esclusiva. In questo caso estendiamo il tag della sequenza di flusso corrispondente, utilizzando la dicitura propria delle variabili XML:

< c o n d i t i o n E x p r e s s i o n xsi : t y p e =" t F o r m a l E x p r e s s i o n " > <![ C D A T A [ $ { p s w _ p r o s e g u i == f a l s e }]] > </ c o n d i t i o n E x p r e s s i o n >

Strutturiamo l’attività di valutazionerevisionaCSS e le sequenze di flusso derivanti come nel precedente esempio, senza implementare nessuna attività di spostamento dei documenti (in quanto non prevista).

Il workflow relativo alla presentazione di domanda di ricostruzione di carriera utilizza gli stessi meccanismi visti per la richiesta di certificato di servizio. Lo schema degli asse- gnamenti dei diversi compiti può essere visto nella Tabella 6.5. All’avvio del processo di lavoro i documenti devono essere spostati dallo spazio di lavoro del richiedente a quello della scuola a cui presenta la domanda. Inseriamo l’estensione Javascript relativa nella sequenza di flusso che porta al compito successivo, utilizzando nuovamente la funzione

move()ma con controlli specifici sulla variabilepsw:docAllegatiin quanto questa può non essere definita o contenere un numero variabile di elementi:

6.4. IMPLEMENTAZIONE DEI FLUSSI DI LAVORO 57

Attività Assegnamento Ruolo

startevent1 Richiedente protocollaDRC ${bpm_groupAssignee.- properties.authorityName} Responsabile del protocollo verificaAS ${bpm_groupAssignee.- properties.authorityName} DSGA approvaDRC ${bpm_assignee.properties.- userName} Dirigente scolastico notificaNuovaDRC GROUP_RdS Ragionerie dello Sta-

to

notificaInvioDRC ${initiator.properties.userName} Richiedente notificaRifiutoDRC ${initiator.properties.userName} Richiedente

Tabella 6.5: Assegnamenti della presentazione di domanda di ricostruzione di carriera

var g r u p p o = b p m _ g r o u p A s s i g n e e . p r o p e r t i e s [" cm : a u t h o r i t y N a m e "]; var d e s t = c o m p a n y h o m e . c h i l d B y N a m e P a t h ("/ C o n d i v i s o /"+ g r u p p o ) ; p s w _ d o c D R C . m o v e ( d e s t ) ; p s w _ d o c A S . m o v e ( d e s t ) ; if ( t y p e o f p s w _ d o c A l l e g a t i != " u n d e f i n e d ") { var d o c A l l e g a t i S i z e = p s w _ d o c A l l e g a t i . s i z e () ; for ( var i =0; i < d o c A l l e g a t i S i z e ; i ++) { p s w _ d o c A l l e g a t i . get ( i ) . mo v e ( d e s t ) ; } }

Il comando condizionale si occupa di controllare che l’oggetto (la variabile corrisponde alla classe Java “org.alfresco.repo.workflow.activiti.ActivitiScriptNodeList”) sia definito e solo in quel caso consente uno scorrimento per spostare tutti i documenti memorizzati nella cartella di destinazione.

Il compito protocollaDRC gestisce l’assegnamento del numero di protocollo all’aspet- to psw:protocollabile dei documenti8. Il numero di protocollo viene inserito dall’utente attraverso il form dell’attività. Utilizzando Javascript, abilitiamo la piattaforma a leg- gere i valori delle variabili locali relative e a utilizzarli per inizializzare la proprietà psc: nProtocollodei diversi documenti. I file così modificati necessitano poi di un salvataggio per non perdere l’informazione appena attribuita.

var p r o t D R C = t a s k . g e t V a r i a b l e L o c a l ( ’ p s w _ n u m P r o t D R C ’) ; var p r o t A S = t a s k . g e t V a r i a b l e L o c a l ( ’ p s w _ n u m P r o t A S ’) ; p s w _ d o c D R C . p r o p e r t i e s [" psc : n P r o t o c o l l o "] = p r o t D R C ; p s w _ d o c A S . p r o p e r t i e s [" psc : n P r o t o c o l l o "] = p r o t A S ; p s w _ d o c D R C . s a v e () ; p s w _ d o c A S . s a v e () ;

Il codice aggiunto alle attività che prevedono una scelta (verificaAS e approvaDRC) e le sequenze di flusso relative sono strutturate secondo il modello di valutaCSS. Quando la

58 CAPITOLO 6. LA PIATTAFORMA SOFTWARE domanda di ricostruzione di carriera è approvata da parte del dirigente scolastico, si ha un invio dei documenti alle Ragionerie dello Stato, quindi è necessario utilizzare le accortezze viste perpsw:docAllegati.

I moduli/form relativi ai diversi compiti dei flussi di lavoro sono descritti nello stesso file “share-config-custom.xml” utilizzato per le schede dei contenuti personalizzati. Inseria- mo tante configurazioni quanti sono i form associati ai diversi compiti, oltre ad ulteriori configurazioni per l’avvio in generale del singolo flusso di lavoro.

Gli attributi evaluator dei tag <config> sono impostati a string-compare quando il form è relativo alla procedura in generale:

< c o n f i g e v a l u a t o r =" string - c o m p a r e " c o n d i t i o n =" a c t i v i t i $ r i c h i e d i C S S e m p l i c e " >

Sono invece impostati atask-type quando si richiama l’identificativo del tipo definito nel modello “psWorkflow.xml”, come per esempio:

< c o n f i g e v a l u a t o r =" task - t y p e " c o n d i t i o n =" psw : a v v i a R i c h i e s t a C S " >

La configurazione del modulo iniziale, sia esso richiamato nella forma generale o in quella dell’identificativo associato allostartEvent, è la stessa.

Per vedere come sono implementati i diversi tipi di componenti personalizzati, consi- deriamo l’elemento<config>relativo a psw:activitiVerificaAS9:

< c o n f i g e v a l u a t o r =" task - t y p e " c o n d i t i o n =" psw : a c t i v i t i V e r i f i c a A S " > < forms > < form > < field - v i s i b i l i t y > < s h o w id =" bpm : w o r k f l o w D e s c r i p t i o n "/ > < s h o w id =" bpm : a s s i g n e e "/ > < s h o w id =" psw : d o c D R C "/ > < s h o w id =" psw : d o c A S "/ > < s h o w id =" psw : d o c A l l e g a t i "/ > < s h o w id =" psw : e s i t o V e r i f i c a A S "/ > < s h o w id =" t r a n s i t i o n s "/ > </ field - v i s i b i l i t y > < a p p e a r a n c e >

< set id ="" a p p e a r a n c e =" t i t l e " label - id =" w o r k f l o w . set . g e n e r a l " / >

< set id =" i n f o " a p p e a r a n c e ="" t e m p l a t e ="/ org / a l f r e s c o / c o m p o n e n t s / f o r m /2 - column - set . ftl " / >

< set id =" a s s i g n e e " a p p e a r a n c e =" t i t l e " label - id =" w o r k f l o w . set . a s s i g n e e " / >

< set id =" i t e m s " a p p e a r a n c e =" t i t l e " label - id =" w o r k f l o w . set . i t e m s " / >

< set id =" p r o g r e s s " a p p e a r a n c e =" t i t l e " label - id =" w o r k f l o w . set . t a s k . p r o g r e s s " / >

< set id =" r e s p o n s e " a p p e a r a n c e =" t i t l e " label - id =" w o r k f l o w . set . r e s p o n s e " / >

6.4. IMPLEMENTAZIONE DEI FLUSSI DI LAVORO 59

< f i e l d id =" bpm : w o r k f l o w D e s c r i p t i o n " label - id =" w o r k f l o w . f i e l d . m e s s a g e " >

< c o n t r o l t e m p l a t e ="/ org / a l f r e s c o / c o m p o n e n t s / f o r m / c o n t r o l s / t e x t a r e a . ftl " >

< control - p a r a m n a m e =" s t y l e " > w i d t h : 95% </ control - param > </ control > </ field > < f i e l d id =" bpm : a s s i g n e e " label - id =" w o r k f l o w . f i e l d . a s s i g n _ t o " set =" a s s i g n e e " / > < f i e l d id =" psw : d o c D R C " set =" i t e m s "/ > < f i e l d id =" psw : d o c A S " set =" i t e m s "/ > < f i e l d id =" psw : d o c A l l e g a t i " set =" i t e m s "/ > < f i e l d id =" psw : e s i t o V e r i f i c a A S " set =" r e s p o n s e " / > < f i e l d id =" t r a n s i t i o n s " set =" r e s p o n s e " / > < f i e l d id =" bpm : s t a t u s " set =" p r o g r e s s " / > </ a p p e a r a n c e > </ form > </ forms > </ config >

Gli assegnamenti (l’esempio vale anche per gli assegnamenti ai gruppi, dove cambia unica- mente l’id che diventabpm:groupAssignee) richiamano l’etichetta (workflow.field.assign_to

) e l’impostazione (set="assignee") date di default da Alfresco. Le associazioni ai docu-

menti definiti per Portale Scuola sono descritte nei moduli utilizzando le istruzioni che la piattaforma usa per gestire l’associazione di base a contenuti generici. Infine, anche le opzioni di scelta (in questo casopsw:esitoVerificaAS) sono realizzate utilizzando il codice

fornito al medesimo scopo dal programma.

Mancano in questo esempio i campi di testo con cui si permette l’inserimento dei numeri di protocollo. Abbiamo realizzato i campi di testo imponendo come unico controllo un numero massimo di caratteri, inserito all’interno del tag<field>:

< f i e l d id =" psw : n u m P r o t D R C " > < control >

< control - p a r a m n a m e =" m a x L e n g t h " >200 </ control - param > </ control >

Capitolo 7

Il supporto tecnologico

Il capitolo affronta gli aspetti tecnologici del progetto. Vengono presentati gli strumenti informatici utilizzati per la personalizzazione della piattaforma e le loro modalità di instal- lazione. Affrontiamo poi gli ultimi interventi necessari per rendere operativi i file di codice descritti nel capitolo 6 e la successiva configurazione della piattaforma. La sezione finale è dedicata alla descrizione di alcune prove d’uso del sistema di supporto completato.

7.1

Installazione dei software necessari

La realizzazione della piattaforma di supporto richiede l’installazione di una serie di stru- menti informatici. Questi comprendono sia l’applicazione di Alfresco, che una serie di programmi che semplificano la creazione di estensioni personalizzate della stessa.

Il sito di Alfresco propone una lista di pre-requisiti ben precisa, tuttavia le distribuzioni1 messe a disposizione dall’azienda comprendono i principali software richiesti dall’applica- zione2. Sono infatti inclusi un server Tomcat, un database PostgreSQL, Java Runtime Environment (JRE) e LibreOffice. Rimane quindi da istallare il Java Development Kit (per la versione più recente di Alfresco Community Edition si richiede JDK 8) per poter programmare in Java.

Per la realizzazione del progetto abbiamo utilizzato un computer con sistema operati- vo OS X El Capitan3 e abbiamo installato su questo Java (versione 1.8.0_25) e Alfresco Community Edition (versione 5.1). L’applicazione può già essere avviata nella sua versio- ne base, è sufficiente avviare PostgreSQL e Tomcat, utilizzando l’“Application Manager” fornito con Alfresco, per poi connettersi da browser a Alfresco Share (http://localhost: 8081/share). Le credenziali di accesso sono “admin” e la password indicata al momento dell’installazione.

L’altro software selezionato per creare il sistema di supporto è Activiti. Lo strumento completo è scaricabile dal sito ufficiale4, tuttavia per gli scopi di questa tesi siamo inte- ressati unicamente all’Activiti Designer, ossia il plugin per l’IDE Eclipse. L’ambiente di

1

Per Linux, Windows e Mac.

2

La documentazione relativa all’installazione è disponibile su http://docs.alfresco.com/community/ concepts/simpleinstalls-community-intro.html.

3

MacBook Air con OS X El Capitan, versione 10.11.6.

4https://www.activiti.org/

62 CAPITOLO 7. IL SUPPORTO TECNOLOGICO sviluppo Eclipse può essere installato scaricando il file di installazione dal sito ufficiale5 e

ha come pre-requisito la presenza di Java SE runtime (che viene comunque richiesta al- l’avvio dell’interfaccia). L’installazione di plugin su Eclipse è immediata e Activiti fornisce [4] una guida dei passi da seguire6. Il plugin può quindi essere immediatamente utilizzato

per la modellazione. Per la piattaforma di supporto utilizzeremo Eclipse Standard/SDK versione Luna Service Release 2 (4.4.2) e Activiti Eclipse BPMN 2.0 Designer 5.18.

La creazione di estensioni di Alfresco Community Edition prevede la realizzazione di interi moduli dedicati alla gestione delle diverse caratteristiche. Tali moduli hanno co- me forma consigliata [6] quella di file AMP (Alfresco Module Package), archivi ZIP che seguono particolari convenzioni, che rendono le personalizzazioni della piattaforma facili da condividere e installare [44]. Il metodo più semplice per produrre i file AMP prevede l’utilizzo di Apache Maven. Si tratta essenzialmente di uno strumento di gestione per la costruzione di software, in particolare si occupa di gestire le dipendenze di un progetto, recuperandole e memorizzandole nella cache.

L’installazione di Maven prevede lo scaricamento del file compresso relativo7 e la sua configurazione direttamente da terminale secondo le istruzioni date nella documentazione8. Questo strumento verrà utilizzato in combinazione con Eclipse per la creazione dei moduli di estensione della piattaforma. Una simile collaborazione è semplificata dalla disponibilità di un plugin di Maven per Eclipse, M2e, che permette di creare o importare i progetti Maven all’interno dell’IDE, semplificando anche le operazioni di modifica dei documenti di codice. Il plugin è disponibile nella lista dei software che possono essere aggiunti a Eclipse9.

Documenti correlati