DHGWorkflow is a visual Directed Hypergraph Workflow Composer.
For developers, this tool can be more than just a DHGWorkflow Editor. We aim at building an open-source generic simple graph builder which can be used for various applications that require some kind of building graphs by a user. It can easily be integrated with any web application and can even be customised to add custom logics.
DHGWorkflow is built by adding custom logic over this Generic Graph Builder.
Key Features of this graph builder:
- Export-import graph as a graphml file.
- Export graph as JPEG/PNG
- Undo-Redo Actions
- Drag Drop Nodes
- Create Edges easily
- Bend Edges
- Resize and customise nodes and edges.
and many more!
This is a frontend tool built with React Js. Steps to start it locally
- Clone the repository
- At the root of the repository, run the following commands:
npm i
npm start
- It should a development server and tool will be accessible at
http://localhost:3000/DHGWorkflow
The generic graph can be built out of two ways.
This branch will be synced with the changes from the main periodically. Easy to switch but do not guarantee up to date changes.
git checkout generic
npm i
npm start
This branch may contain src/graph-builder/tailored-graph-builder.js
. It can be safely removed.
You can convert the existing graph builder to generic by following these simple steps
- At
src/graph-builder/index.js
replace
import GraphBuilder from './tailored-graph-builder';
with
import GraphBuilder from './graph-core';
- Delete
src/graph-builder/tailored-graph-builder.js
(Optional)
This method is more error-prone.
This project requires building a graph with some special kind of hyperedges.
src/graph-builder/graph-core/*
contains all the classes required for building a generic GraphBuilder (with simple edges) and src/graph-builder/tailored-graph-builder.js
extends the core graph and add logics to create hyperedges.
If we create our instance of the graph with tailored-graph-builder
, we will get graph builder which will have hyperedges specialized for this project requirement whereas creating the instance from graph-core
will result in a generic graph builder with simple edges.