Skip to content


Repository files navigation

alt text

Build Status codecov Version

Software by Niklas Kiefer, MIT License

Table of Contents


Bncl (binkel) ist a natural like creation language for bpmn-process-models, based on java and bpmn 2.0 xml Powered by Camunda's BPMN Model API . To execute the CLI and convert a bncl statement to bpmn, download the current release-version.

$ java -jar bncl-[versionNr.].jar

For more information, see the wiki!

example bncl-statement:

lets create a process with startevent signed startEvent1 called message incoming with usertask signed usertask1 called do something with usertask signed usertask2 with parallelgateway signed gateway1 with parallelgateway signed gateway2 with sequenceflow comesfrom startevent1 goesto gateway1 with sequenceflow comesfrom gateway1 goesto usertask1 with sequenceflow comesfrom gateway1 goesto usertask2 with sequenceflow comesfrom usertask1 goesto gateway2 with sequenceflow comesfrom usertask2 goesto gateway2 with endevent signed endevent1 called terminated with sequenceflow comesfrom gateway2 goesto endevent1

If it was successful, a .xml and .bpmn file is generated in same folder. Open one file in your favorite BPMN-Editor, like

Note: The Bncl-to-BPMN-converter only generates a valid xml-document in the BPMN-2.0-Schema. Not all editors supports a bpmn-file without rendering information (e.g.

<bpmndi:BPMNDiagram id="BPMNDiagram_1">
    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">
      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
        <dc:Bounds x="173" y="102" width="36" height="36" />


There is also a possibility to add these di-elements to the generated bpmn. Either you use the demo-webpage or the bncl-autolayout repository.


There is also a web demo available: On the web demo, the bncl-parser also autolayouts the created bpmn-string so it can used in several BPMN modeler. Please feel free to try it out!

Or try it out locally:

$ sh


Bncl is a Gradle-Project!

build a jar

$ ./gradlew build

run tests

$ ./gradlew check

Feel free to contribute. Just create an issue or create a pull request.


everything in bncl is case insensitive, but it is always a good idea to write it in small letters.

lets create a process

is a keyword group that signs the beginning of a bncl-statement


is a keyword that signs the beginning of a process element


signs a sequence workflow between process elements. comesfrom with given id signs the fromElement, goesto signes the toElement.

See the wiki for all element types!


FOSSA Status

Contains parts (bpmn-js, bpmnlint, bpmn-js-bpmnlint) released under the license.