DEV Community

hooopo wang
hooopo wang

Posted on

2 1

Petri Net Workflow engine for Rails

Petri Flow

Workflow engine for Rails: https://github.com/hooopo/petri_flow

Features

  • Full petri net features support (seq, parallel, iterative, timed, automitic etc.)
  • Both approval workflow and business workflow.
  • Simple web admin for workflow definition and case management.
  • Build-in simple dynamic form.
  • Replaceable dynamic form.
  • Graph screen for workflow definition.
  • Graph screen for case and token migration.
  • Powerful guard expression.
  • MySQL and Postgres Support.
  • Powerful assignment management.
  • Flexible integration of organizational structure system(role, group, position or department etc.)

Docs

Screenshots

iterative routing

parallel_routing

guard

case state graph

Installation

Add this line to your application's Gemfile:

gem 'petri_flow', require: 'wf'

And then execute:

$ bundle

Install graphviz

brew install graphviz

Migration:

bundle exec rake wf:install:migrations
bundle exec rails db:create
bundle exec rails db:migrate

Usage

Add wf_config:

# config/initializers/wf_config.rb
Wf::Workflow.class_eval do
  def self.user_class
    ::User
  end

  # you can add more org class, for example, Role, Department, Position etc.
  def self.org_classes
    { group: ::Group }
  end
end

Set parties:

class User < ApplicationRecord
  belongs_to :group, optional: true
  has_one :party, as: :partable, class_name: 'Wf::Party'

  # NOTICE: group or user or role all has_many users
  has_many :users, foreign_key: :id

  after_create do
    create_party(party_name: name)
  end
end
class Group < ApplicationRecord
  has_many :users
  has_one :party, as: :partable, class_name: 'Wf::Party'
  after_create do
    create_party(party_name: name)
  end
end

then

bundle exec rails 

visit:

http://localhost:3000/wf

Demo App: https://github.com/hooopo/petri_flow_demo

Contributing

Contribution directions go here.

License

The gem is available as open source under the terms of the MIT License.

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay