Skip to main content

Crate libpetri_export

Crate libpetri_export 

Source
Expand description

§libpetri-export — DOT/Graphviz Export Pipeline

Converts a PetriNet into a DOT string for Graphviz rendering.

§Architecture

The pipeline has four layers, separating concerns cleanly:

PetriNet ──► map_to_graph() ──► Graph ──► render_dot() ──► DOT string
             (knows Petri nets)           (format-agnostic)
  1. Styles (styles) — Color/shape constants from the shared spec
  2. Graph model (graph) — Format-agnostic typed graph (nodes, edges, clusters)
  3. Mapper (mapper) — Petri net → Graph (place classification, arc styling)
  4. Renderer (dot_renderer) — Graph → DOT string (no Petri net knowledge)

§Quick Start

use libpetri_core::place::Place;
use libpetri_core::transition::Transition;
use libpetri_core::petri_net::PetriNet;
use libpetri_core::input::one;
use libpetri_core::output::out_place;
use libpetri_core::action::fork;
use libpetri_export::dot_exporter::dot_export;

let p1 = Place::<i32>::new("input");
let p2 = Place::<i32>::new("output");

let t = Transition::builder("process")
    .input(one(&p1))
    .output(out_place(&p2))
    .action(fork())
    .build();

let net = PetriNet::builder("example").transition(t).build();
let dot = dot_export(&net, None);

assert!(dot.contains("digraph"));

§Example Output

ExportExample p_processing processing t_complete complete [500, ∞)ms p_processing->t_complete p_errors errors p_config config t_validate validate p_config->t_validate read p_input input p_input->t_validate p_done done t_validate->p_processing t_complete->p_errors errors t_complete->p_done done

§Configuration

DotConfig controls rendering:

FieldDefaultEffect
directionTopToBottomGraph layout direction
show_typestrueDisplay place token types
show_intervalstrueDisplay timing intervals on transitions
show_prioritytrueDisplay priority values
environment_places{}Place names styled as external event sources

§Visual Vocabulary

  • Green circles — start places (no incoming arcs)
  • Blue circles — end places (no outgoing arcs)
  • Red dashed circles — environment places (external event injection)
  • Solid arrows — input/output arcs
  • Dashed arrows — read arcs
  • Dot-headed arrows — inhibitor arcs
  • Double arrows — reset arcs

Modules§

dot_exporter
dot_renderer
graph
mapper
styles