Introduzione a BPMNator
BPMNator è un software, sviluppato da me, che permette di creare file in formato BPMN 2.0 attraverso una notazione basata sulla sintassi dichiarativa YAML.
Ad esempio, a partire da questo semplice file YAML:
process: My BPM process activities: My first task: type: human
BPMNator genera il corrispondente e ben più articolato file XML BPMN 2.0:
<?xml version="1.0" encoding="UTF-8"?> <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://bpmn.io/schema/bpmn"> <bpmn:process id="MyBpmProcess" name="My BPM process" isExecutable="true"> <bpmn:sequenceFlow id="sequenceFlow_1" sourceRef="startEvent_1" targetRef="MyFirstTask" /> <bpmn:sequenceFlow id="sequenceFlow_2" sourceRef="MyFirstTask" targetRef="endEvent_1" /> <bpmn:startEvent id="startEvent_1"> <bpmn:outgoing>sequenceFlow_1</bpmn:outgoing> </bpmn:startEvent> <bpmn:endEvent id="endEvent_1"> <bpmn:incoming>sequenceFlow_2</bpmn:incoming> </bpmn:endEvent> <bpmn:userTask id="MyFirstTask" name="My first task"> <bpmn:incoming>sequenceFlow_1</bpmn:incoming> <bpmn:outgoing>sequenceFlow_2</bpmn:outgoing> </bpmn:userTask> </bpmn:process> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="MyBpmProcess"> <bpmndi:BPMNEdge id="_BPMNConnection_sequenceFlow_2" bpmnElement="sequenceFlow_2"> <di:waypoint x="340" y="118" /> <di:waypoint x="372" y="118" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="_BPMNConnection_sequenceFlow_1" bpmnElement="sequenceFlow_1"> <di:waypoint x="188" y="118" /> <di:waypoint x="240" y="118" /> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_startEvent_1" bpmnElement="startEvent_1" isExpanded="false"> <dc:Bounds x="152" y="100" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_MyFirstTask" bpmnElement="MyFirstTask" isExpanded="false"> <dc:Bounds x="240" y="78" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="_BPMNShape_endEvent_1" bpmnElement="endEvent_1" isExpanded="false"> <dc:Bounds x="372" y="100" width="36" height="36" /> </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </bpmn:definitions>
BPMNator supporta molte delle principali funzionalità dello standard BPMN 2.0 e risulta utile principalmente in questi due contesti:
- Per accelerare la modellazione di processi ove sia necessario implementarne svariati per uno stesso progetto (in tal modo si può creare la struttura principale con BPMNator e rifinire successivamente i dettagli aprendo i file BPMN con un tradizionale editor visuale)
- Per generare rapidamente diverse varianti di file BPMN a scopo di ricerca o testing
Codice sorgente, dettagli tecnici, manuale d'uso ed esempi si trovano sulla pagina GitHub di BPMNator:
https://github.com/ossacolsale/bpmnator/
BPMNator online
BPMNator può essere installato rapidamente nel contesto NodeJS/NPM ed eseguito a linea di comando o importato come libreria nel proprio progetto.
Ad ogni modo, ho creato una comoda versione web per testare e usare istantaneamente BPMNator, accessibile dall'indirizzo:
https://giancarlomangiagli.it/BPMNatorOnline/
Ecco uno screenshot del software i cui componenti principali dell'interfaccia sono contrassegnati con numeri da 1 a 7 e descritti di seguito:
I componenti dell'interfaccia indicati sullo screenshot sono i seguenti:
- Editor testuale del file YAML
- Riquadro che elenca gli errori di sintassi relativi allo schema YAML di BPMNator
- Output dell'elaborazione del file YAML (riporta eventuali errori oppure, in caso di esito positivo, l'output BPMN)
- Pulsante per caricare un file YAML su cui lavorare
- Pulsante per scaricare una copia del file YAML su cui si sta lavorando
- Pulsante per scaricare una copia del file BPMN di output
- Anteprima del diagramma BPMN risultante
Per sviluppare l'interfaccia web ho utilizzato e combinato con BPMNator, tramite Webpack, i seguenti componenti principali:
- Monaco editor - per l'interfaccia dell'editor YAML
- Monaco YAML - plugin per Monaco editor che verifica in automatico lo schema di BPMNator (costruito in formato JSON Schema)
- BPMN.io - editor e visualizzatore web di file BPMN