emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[O] Process diagrams with dot and some glue using Org-mode


From: Karl Voit
Subject: [O] Process diagrams with dot and some glue using Org-mode
Date: Wed, 26 Jun 2013 17:23:03 +0200
User-agent: slrn/0.9.9 (Linux)

Hi!

I was looking for a reasonable simple method to define processes and
work-flows within Org-mode. My research did not result in anything
existing I found useful. Therefore, I started to read about dot[1]
and found [2].

I would like to define my diagram with the following two tables: one
for the node definitions and one for the interconnections between
notes. The syntax should be pretty self-explanatory (or at least I
hope so):

  #+name: foobar-node-table
  | *node*     | *label*        | *shape* | *fillcolor* |
  |------------+----------------+---------+-------------|
  | S_start    | start          | ellipse | green       |
  | S_fill     | fill form      |         |             |
  | S_send     | send form      |         |             |
  | S_complete | form complete? | diamond | yellow      |
  | S_do       | do task        |         | red         |
  | S_end      | end            | ellipse |             |
  
  #+name: foobar-graph-table
  |            | S_start | S_fill | S_send | S_complete | S_do | S_end |
  | S_start    |         | -      |        |            |      |       |
  | S_fill     |         |        | >      |            |      |       |
  | S_send     |         |        |        | >          |      |       |
  | S_complete |         | N>     |        |            | Y>   |       |
  | S_do       |         |        |        |            |      | >     |
  | S_end      |         |        |        |            |      |       |

Some (still missing) glue should use these two tables and
automatically generate the dot script:

  #+BEGIN_SRC dot :file ~/test-dot.png :exports results
    digraph {
      //rankdir=LR;
      S_start [label ="start", shape = "ellipse", style=filled, 
fillcolor="green"];
      S_fill [label ="fill form", shape = "box"];
      S_send [label ="send form", shape = "box"];
      S_complete [label ="form complete?", shape = "diamond", style=filled, 
fillcolor="yellow"];
      S_do [label ="do task", shape = "box", style=filled, fillcolor="red"];
      S_end [label ="end", shape = "ellipse"];
      S_start -- S_fill;
      S_fill -> S_send;
      S_send -> S_complete;
      S_complete -> S_do [taillabel = "Y"];
      S_do -> S_end;
      S_complete -> S_fill [taillabel = "N"];
    }
  #+END_SRC

The question is: is somebody with decent ELISP knowledge able to
implement the missing method? :-)

I (not an ELISP hacker) would have to use Python and write a table
parsing class which will get too complicated for my taste :-(
However, my guess is that this could be implemented in ELISP with
much less effort.

I would be happy to document this method and provide it on Worg. In
my opinion, this would be very handy for many Org-mode users.

Thanks!

  1. https://en.wikipedia.org/wiki/DOT_language
  2. http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-dot.html
-- 
mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
       > get Memacs from https://github.com/novoid/Memacs <

https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github




reply via email to

[Prev in Thread] Current Thread [Next in Thread]