C'è solo un vero vantaggio, ma è enorme: la
separazione delle preoccupazioni .
Quindi, invece di integrare la logica di orchestrazione del processo nel nostro sistema, diventa una configurazione esterna. Una mappa, in sostanza. Puoi cambiarlo (molto di più) in modo indipendente, puoi avere più processi, più versioni di processi, più versioni di più processi in esecuzione allo stesso tempo, e tutto è pronto all'uso in qualsiasi soluzione decente.
Storicamente, il concetto di SoC ha vinto molte volte - a partire dal principio Unix "fai una cosa, ma fai del bene", e applicato ripetutamente - come avere componenti server dedicati come ESB, diversi sistemi di persistenza, memorizzazione nella cache, bilanciamento del carico , monitoraggio, come la divisione di CSS da HTML, ecc.
Il processo aziendale e le sue regole di flusso sono spesso ortogonali ai dati, alle "schermate" dell'interfaccia utente o alla "gerarchia" degli utenti. Quindi, ha perfettamente senso svilupparlo e cambiarlo separatamente dagli altri aspetti del sistema. Questa era la premessa su cui BPM è apparso nei primi anni '90.
Da allora, molti strumenti e linguaggi sono stati creati per supportare questo concetto, con il più noto BPMN , un linguaggio grafico per la creazione di "diagrammi di flusso" che si associano direttamente ai processi. Mentre le persone si lamentano del fatto che è grande e ingombrante (con oltre 100 simboli nel vocabolario) e che sostiene approcci moderni come S-BPM (ha solo 5 simboli di base), l'attuale pratica industriale è quella di attenersi a BPMN o ai suoi derivati, sottoinsiemi o fratelli.
Non sembri soddisfatto di BPMN:
I programmatori qui sembrano svolgere una notevole quantità di lavoro nel livello di linee e caselle, che a me sembra un linguaggio di programmazione visiva davvero pessimo e basilare.
Ma non è poi così male) C'è una teoria dietro. E la versione 2.0 ha preso alcune buone intuizioni dalle carenze 1.0.
Se stai andando così lontano, perché non usare semplicemente una sorta di linguaggio di scripting?
Il paradigma imperativo e i linguaggi di scripting non sono sempre la risposta migliore. Come probabilmente hai visto in linguaggi dichiarativi (come HTML, CSS, SQL, Drools o interni di Nginx, Graddle e Maven, Puppet ecc.) Il codice risultante può essere molto più piccolo e più pulito di una versione scritta in " linguaggio decente, come Java o C ++ ".
Per quanto riguarda l'altro punto:
per quanto ne so, a questo punto sono linguaggi di programmazione visiva, completi di condizionali e loop.
hai esaminato gli eventi e i trigger ? BPMN è una lingua e devi impararla prima dell'uso, o almeno conoscerla.
Sotto il cofano, BPMN è XML, quindi puoi modificarlo manualmente o generarlo. E puoi controllarli versione, perché XML è basato su testo. Tuttavia, solo avere un XML che può essere tradotto in diagrammi di flusso, non sembra che il suo goona ti aiuti, ed è corretto: scrivere il tuo parser o editor perché è un compito difficile e costoso con vantaggi discutibili.
Fortunatamente, ci sono già strumenti sul mercato che lo fanno esattamente.
Activiti è gratuito e abbastanza popolare tra gli sviluppatori e i proprietari di aziende, a causa del suo prezzo iniziale ( zero ), della disponibilità di informazioni e dell'umiltà. L'ultimo punto è davvero unico, in quanto Activi si concentra solo sulla gestione dei processi aziendali, senza cercare di legarti con soluzioni a pacchetto completo. Inoltre, è aperto, quindi devi solo conoscere Java e REST per farlo funzionare. Lo svantaggio è che lato client, integrazione e logica applicativa / aziendale e l'intera architettura sono lasciati allo sviluppatore, quindi se il tuo team di sviluppo è debole, preparati al fallimento. Il costo totale di proprietà può essere sorprendentemente alto per uno strumento gratuito ;)
Dall'altro lato dello spettro c'è Pega (Pega PRPC), il re in carica dei sistemi BPM (secondo Gartner e Forester), che sembra sorprendentemente buono per la sua età. Questo colosso della cucina è persino capace di CRM, OCR e (se non sbaglio) capacità di riconoscimento vocale, analisi predittiva, gestione delle regole di business e editor dell'interfaccia utente WYSIWYG. Viene fornito con un prezzo serio, però. Non solo costa una fortuna, ma tutto lo sviluppo è fatto all'interno di un'app Web, il che significa che devi usare il browser, che è IE8 (oltre ad alcuni plugin, oltre a brutti hack, come usare Excel per modificare le tabelle di dati). Inoltre, la modifica di Java, Javascript o HTML / CSS viene eseguita anche con il browser Web, quindi saluta i test unitari, l'evidenziazione del codice IDE, il refactoring e tutti i tuoi giocattoli di programmazione che ti sei innamorato.
Il suo lato positivo? puoi implementare un sistema complesso ENTRO LE SETTIMANE [ PDF , vedi pagina 22]. E sì, il risultato non è garantito.
Di recente, IBM ha acquisito Lombardi (in linea con il ritmo del tempo aziendale) e ora offre una soluzione molto competitiva (ma poi dovrai comprare tutto , lo sai). Appian è un giovane venditore che ha spunti interessanti e feedback positivi, ma il modo in cui sono scritti (due lingue DSL extra oltre a quella visiva) non mi attira.
Ci sono altri giocatori e le loro soluzioni. Molti di loro sono semplicemente orribili. Tipo: i tuoi occhi, cervello e cuore sanguinerebbero letteralmente, quando li guardi semplicemente. Quindi, fidati del tuo coraggio e non farti odiare dai tuoi sviluppatori e utenti.
Nota di chiusura:
Il sistema BPM è lo stesso per i processi, ciò che Photoshop è per le immagini. Non aver paura che sia visivo. Non farlo fare il lavoro non adatto a questo (ricordi i siti web creati interamente in Photoshop, che erano quasi impossibili da modificare?). Mantienilo semplice e non creare bug;)