npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

bpmn-server

v2.2.14

Published

BPMN 2.0 Server including Modeling, Execution and Presistence, an open source for Node.js

Downloads

423

Readme

Overview Home

bpmn-server provides a Workflow component based on Business 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 instances to make them ideal platform to do long running business processes, durable services or scheduled backgound tasks.

Modeling

bpmn-server provides a modeling tool based on bpmn.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, an element can be a node in the diagram (events/tasks/gateway) or a flow

Models are saved by bpmn-server and can be queried see API.model

bpmn-server support all bpmn 2.0 elements see Modeling Support

Execution

bpmn-server is primiraly an execution engine for bpmn models.

Everytime a model is executed (started), an instance is created, and for each element 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 execution engine is availabe through an API see API.engine.

For more details about Invoking Execution Engine

For more details about Execution behaviour

Datastore

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 API see API.data

For more details about data management

User Management and Security

bpmn-server is relying on the front-end applicaton to authenticate users and to pass user information through the API.

  1. Model designer/developr can define assignee, candidateUsers, candidateUserGroups as static string or JavaScript expressions

  2. Application fron-end need to pass the implementation of `userService'

  3. 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

Demo Web Application

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

  • View of Model specification

Full Demo Web Application

We Provide a full demo @ https://bpmn.omniworkflow.com

Installation

This package requires Node.js and an access to MongoDB () if you don't have MongoDB already installed you can create a free cloud account here or can be installed locally

1. git clone

> git clone https://github.com/bpmnServer/bpmn-web.git

2. install packages

> npm install

3. setup the app

> npm run setup

Edit .env file to have MongoDB point to your server or free cloud account

# MongoDB Settings
MONGO_DB_URL=mongodb://0.0.0.0:27017/bpmn
#
  • Run Setup again to create db objects
> npm run setup

Your installation is now complete.

4. Start server

> npm run start

Console will display:

bpmn-server WebApp.ts version 1.4.0
MongoDB URL mongodb://0.0.0.0:27017/bpmn
db connection open

App is running at http://localhost:3000 in development mode
  Press CTRL-C to stop

Use your browser to view the bpmn-server running

Docker installation

1. Create a folder , cd to folder

2. Create a docker-compose.yml as follows:

version: "3.7"
name: bpmn-server
services:
 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/db
volumes:
  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'    

3. start the container docker compose up -d

Command Line Interface

>npm run cli


server started..
Commands:
        q       to quit
        s       start process
        lo      list outstanding items
        li      list items
        l       list instances for 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 list
Enter Command, q to quit, or ? to list commands
>

to update to latest release

> npm update bpmn-server

Application Integration

bpmn-server is intended to be integrated into your application see

Documentation

License

This project is licensed under the terms of the MIT license.

Acknowledgments

The bpmn-server resides upon the excellent library bpmn-io/bpmn-moddle developed by bpmn.io

The bpmn-server is inspired by the library bpmn-engine