• Stars
    star
    185
  • Rank 207,028 (Top 5 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 3 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A BPMN engine, meant to be embedded in Go applications with minimal hurdles, and a pleasant developer experience using it. This approach can increase transparency for non-developers.

lib-bpmn-engine

Build status

go test status codecov Documentation Status Go Report Card

Project status

  • "beta" status, not recommended to use in production
  • breaking API changes expected
  • contributors welcome

Documentation

Full documentation with examples:
https://nitram509.github.io/lib-bpmn-engine/

GoDoc:
https://pkg.go.dev/github.com/nitram509/lib-bpmn-engine/pkg/bpmn_engine

There's an experimental online playground https://nitram509.github.io/lib-bpmn-engine-js/ available, which leverages the great power of cross-compiling to WASM.

Requirements

Go v1.18+

I'm supporting the latest and second-latest version of Go, similar to how Go itself handles releases.

BPMN Modelling

All these examples are build with Camunda Modeler Community Edition. I would like to send a big "thank you", to Camunda for providing such tool.

Implementation notes

IDs (process definition, process instance, job, events, etc.)

This engine does use an implementation of Twitter's Snowflake algorithm which combines some advantages, like it's time based and can be sorted, and it's collision free to a very large extend. So you can rely on larger IDs were generated later in time, and they will not collide with IDs, generated on e.g. other nodes of your application in a multi-node installation.

The IDs are structured like this ...

+-----------------------------------------------------------+
| 41 Bit Timestamp |  10 Bit NodeID  |   12 Bit Sequence ID |
+-----------------------------------------------------------+

The NodeID is generated out of a hash-function which reads all environment variables. As a result, this approach allows 4096 unique IDs per node and per millisecond.

Development of this library and contribution

For development hints and notes, please check DEVELOPMENT.md

For information on contribution, please check CONTRIBUTING.md

Community fun: stargazers over time

Stargazers over time

More Repositories

1

ascii-telnet-server

Can stream an ~20 minutes ASCII movie via Telnet emulation as stand alone server or via xinetd daemon. Using famous ASCII art animation from www.asciimation.co.nz (Star ASCIIMATION Wars)
Python
255
star
2

jmacaroons

Pure Java implementation of Macaroons: Cookies with Contextual Caveats for Decentralized Authorization in the Cloud. Android ready. Online playground available. Project is STALE
Java
114
star
3

macaroons.js

Javascript implementation of Macaroons: Cookies with Contextual Caveats for Decentralized Authorization in the Cloud.
HTML
78
star
4

ntgrrc

ntgrrc (Netgear Remote Control) a command line (CLI) tool to manage Netgear GS3xx switch series.
HTML
28
star
5

nitram-micro-font

micro bitmap font, just 5x5 pixels, including special characters suitable for ASCII art :)
Python
12
star
6

one-button-to-zoom-meeting

Cheap solution to automatically start Zoom meetings by hitting a fancy arcade button
JavaScript
11
star
7

concourse-java-maven-test-prj

A test project for playing with concourse - Java, Maven, evtl. Spring Boot
Java
6
star
8

lib-bpmn-engine-js

A BPMN engine. A WASM variant of lib-bpmn-engine. Playground and Showcase interactive BPMN modelling and execution.
Go
4
star
9

mkat

Medien Katalog
Java
3
star
10

decentral-authentication-playground

Java
2
star
11

temperature-based-fan-control-for-time-capsule

Temperature Based Fan Control For e.g. Apple's Time Capsule
Arduino
2
star
12

reveal.js-realsense-plugin

A plugin for reveal.js (by Hakim El Hattab) that lets you control slides via Intel RealSense input devices. STATUS: inactive
JavaScript
2
star
13

trelloviz

Some fancy visualizations for Trello.com boards. Most likely only useful, if you're doing Kanban ;-) PROJECT on HOLD
JavaScript
2
star
14

scsreader

SCS Reader is an OSGI compatible Java library which is able to read, parse and transform SCS (SNA Character String) data streams. The implementation also offers some converters to transform such streams into Text, PDF, RTF or other formats.
Java
2
star
15

docker-debian-oraclejdk8-maven-cmake-gcc-gnueabihf

Docker image with Debian, Oracle JDK, Maven, GCC, G++, GIT and ARM binutils
2
star
16

intellij-idea-plugin-serializer-toolbox

IntelliJ IDEA Plugin: Serializer Toolbox
Java
1
star
17

elevation-at-full-tilt

Elevation - At Full Tilt - An experiment with NASA's SRTM data in GO.
Go
1
star
18

simple-race-lap-timer

A simple solution to measure your laps during drone races - for your own record or to compete with friends
C
1
star
19

clang-compiler-error

Proof of Concept to demonstrate clang compiler error
C++
1
star
20

visual-experiments

Visual Experiments
CSS
1
star
21

android-web-telephony-integration

Android Web Telephony Integration (WTI) - A proof of concept (PoC) of how to integrate mobile phones into a web application.
Java
1
star
22

blil

BLIL - Blinking Light: A command line tool, which can control a blinkstick and/or compatible devices, written in GO, works on Windows and Mac OS X
Go
1
star
23

java-spark

Spark-Graphs for Java. Clone of https://github.com/holman/spark.
Java
1
star
24

xtreamer-drive-manager

Xtreamer Drive Manager - PROJECT on HOLD
Java
1
star
25

cccamp2023-led-spotlight

Fancy spotlight ESP8266 D1 code
C++
1
star
26

tweet-gateway-server

Tweet Gateway Server - a simple HTTP interface, without any authentication, and forwards/tweets every message to your Twitter account. - PROJECT is STALE
Java
1
star