English | 中文
a light-weight extensible workflow based on Nodejs which is built with Typescript
Flowooh does not rely on any service framework and can easily be integrated into different Node server applications such as Express, Koa, NestJs, etc. This makes Flowooh very flexible and easy to use. Flowooh provides rich features and APIs to help developers quickly build workflow engines and workflow applications. Additionally, Flowooh supports plugins and extensions, allowing developers to customize and extend functionality based on their needs.
This repository is just getting started and is not ready for use.
I plan to implement the involved elements according to the specification of BPMN, and now I am in the process of implementing the BPMN Core Structure. Then I will refactor the XML-to-object transformation so that the implementation classes conform to the BPMN specification.
Here is the document I referred to: https://www.omg.org/spec/BPMN/2.0.2/PDF
Wishlist:
- refactor BPMN element implementations
- build a designer for Flowooh(bpmnjs, lowcode-engine)
- build a approval workflow implementation demo based on Flowooh
- build a project management system implementation demo based on Flowooh
Workflow engines are commonly used in development, and there are already excellent workflow projects such as Activiti, Flowable, Camunda, etc.
However, there is a lack of similar tools or projects on Node.js. I hope to build a workflow engine based on Node.js to help developers better integrate and implement workflow applications on the Node.js server.
Clone the repo to your local machine
$ git clone https://github.com/flowooh/flowooh.git
Switch current directory to samples/flowooh-demo-simple
and install dependencies
$ cd samples/flowooh-demo-simple
$ npm i
Create a file .env
and configure it
DEBUG=*
FLOWOOH_DATA_DB_CLIENT=sqlite3
FLOWOOH_DATA_DB_CONNECTION=.db/test.sqlite
Init Database(Sqlite3), run script to launch server. then open http://localhost:5173/
in Browser
$ npm run init-db
$ npm run dev
If you have any comment or advice, please report your issue, or make any change as you wish and submit a PR.
Please click the "Fork" button in the main page of Flowooh to fork the latest code into your own repository. Then clone yours to your local machine.
You can install all the dependencies listed in package.json with npm:
$ npm i
You can link flowooh to global of your local machine, so you can use it in developing locally.
$ npm run build
$ npm run link:data
- Before you link flowooh to global, you should build it by using
npm run build
. - Since Flowooh is a Monorepo built by Lerna, it is not recommend to using
npm link
directly. you can usenpm run link:<package name>
to link certain package to global, such asnpm run link:data
means to link@flowooh/data
to global.
You can use it in your project or sample project locally by npm link
.
$ cd path-of-sample-project
$ npm link @flowooh/data
Don't forget set environment variables.
FLOWOOH_DATA_DB_CLIENT=sqlite3
FLOWOOH_DATA_DB_CONNECTION=.db/test.sqlite
- You can use sqlite3 to quickly start your service without the need for additional configuration of the database environment.
FLOWOOH_DATA_DB_CONNECTION
could be a file path, the directory should be already exist. - You can use the database which Knex is supported.