giancarlomangiagli.it

BPMNator - BPMN generator from YAML

Introduction to BPMNator

BPMNator is a software I developed, useful to generate BPMN 2.0 files through a notation based on declarative YAML syntax.

That means, for example, that BPMNator transforms this four-lines simple YAML file:

process: My BPM process
activities:
  My first task:
    type: human

into the corresponding complex BPMN 2.0 XML standard file:

<?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>

The BPMNator-YAML format supports a few main features of BPMN standard and is useful basically in two contexts:

Source code, technical details, user manual and examples can be found on the GitHub BPMNator page:

https://github.com/ossacolsale/bpmnator/

BPMNator online

BPMNator can be installed rapidly on NodeJS/NPM context and it can be executed with command line or imported as a library in a project.

Anyway, I created an easy web version, perfect to test and use BPMNator instantly, accessible from this address:

https://giancarlomangiagli.it/BPMNatorOnline/

Here it is a screenshot on which the main components are marked with numbers from 1 to 7 and described later:

BPMNator Online screenshot

Interface components marked on the screenshot are the following:

  1. YAML text editor
  2. The panel listing syntax errors related to BPMNator YAML schema
  3. YAML file processing output (it reports any errors or, in case of positive result, the BPMN output)
  4. The button for uploading a YAML file to work to
  5. The button for downloading a copy of the YAML file you are working on
  6. The button for downloading a copy of the BPMN output file
  7. Preview of BPMN diagram

For developing the web interface, I used and combined together with BPMNator, through Webpack, the following main components: