Gestisci i tuoi processi aziendali con JBoss jBPM

Le aziende hanno cercato diligentemente un approccio strutturato per progettare azioni / transazioni commerciali e eseguirle preferibilmente utilizzando processi automatizzati. La gestione dei processi aziendali (BPM) e la gestione del flusso di lavoro offrono una soluzione a questo problema utilizzando concetti quali azioni, attività e flussi.

Questo articolo introduce BPM e discute le tecniche e gli strumenti per potenziare i sistemi aziendali con BPM e la gestione del flusso di lavoro utilizzando JBoss jBPM.

Il termine gestione dei processi aziendali si riferisce in genere a un insieme di attività che le imprese possono impiegare per automatizzare e ottimizzare i processi aziendali in modo adattabile agli ambienti in evoluzione dinamica. Queste attività di solito richiedono l'aiuto dell'ingegneria del software e degli strumenti; pertanto, il termine BPM viene spesso utilizzato direttamente per fare riferimento alle tecniche e agli strumenti di ingegneria.

BPM si concretizza in tre pratiche distinte:

  1. Progettazione del processo: il compito di progettare processi esistenti e nuovi
  2. Esecuzione del processo: l'esecuzione di una sequenza automatizzata di eventi correlati che coinvolgono processi software e / o attività umane
  3. Monitoraggio dei processi: rispetto e controllo dello stato dei singoli processi in modo che le statistiche e le prestazioni di questi processi possano essere registrate, riportate e ottimizzate

BPM cerca di consentire agli ingegneri del software di condividere gli stessi concetti e framework degli analisti aziendali; di conseguenza, i fornitori di software hanno tentato di creare strumenti che consentiranno alle aziende di acquisire, progettare e ottimizzare i processi aziendali mediante l'impiego di strumenti di modellazione grafica, linguaggi specifici del dominio e applicazioni proprietarie.

JBoss jBPM 3.0 offre la capacità di sviluppare nuovi processi aziendali automatizzati e flussi di lavoro con orchestrazione standard del settore utilizzando Business Process Execution Language (BPEL), un'API flessibile e collegabile, un linguaggio di definizione del processo nativo e uno strumento di modellazione grafica.

JBoss jBPM è un framework open source (licenza LGPL) di API Java, strumenti e un linguaggio di definizione che può funzionare come applicazione Web o applicazione Java autonoma. JBoss jBPM funge da intermediario tra gli analisti aziendali e gli sviluppatori fornendo loro un linguaggio comune di definizione dei processi denominato jPDL .

Panoramica dell'architettura JBoss jBPM

JBoss jBPM definisce le definizioni del processo all'interno dei file scritti utilizzando il linguaggio di definizione del processo JBoss. jPDL è un linguaggio di programmazione orientato alla grafica (GOP) basato su un modello di nodi, transizioni e azioni. In questo modello, i nodi sono comandi eseguiti quando vengono rilevati durante il flusso di una definizione di processo. Le transizioni dirigono il flusso di esecuzione di una definizione di processo e le azioni eseguono una logica specifica quando si verifica un nodo o un evento di transizione.

In jBPM, le definizioni di processo vengono impacchettate come archivi di processo. Un archivio del processo viene passato al motore del processo jPDL per l'esecuzione. Il motore del processo jPDL attraversa un grafico del processo, esegue azioni definite, mantiene lo stato del processo e registra tutti gli eventi del processo.

JBoss jBPM è incapsulato nei seguenti componenti:

  • Motore di processo: questo componente esegue azioni di processo definite, mantiene lo stato del processo e registra tutti gli eventi di processo tramite i seguenti componenti delegati:
    • Un gestore delle richieste
    • Un manager statale
    • Un gestore di registro
    • Un caricatore di definizioni
    • Un servizio di esecuzione
  • Monitoraggio dei processi: questo modulo tiene traccia, controlla e segnala lo stato dei processi mentre vengono eseguiti
  • Linguaggio del processo: il linguaggio di definizione del processo (jPDL) è basato su GOP
  • Servizi di interazione: questi servizi espongono le applicazioni legacy come funzioni o dati da utilizzare nelle esecuzioni dei processi

Le relazioni tra questi componenti sono illustrate nella Figura 1.

Come mostrato nella Figura 1, le definizioni del processo jBPM contenenti gestori di azioni vengono caricate ed eseguite dal motore del processo jBPM. Quando il motore del processo incontra un nodo nella definizione del processo a cui è associata un'azione, vengono richiamati tutti i gestori di azioni correlati. I gestori di azioni sono istanze di codice Java che interagiscono con i sistemi esterni quando vengono eseguiti.

Di seguito è riportato un esempio di un semplice gestore di azioni:

import org.jbpm.graph.def.*; import org.jbpm.graph.exe.*;

public class MyActionHandler implements ActionHandler { public void execute(ExecutionContext executionContext) { System.out.println("MyActionHandler has executed: " + executionContext); } }

Il file PDL in un archivio di processo è denominato process-definition.xml. Questo file contiene la descrizione formale dei processi. Un esempio di file process-definition.xml è illustrato nel seguente esempio:

Una definizione di processo si basa su un grafico diretto. Il grafico è composto da nodi, transizioni, uno stato iniziale e uno stato finale. Il tipo di ogni nodo definisce il comportamento di runtime per il nodo. Durante l'esecuzione di una definizione di processo, entrano in gioco le seguenti entità:

  • Istanza di processo: un'istanza di processo è un'esecuzione di una definizione di processo.
  • Token: un token è un percorso di esecuzione. Un token è il concetto di runtime che mantiene un puntatore a un nodo nel grafico. Quando viene creata un'istanza di processo, viene creato un token per il percorso principale di esecuzione. Questo token è chiamato token radice dell'istanza di processo ed è posizionato nello stato iniziale della definizione del processo.
  • Segnale: un segnale ordina a un token di continuare l'esecuzione del grafico passando da un nodo.
  • Nodo: i nodi sono responsabili della continuazione dell'esecuzione di un grafico. Quando un token entra in un nodo, il nodo viene eseguito. Un nodo che non propaga l'esecuzione è considerato uno stato.
  • Azione: le azioni sono istanze del codice Java eseguite quando si verificano eventi durante l'esecuzione di un processo. I tipi di eventi principali sono "entrare in un nodo", "lasciare un nodo" e "prendere una transizione".

Le definizioni dei processi possono essere create facilmente con il designer di modellazione grafica jBPM. Il designer è attualmente installato come plug-in di Eclipse. La Figura 2 illustra una schermata di esempio dal designer di modellazione grafica.

Il designer grafico può essere utilizzato per creare definizioni di processo, allegare gestori di azioni agli eventi, modificare l'origine delle definizioni, creare archivi di processi, testare le definizioni dei processi e così via.

Distribuzione di JBoss jBPM

JBoss jBPM memorizza le definizioni di processo in un database. Pertanto, la distribuzione di un processo in JBoss jBPM implica l'analisi di process-definition.xml e la sua memorizzazione nel database JBoss jBPM. Questo può essere fatto da:

  • Utilizzo pardell'attività Ant fornita con JBoss jBPM per creare un archivio di processo.
  • Utilizzo dell'utilità deploypar. Questa utilità crea anche un archivio di processo e distribuisce l'archivio di processo al database jBPM. Il programma di utilità deploypar accetta un file jBPM.properties come attributo. Questo file specifica le opzioni di configurazione, incluso il database in cui deve essere distribuito l'archivio del processo.
  • Analisi e archiviazione a livello di codice di process-definition.xml in un datastore.

Esecuzione di JBoss jBPM attraverso alcuni semplici passi

JBoss jBPM acts as an orchestration engine that sits in the middle of enterprise applications, enabling integration and coordination between different applications.

For this article, I use the sample deployment shipped with jBPM to discuss how jBPM and jPDL are used to create and modify a simple Web-enabled order processing system.

Downloading JBoss jBPM

The JBoss jBPM starter kit contains everything needed to execute JBoss jBPM, with the exception of a JDK. The JBoss Application Server in the JBoss jBPM starter kit requires J2SE 1.4 or a more recent version.

After you have downloaded the starter kit, unzip it to a directory of your choosing. Once you have unzipped the starter kit, you will have a directory structure similar to the following:

  • Jbpm-starters-kit-3.1
    • jbpm: Contains the source code for the JBoss jBPM product
    • jbpm-bpel: Contains information about the BPEL extension for JBoss jBPM
    • jbpm-db: Contains sample configurations for connecting JBoss jBPM to other databases
    • jbpm-designer: Contains the Eclipse plug-in for the JBoss jBPM Visual Process Designer
    • jbpm-server: Contains the JBoss Application Server along with the JBoss jBPM engine and the sample process

Execute the JBoss jBPM engine

To start the JBoss application server with jBPM deployed, go to the jbpm-server directory and execute the startup script found there. A command window should pop up with the jBPM console window, similar to Figure 3.

Now, bring up a browser window and go to //localhost:8080/jbpm. You will be presented with the login page for the sample Web application for JBoss jBPM, shown in Figure 4.

Accedi come cookie monster e seleziona il collegamento Crea nuovo ordine di vendita web. Questo creerà una nuova istanza del processo di "vendita Web" predefinito, illustrato nella Figura 5.

Il file di definizione effettivo, processdefinition.xml, si trova in websale.par ed è illustrato nel seguente elenco: