Inizio questo nuovo progetto quest'estate, consistente nello sviluppo di una versione web di un ERP desktop proprietario.
L'obiettivo principale della mia azienda è essere in grado di proporre una versione web del proprio ERP, con tutti i vantaggi che comporta (mobilità, possibilità di vendere versioni SaaS, aspetto moderno e componenti ...), senza perdere qualsiasi funzione aziendale . Con questo, voglio dire che noi sviluppatori non rielaboriamo il lato commerciale dell'app. L'obiettivo principale è quello di essere in grado di tradurre gli stessi processi in applicazioni web.
Il livello aziendale della versione precedente non è direttamente riutilizzabile, dal momento che è realmente dipendente dalla GUI. Questi processi di business sono stati riscritti come diagrammi UML, che saranno utilizzati come supporto per noi per sviluppare la nuova app.
Il problema che incontro è che non so come gestire i processi che richiedono interazioni con l'utente. Ad esempio:
In caso di convalida di un ordine di vendita, il processo di convalida controlla tutti i prodotti in esso contenuti, verificando se sono disponibili scorte e quindi eseguendo diverse operazioni. Se non ci sono scorte disponibili, all'utente viene chiesto se desidera annullare l'ordine, rimuovere questo prodotto o selezionarne un altro equivalente. Funziona come un Javascript alert
o confirm
: l'attuale "thread" (cioè processo di validazione) è in attesa, in attesa dell'interazione dell'utente. Dopo la scelta dell'utente, termina la gestione del prodotto corrente, quindi convalida il successivo e così via.
Come gestire questo tipo di processi con un'applicazione web? C'è qualche struttura, modello di progettazione o qualcos'altro che permetta di scrivere questo tipo di processi di business, in grado di iniziare e mantenere così?
Una soluzione potrebbe essere quella di dividere quei processi aziendali in quelli più piccoli. Per il mio esempio, avremmo 2 sottoprocessi: il primo controlla tutti i prodotti e contrassegna quelli problematici. Quindi l'utente ha una schermata per decidere cosa fare sui prodotti contrassegnati e convalidare. Al momento siamo sicuri che tutti i prodotti sono OK, possiamo avviare il secondo processo secondario per eseguire le altre operazioni.
Il problema è che anche se è piuttosto semplice in questo esempio, può essere molto più complicato. Alcuni processi hanno molte interazioni con gli utenti come questo, e quindi potrebbero essere suddivisi in 10 sottoparti. Come prima ho precisato, non vogliamo modificare o ripensare il processo aziendale, per essere sicuri di non perdere nulla o introdurre nuovi bug aziendali.
Qualcuno ha un'esperienza a riguardo? Conosci qualche modo per gestire questo tipo di sviluppo da desktop a web?
EDIT 15/07/14
C'è stato un malinteso su questo post, sicuramente legato alla mia scarsa espressione e vocabolario inglese.
Per riepilogare il problema:
Ho ottenuto un sacco di flussi di lavoro aziendali descritti nei diagrammi UML. Provengono da un enorme CAMM di 30 anni (ERP di gestione della produzione). Il progetto è di riqualificare questa applicazione in ambiente web Java . Il punto principale è che alcuni di questi flussi di lavoro sono dipendenti dall'utente, poiché, nel mezzo dell'elaborazione, hanno bisogno di un'interazione dell'utente. Poiché le applicazioni Web si basano su un'architettura client-server, non so come portarle. Rielaborare / ripensare questi flussi di lavoro non è un'opzione, perché richiederebbe troppo tempo. Ho bisogno di un modo per simulare un'applicazione desktop su un'app web, come Wt , ma per Java (non sto parlando di UI ma su come sviluppare i flussi di lavoro) o per definire regole per rendere compatibili i flussi di lavoro dipendenti dall'utente.