giancarlomangiagli.it

BPMNator - Generatore di file BPMN da YAML

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:

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:

Screenshot di BPMNator Online

I componenti dell'interfaccia indicati sullo screenshot sono i seguenti:

  1. Editor testuale del file YAML
  2. Riquadro che elenca gli errori di sintassi relativi allo schema YAML di BPMNator
  3. Output dell'elaborazione del file YAML (riporta eventuali errori oppure, in caso di esito positivo, l'output BPMN)
  4. Pulsante per caricare un file YAML su cui lavorare
  5. Pulsante per scaricare una copia del file YAML su cui si sta lavorando
  6. Pulsante per scaricare una copia del file BPMN di output
  7. Anteprima del diagramma BPMN risultante

Per sviluppare l'interfaccia web ho utilizzato e combinato con BPMNator, tramite Webpack, i seguenti componenti principali: