go-workflow
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

SHAR

SHAR is the Simple Hyperscale Activity Router

SHAR runs BPMN workflows at scale on a variety of devices.

Learn more

What is SHAR?

SHAR is a workflow engine powered by message queue. It is capable of loading and executing BPMN workflow XML.

It aims to be small, simple and have a tiny footprint.

SHAR is 100% written in go, so takes advantage of the speed and size of a native executable.

Why is SHAR?

It was about time someone built a massively scalable workflow engine for the masses ;-)

Up until now, the tech to facilitate this was complicated. NATS simplifies the creation of tools like this.

BPMN is great. But the lack of variety in open source engines holds it back.

How do I use SHAR?

SHAR currently supports a lot of the functionality from the (Camunda Platform 8) files generated by Camunda Modeler (with some caveats).

In the future we plan to provide a dedicated modeler just for SHAR workflows.

Just design a business process using the modeller, create a few functions in go, and execute the model!

How does it work?

To accomplish massive scalability, the workflow transition, and activity calls are sent as immutable messages encapsulating their state.

SHAR uses a NATS backend to provide redundancy and high throughput whilst still being able to run on low power hardware.

SHAR concentrates on being a workflow engine and lets reliable message queuing do the heavy lifting.

How is it better?

Most BPMN engines are heavyweight and rely on proprietary storage and retry logic.

The developers of BPMN engines tend to reinvent the wheel, making custom monitoring, persistence, retry, scalability, and resilience systems.

There is a tendency to write the engines in Java, which in turn requires a JVM to run.

Where can I use it?

SHAR can be used embedded, as a standalone server, seamlessly transformed into a cluster, or on tiny computers.

The API model means that it will linearly auto-scale depending on how many instances are running.

The code is 100% open source. So feel free to go fork yourself :)