Salve,
questo post ha lo scopo di chiarire se il Windows Workflow Foundation è adattto allo sviluppo di un'applicazione basata su un modello di workflow esposto qui di seguito. Il principale dubbio deriva dal fatto che tutti gli esempi che ho visto sono sempre fatti in termini di applicazioni standalone, a console o con interfaccia grafica, in cui le attività sembrano essere delle porzioni di codice (metodi) eseguite al momento opportuno in base agli eventi che arrivano e in base alla sequenza stabilita. Lo scenario che ho in mente io è invece web-oriented, con una o più applicazioni web che permettono di svolgere delle attività, che devono essere gestite secondo uno specifico workflow. Quello che mi riesce più difficile da capire è proprio come si cala il WWF in un contesto web, che peraltro dovrebbe essere il contesto naturale per questo tipo di applicazioni. Se in un'applicazione standalone quando l'utente digita dei dati nella console viene eseguito un certo metodo associato a quell'evento, in un contesto web le cose sono diverse. Le azioni degli utenti arrivano come richieste http e l'attività da eseguire possono essere espletate tramite applicazioni web.
Andando più nel dettaglio,la mia applicazione deve essere in grado di gestire delle richieste che vengono avanzate presso un'amministrazione, gestendo il flusso delle attività; quindi uno scenario comune è ad esempio questo:
- un utente apre una richiesta
- un operatore verifica alcuni requisiti formali, se la richiesta è a posto prosegue nel suo iter, altrimenti è rifiutata
- un supervisore esamina la richiesta e nomina uno o più operatori incaricati che dovranno esaminare la richiesta
- la richiesta passa attraverso una serie di valutazioni, ad esempio una valutazione tecnica, una valutazione economica, una valutazione di fattibilità. Ciascuna fase di valutazione è eseguita da uno o più operatori addetti, ed alcune fasi di valutazione possono essere eseguite in parallelo
- ad ogni fase un operatore può richiedere ulteriori informazioni all'utente che ha presentato la richiesta o all'operatore che ha operato prima di lui
- alla fine in base alle valutazioni effettuate il supervisore accetta o meno la richiesta.
Come si vede c'è una specifica fortemente orientata al flusso delle operazioni. Le attività singole sono più o meno sempre le stesse, ma il sistema deve essere in grado di gestire procedure e iter diversi a seconda del tipo delle richieste avanzate, quindi è utile poter rappresentare il flusso delle operazioni da seguire con file di configurazione per ogni tipo di procedura. Ciò che il motore di worklow dovrebbe essere in grado di fare nel mio caso é seguire l'avanzamento delle richieste e presentare ad un utente del sistema la lista delle operazioni sospese che può eseguire. Ad esempio, per un operatore che è stato assegnato ad una certa richiesta per la valutazione economica deve esserci nel menu delle attività pendenti questa voce. Quando l'operatore clicca su quella voce esegue l'attività corrispondente, magari utilizzando un'apposita applicazione web, e quando ha finito la sua valutazione l'applicazione comunica al motore che l'attività in questione è terminata. Da quel momento quell'attività scompare dalla lista delle attività in sospeso per l'operatore e magari compare presso uno o più operatori che dovranno eseguire la valutazione successiva. Questo modello di workflow si rifà a quello definito dalla Workflow Management Coalition (http://www.wfmc.org/) e utilizzato da vari motori di workflow, tra cui OpenWFE (http://www.openwfe.org).
Oltre al parere in merito all'utilizzo di WWF per questo scenario, vorrei sapere come il WWF si cala in un contesto web, in che modo sono rappresentate le attività in questo caso e come interagisce con le altre applicazioni.
Grazie e ciao.