Sheet: ProcessWorkFlow

 

Wikipedia

La teoria e le applicazioni del workflow management promuovono la gestione dei gruppi di lavoro collaborativi secondo il workflow model, modello processuale. Un processo consiste in una o più attività ognuna delle quali rappresenta un lavoro da svolgere per giungere a un obiettivo comune. Il workflow management sostiene l'organizzazione del processo di lavoro mediante l'utilizzo di software specifici. Le attività possono essere svolte dai partecipanti o da applicazioni informatiche. I sistemi software che sanno interpretare una serie di regole procedurali integrano diverse funzioni: utilizzano strumenti dell'Information technology per la condivisione dell'informazione e gestiscono la comunicazione e il passaggio di compiti da un collaboratore all'altro e sono dunque chiamati Workflow management systems.

 

Entità in gioco

In questo modello prendiamo in esame le entità:

Processo

E' un insieme organizzato di attività che devono essere completate ed approvate per raggiungere l' obiettivo proprio del processo: se pensiamo ad una struttura gerarchica, il padre della struttura è il processo, i nodi sono le attività e le foglie i ruoli/attori che ne definiscono il completamento/approvazione. Possiamo prevedere di gestire le info seguenti:

  • Identificativo: serve ad identificare univocamente il singola processo;
  • Descrizione: descrive il processo identificandolo nell' ambito in cui viene preso in considerazione;
  • Data inizio: data in cui può è iniziato;
  • Data fine: data in cui è da ritenersi completato;
  • Stato: stato in cui si trova. Valori possibili: Wait(non ancora avviato), InProgress (in corso), Completed (completato), Cancelled (annullato).

 

Attività

Lavori che devono essere realizzati e completati per raggiungere un determinato obiettivo. Di massima possiamo prevedere di gestire per ogni singola attività le info seguenti:

  • Identificativo: serve ad identificare univocamente la singola attività;
  • Descrizione: descrive l' attività identificandola nell' ambito in cui viene presa in considerazione;
  • Data inizio: data in cui può iniziare o è iniziata;
  • Data fine: data entro la quale si prevede di completarla o in cui è da ritenersi completata;
  • Assegnata a Ruolo/Attore: se viene assegnata ad un Ruolo oppure ad un Attore;
  • ID Ruolo/Attore: ID del Ruolo o dell' Attore assegnatario;
  • Stato: stato in cui si trova. Valori possibili: Wait(non ancora avviata), InProgress (in corso), Completed (completata), Approved (approvata), Cancelled(annullata).

Ogni singola attività viene attivata a fronte di determinati eventi, segue una sua evoluzione fino a quando non viene completata e termina il suo ciclo quando approvata o non approvata.

A titolo di esempio possiamo pensare all' attività Configurazione in ambito CPQ:

  • Wait: la configurazione è stata creata, ma ancora non abbiamo iniziato ad operarci;
  • InProgress: il processo di configurazione è iniziato e sta evolvendo;
  • Completed: il processo di configurazione è stato completato;
  • Approved: configurazione approvata per cui si può procedere con la stampa dell' Offerta, ....
  • Cancelled: configurazione non approvata, o si riparte o si crea una nuova attività di configurazione;

 

Ruoli

Classificazione degli attori. Da intendersi come mansione o area di competenza o area di lavoro propria degli attori. Ad es. in ambito Aziendale possiamo pensare a ruoli come 

Segreteria Commerciale, Amministrazione, Ufficio Tecnico, ...

Possiamo prevedere di gestire le info seguenti:

  • Identificativo: serve ad identificare univocamente il ruolo;
  • Descrizione: descrive il ruolo identificandolo nell' ambito in cui viene preso in considerazione;

 

Attori

Risorse chiamate in causa per l' evoluzione del processo: nell' ambito dell' WorkFlow sono quelli che decretano i vari passaggi di stato delle attività fino al completamento del processo stesso.

Di fatto sono gli utenti del Sistema: nell' ambito di questo modello non vengono definiti con una loro Anagrafica come per le Attività o i Ruoli ma riportati su di un elemnto list che deve essere mantenuto aggiornato manualmente.

Possiamo prevedere di gestire le info seguenti:

  • Identificativo: serve ad identificare univocamente l' attore;
  • Descrizione: descrive l' attore identificandolo nell' ambito in cui viene preso in considerazione; 

 

Gestione Anagrafica delle Entità

Per ogni singola entità viene costruito un frame che ne consente la gestione Anagrafica.

PWF_AnagraficaAttivita

Elemento list che definisce l' Anagrafica dell' Attività

PG-PDE_PWF_AnagraficaAttivita

Frame per la gestione dell' Anagrafica dell' Attività: tutti gli oggetti presenti sul Frame sono definiti sul Sheet in oggetto.

La singola Attività può essere creata/gestita utilizzando questo Frame (gestione manuale) oppure essere creata/gestita attraverso applicazioni trasversali (ad es. Erp o CRM, ...).

PWF_AnagraficaRuoliElemento list che definisce l' Anagrafica dei Ruoli
PWF_MngRuoliFrameFrame per la gestione dell' Anagrafica dei Ruoli: tutti gli oggetti presenti sul Frame sono definiti sul Sheet in oggetto.
PWF_RelRuoliAttoriElemento list utile x definire la relazione tra i Ruoli e gli Attori (utenti)
PWF_AnagraficaAttoriElemento list che definisce l' Anagrafica degli Attori
  

 

Sono interessanti le DR come la PWF_R_ErrorIfRuoloIsAlreadyDefined che consentono di verificare l' univocità dell' Identificativo: queste regole scattano quando si modifica l' identificativo in fase di creazione o aggiornamento di una Anagrafica.

PWF_R_ErrorIfRuoloIsAlreadyDefined
Se il Ruolo che si vuole inserire è già definito, viene segnalato errore

 

 

GU_SqlWhereTmpl
Node type: Assign
Assign value to / type: GU_SqlWhereTmpl / String
Description (GU_SqlWhereTmpl) : Stringa contenente il template utile per costruire la Where Sql utilizzata per leggere da DB-SQL
Value assigned: PWF_AR_Identificativo = '{PWF_AR_Identificativo}'

 

GU_CompileWhereSql
Node type: Method
Procedure name: BBP_ElaborateString
Description: Compila l where sql da utilizzare in lettura su DB-SQL
Param name / type / value: whereSqlTempl / String / GU_SqlWhereTmpl
Param name / type / value: whereSql / String / GU_SqlWhere

 

PWF_R_RuoloAlreadyDefined
Node type: Method
Procedure name: BBP_VerifyIfWhereFoundEntries
Description: Ritorna TRUE se il Ruolo è già definito
Param name / type / value: sqlWhere / String / GU_SqlWhere
Param name / type / value: [Output] / Boolean / StatusOfCall
Param name / type / value: sqlTabName / String / PWF_AnagraficaRuoli

 

StatusOfCall
Node type: Element
Element name / type: StatusOfCall / Boolean
Description: Stato di ritorno dalle chiamate SQL

 

GU_ContainerEPname
Node type: Assign
Assign value to / type: GU_ContainerEPname / String
Description (GU_ContainerEPname) : Contiene il nome della EP con cui operare
Value assigned: Frame_Ruoli

 

PWF_R_ClearFrameRuoliElements
Node type: Method
Procedure name: BBP_ClearElementsOfPage
Description: Azzera gli elementi del Frame Ruoli
Param name / type / value: containerExtraProperty / String / GU_ContainerEPname

 

GU_MessageText
Node type: Assign
Assign value to / type: GU_MessageText / String
Description (GU_MessageText) : Testo del messaggio
Value assigned: Ruolo già definito in Anagrafica !

 

GU_ViewWarningMessage
Node type: Method
Procedure name: ViewMessage
Description: Visualizza un messaggio di avvertimento/errore
Param name / type / value: messageName / String / GU_WarningMessage
Param name / type / value: messageText / String / GU_MessageText

 

 

WorkFlow della singola Attività

Possiamo ipotizzare che una Attività abbia un percorso di vita legato allo stato:

Wait: l' attività è stata creata e rimane in attesa di inziare il proprio percorso;

InProgress: si da inizio allo sviluppo dell' attività che comincia così il suo percorso;

Completed: l' attività è stata completata;

Approved: l' attività è stata approvata. Ha concluso con successo il proprio percorso;

Cancelled: l' attività è stata interrotta prima di concludere il proprio percorso;

 

Ci limitiamo ad un Work Flow molto semplice:

1- Quando si crea l' attività la si pone in stato Wait e la si assegna ad un attore (può essere un attore singolo o appartenere ad un ruolo);

2- L' assegnatario setta lo stato dell' attività al valore InProgress quando decide che l' attività deve partire: ci si avvale di una semplice funzione di consultazione;

3- Basta un semplice vincolo per definire chi ha i permessi per settare gli stati CompletedApproved o Cancelled;

 

Gli oggetti interessati dal vincolo sono:

  • PWF_AnagraficaAttivita.PWF_AA_Stato: identifica lo stato dell' attività;
  • PWF_AnagraficaAttori: identifica l' Attore che può incidere sullo stato dell' attività;

Vincolo su Attività / Attori:

 

 

Questo vincolo di fatto serve per definire su quali attività può operare l' Attore in funzione dello stato.

Per statiblire quale può essere il prossimo stato che l' attività può assumere, ci possiamo avvalere del vincolo che segue: