- Notifications
You must be signed in to change notification settings - Fork49
bpmnServer/bpmn-server
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
bpmn-server
provides a Workflow component based onBusiness Process Model and Notation that can be easily integrated into your application.
As workflow application can outlive Node.js applications,bpmn-server
has out-of-the-box state presistence and variables, with concurrency across Node.js cluster and process instancesto make them ideal platform to do long running business processes, durable services or scheduled backgound tasks.
bpmn-server
provides a modeling tool based onbpmn.io
with customized property panel, no need to edit bpmn files
bpmn
models can also be imported from other tools.
Typically your application has multiple bpmn models, a model is represented in a bpmn definition (xml).
Each Model is made of various elements, anelement
can be anode
in the diagram (events/tasks/gateway) or aflow
Models are saved bybpmn-server
and can be queriedsee API.model
bpmn-server
support all bpmn 2.0 elementssee Modeling Support
bpmn-server
is primiraly an execution engine for bpmn models.
Everytime a model is executed (started), aninstance
is created, and for eachelement
that is executed it creates an `item'
Execution is based on the model logic that is enhanced by various extensions that allow scripting and access to your application.
During Execution, Model Listeners and Application Listeners are invoked.
The executionengine
is availabe through an APIsee API.engine.
For more details about Invoking Execution Engine
For more details about Execution behaviour
At various stages of execution, instance object with its parts is saved into a datastore (defaults to MongoDB)
Instances and Items can be queried through an APIsee API.data
For more details about data management
bpmn-server
is relying on the front-end applicaton to authenticate users and to pass user information through the API.
Model designer/developr can define assignee, candidateUsers, candidateUserGroups as static string or JavaScript expressions
Application fron-end need to pass the implementation of `userService'
bpmnServer
will enforce security rules based on the current user passed by the application
bpmn-web
Demo Application , provides a complete implementation of users management using Passport and MongoDB.
For more details about security
A Demo Web application `bpmn-web` provides full front-end along with security features to demonstrate and test the capabilities of `bpmn-server`.
The web app provides:
- Presistent Modeling tool, using bpmn.io
- Model property panel supporting all features of
bpmn-server
, no need to edit bpmn file - Execution with input form for defined fields
- List of outstanding/recent tasks and workflow
- Viewing of
instance
details
We Provide a full demo @https://bpmn.omniworkflow.com
This package requires Node.js and an access to MongoDB ()if you don't have MongoDB already installed you cancreate a free cloud account here or can beinstalled locally
> git clone https://github.com/bpmnServer/bpmn-web.git
> npm install
> npm run setup
Edit .env file to have MongoDB point to your server or free cloud account
# MongoDB SettingsMONGO_DB_URL=mongodb://0.0.0.0:27017/bpmn#
- Run Setup again to create db objects
> npm run setup
Your installation is now complete.
> npm run start
Console will display:
bpmn-server WebApp.ts version 1.4.0MongoDB URL mongodb://0.0.0.0:27017/bpmndb connection openApp is running at http://localhost:3000 in development mode Press CTRL-C to stop
Use your browser to view the bpmn-server running
To install MongoDB, bpmn-server and bpmn-web in on a docker container
version: "3.7"name: bpmn-serverservices: bpmn-web: image: ralphhanna/bpmn-web command: sh -c " npm run setup && npm run start" ports: - 3000:3000 volumes: - 'app:/app' depends_on: - mongo mongo: image: mongo ports: - 27017:27017 volumes: - mongodb:/data/dbvolumes: mongodb: driver: local driver_opts: type: 'none' o: 'bind' device: './mongodb_volume' app: driver: local driver_opts: type: 'none' o: 'bind' device: './bpmn_server_volume'
bpmnServer provide some basic functionalities using CLI
>npm run cliserver started..Commands: q to quit s start process lo list outstanding items li list items l list instancesfor a process di display Instance information i Invoke Task sgl Signal Task msg Message Task d delete instnaces lm List of Models lme List of Models ck Check locked instnaces re Recover hung processes lu List Users spw Set User Password? repeat this listEnter Command, q to quit, or? to list commands>
> npm update bpmn-server
bpmn-server
is intended to be integrated into your applicationsee
This project is licensed under the terms of the MIT license.
Thebpmn-server resides upon the excellent librarybpmn-io/bpmn-moddle developed bybpmn.io
Thebpmn-server is inspired by the librarybpmn-engine