Client-side JavaScript/TypeScript/Dart engine that can execute BPMN?

Hi,

BPMN activity models are a good way to model user interactions within an app. Is there any client-side execution engine that can execute BPMN?

Such an engine would be a great pair for bpmn-js and Cawemo. There was an old project from Camunda that was archived recently: https://github.com/camunda/camunda-bpmn.js.

Thanks!
Shafqat

Hi Shafqat,

Welcome to the forums!

Have you tried searching on npmjs.com or npms.io?

Regarding the project you linked, it was archived because it wasn’t maintained for some time but anyone is still free to use it.

Out of curiosity, why would you want to use a client-side execution engine?

Best,
Gustavo

2 Likes

Hi @gustavjf,

Sorry for the late reply.

Actually we think there is a huge opportunity to orchestrate the “User Subtasks” within an app in order to perform a “User Task” of a workflow, if modeled as a sub-process of the workflow User Task. This will eliminate developer logic for controlling the subtask flow that typically goes in the “controller” or “application services” layer of the client-side app and the flow logic will be orchestrated by the BPMN engine like bpmn-js.

While server-side execution by a high-performance relatively lower-latency engine like Zeebe is still possible for client-side subtask level flow orchestration, there will be the typical client-server lag associated with it. Also, the execution logic is mostly local, so a local engine makes most sense.

We’re in fact adopting Dart for all our client-side apps (now that Flutter for Web is eliminating need for traditional web frameworks) and exploring how we can execute BPMN in client-side apps within Dart. It’s possible to port the bpmn-js library to Dart. We’re looking at what else is out there.

By the way, Statecharts-based (https://statecharts.github.io) orchestration of user interaction is receiving a renewed interest now and the two approaches, Statecharts and BPMN, actually serves the same role and BPMN has some advantages.

Thanks!

You can modify Flowable engine to run on the Server and on the Android phones with Couchbase database. That allows off-line data sync which in mobile projects is important.
Then you can write Flutter plugin which will use it to execute BPMN processes.
If putting Java + Couchbase is possible on the iPhone at the level that Flowable works,
then you can write Flutter plugin for iOS app as well.
If you are ready to pay for 1-2 years of my work, I can help improving Flowable project to bring it into native Android and iOS applications world, and into Flutter world as well.
Couchbase has off-line data sync for mobile apps. Community edition. Without that there will be nothing.
If it’s online backend calls every time, the usual Flowable is good enough for you.

Please do not necrobump old topics.