All Projects → omerio → graphviz-server

omerio / graphviz-server

Licence: other
Java based GraphViz HTTP Server

Programming Languages

java
68154 projects - #9 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to graphviz-server

tlaplus specs
Different TLA+ specifications, mostly for learning purposes
Stars: ✭ 25 (-26.47%)
Mutual labels:  graphviz
swagger2puml
Generate Class Diagrams (UML) for Given Swagger Definition
Stars: ✭ 43 (+26.47%)
Mutual labels:  graphviz
sphinx-server
Sphinx documentation Docker image with Python server and support for PlantUML and more.
Stars: ✭ 62 (+82.35%)
Mutual labels:  graphviz
noflo-graphviz
NoFlo visualization tools for GraphViz
Stars: ✭ 14 (-58.82%)
Mutual labels:  graphviz
DotNetGraph
Create GraphViz DOT graph with .NET / C#
Stars: ✭ 57 (+67.65%)
Mutual labels:  graphviz
lolviz.js
A faithful (albeit optimized) port of Terence Parr List of Lists Visualization library, https://github.com/parrt/lolviz from Python to Javascript.
Stars: ✭ 18 (-47.06%)
Mutual labels:  graphviz
dotnets
Create simple drawings of neural networks using graphviz
Stars: ✭ 161 (+373.53%)
Mutual labels:  graphviz
redmine-wiki graphviz plugin
Wiki macro for redmine. The macro render graph-image from wiki contents as dot.
Stars: ✭ 57 (+67.65%)
Mutual labels:  graphviz
vscode-markdown-editor
A vscode extension to make your vscode become a full-featured WYSIWYG markdown editor
Stars: ✭ 249 (+632.35%)
Mutual labels:  graphviz
REstate
Portable state-flows (state-machine based workflows)
Stars: ✭ 35 (+2.94%)
Mutual labels:  dot-graph
lein-hiera
Generate Clojure namespace hierarchy graphs
Stars: ✭ 55 (+61.76%)
Mutual labels:  graphviz
stateless
Finite State Machine porting from Stateless C#
Stars: ✭ 25 (-26.47%)
Mutual labels:  dot-graph
Graphvizer
Preview Graphviz in real time with Sublime Text 3
Stars: ✭ 74 (+117.65%)
Mutual labels:  graphviz
nmap-formatter
A tool that allows you to convert NMAP results to html, csv, json, markdown, graphviz (dot). Simply put it's nmap converter.
Stars: ✭ 129 (+279.41%)
Mutual labels:  graphviz
cytoscape.js-fcose
fCoSE: a fast Compound Spring Embedder
Stars: ✭ 94 (+176.47%)
Mutual labels:  graphviz
plugins
Collection of builtin GNU TeXmacs plugins
Stars: ✭ 33 (-2.94%)
Mutual labels:  graphviz
AAG-Visualizer
🌆 🏙 🌃 Viz.js Graphviz - An Elegant Visualizer for And-Inverter Graph
Stars: ✭ 95 (+179.41%)
Mutual labels:  graphviz
phuml
phUML is a UML diagram generator. It takes arbitrary object oriented PHP code and creates fully blown class diagrams of it.
Stars: ✭ 75 (+120.59%)
Mutual labels:  graphviz
PlantUml-Language-Service
PlantUml Language Service extension for Visual Studio 2017 and 2019
Stars: ✭ 24 (-29.41%)
Mutual labels:  graphviz
ged2site
Create a family tree website from a Gedcom file
Stars: ✭ 25 (-26.47%)
Mutual labels:  graphviz

graphviz-server

Graphviz-server is a lightweight Java based HTTP server that invokes the Graphviz dot binary installed locally. You simply submit a HTTP POST with the dot graph as the request body and the server returns back a graph in SVG, PDF or PNG format. Graphviz-server uses the Graphviz Java API, a Java wrapper that invokes the dot binary using Runtime.exec.

A typical usage is demonstrated in this sequence diagram:

Source: github.com/omerio/graphviz-server

Author: Omer Dawelbeit

Motivation

Graphviz is a powerful open source graph visualization and layout tool, unfortunately no runtime exists for Java, so the only option is to invoke the dot binary from a running Java application. This option might not be possible or practical for many reasons, for example:

  • If you are running your app in a Platform as a Service (PaaS) environment like Google App Engine where you can't install extra software.
  • You can't install the dot binaries in the server running your code, or you need to access Graphviz from more than one server.
  • You don't want your application to have a dependency on the dot binary.

In the cases mentioned above, it does make sense to setup one graphviz-server in a separate environment, and then access it from all your applications that require graphs to be generated.

Live Demo

Here is a demo running on Google App Engine http://dot-graphics1.appspot.com/.

The source code for the demo is here. The graphviz-server is installed on a Google Compute Engine VM (see documentation section below).

Jump start

  • Clone the git repository - git clone https://github.com/omerio/graphviz-server
  • An executable jar with dependencies is included in the dist folder. The port on which the server listens can be configured as a command line parameter to the jar. To change the default port (8080) edit the DotGraphics.sh in the dist directory:
#!/bin/sh
java -jar DotGraphics.jar 8080 > /dev/null 2>&1 &
exit 0
  • If you want to make changes to the code and build your own jar, you need to have Maven installed. Simply run mvn package this will create a jar with dependencies inside the target directory.

Usage

Run the graphviz-server:

./DotGraphics.sh

The graphviz-server uses Log4j for logging. All incoming requests are logged to DotGraphics.log, a sample output is provided here.

To use the Graphviz server simply submit a HTTP POST with the dot graph script set as the request body. Optionally an output type can be specified on the URL for example:

Note: The server will validate that the dot graph starts with digraph G {, if this is not your desired behaviour, you can remove the second check on the HttpDotGraphMessageHandler.java.

Docker

If you are using Docker and would like to run graphviz-server in a Docker container, I've created a Ubuntu Docker image. There is a Dockerfile in the source if you want to build your own image.

Documentation

For more details on the implementation of graphviz-server and a detailed guide on how to set it up on Google Compute Engine VM, see this blog post:

http://omerio.com/2013/11/03/running-a-graphviz-server-on-google-compute-engine/.

License

Open Source (Apache License 2.0)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].