Fesa Instance Graph Visualization
--- UNDER CONSTRUCTION ---
fesa-instance-graph
fesa-instance-graph
is a tool that creates dot graphs from fesa xml files. Given a fesa class name, frontend and nomen, the tool tries to find the corresponding zip file on the fesa web server (the file is copied there when a deploy unit is released), parses the class design and instance file, and creates a dot graph. By default the tool creates a dot file (
out.dot
) and a png image (
out.png
).
There are several predefined layouts (see below). The below image shows an example generated via
fesa-instance-graph MASP asl342 ZMA_ZS --layout=all
. The resulting image is not very useful to get clear picture. The
all
layout is rather to display all information read from the xml files. Other layouts use a subset of nodes and edges to generate the output graph.
For details on the dot language refer to
https://graphviz.org/doc/info/lang.html.
fesa-instance-graph
uses the dot layout engine to create the image. In principle different layout engines (
https://graphviz.org/docs/layouts/) can be used to generate the image from the dot file. However, not all dot attributes (
https://graphviz.org/doc/info/attrs.html) are supported by all engines and the generated dot file is not necessarily compatible with other engines.
Usage
Example usages:
fesa-instance-graph PowerSupply scuxl0020 GS01KM2DV --layout=all
fesa-instance-graph PowerSupply scuxl0020 GS01KM2DV --layout=none-cfg
fesa-instance-graph PowerSupply scuxl0020 GS01KM2DV --layout=rainbow-cfg
fesa-instance-graph PowerSupply scuxl0020 GS01KM2DV --layout=rainbow-server-actions
fesa-instance-graph PowerSupply scuxl0020 GS01KM2DV --layout=rainbow-rt
fesa-instance-graph PowerSupply scuxl0020 GS01KM2DV --layout=properties
# urls layout works only with svg output
fesa-instance-graph PowerSupply scuxl0020 GS01KM2DV --layout=urls --outfile=out.svg
Cluster
As shown in the image above the nodes in the output graph are grouped into cluster. The main difference between layouts is what cluster are used to generate the graph.
-
server-actions
-
server-actions
can trigger event-sources
-
event-sources
-
event-sources
fire concrete events
-
events
- some concrete events are listed in the design with their event-source. Others only appear implicitly in the instance file when used in a event-configuration. For example when a timer event with period 500 is used in a event-configuration then an event node with name Timer_500 is added to the graph.
-
event-mapping
- event-configurations in the
event-mapping
map concrete events
to logical-events
-
logical-events
-
scheduling-units
-
scheduling-units
map logical-events
to rt-actions
-
rt-actions
-
rt-actions
can notify properties
and trigger event-sources
-
properties
- properties can have set
server-actions
and get server-actions
More
- what clusters are used to generate the graph can be customized via
--cluster
- there are more arguments to customize how cluster are displayed. See
--expert_help
.
Predefined layouts: --layout
There are several predefined layouts:
- all: Displays all nodes and edges that the tool can currently display.
- none-cfg: Highlights non-configured events and the rt-actions they would trigger
- rainbow-x: "Rainbow" layouts use a color code for easier tracking of connections between nodes in the graph. All nodes in one cluster get a color assigned and this color is displayed on all nodes that are connected to the respective node via edges either in forward direction or backwards (rainbow-rt)
- rainbow-cfg: helps to identify rt-actions triggered by event-configurations
- rainbow-rt: helps to find all nodes connected to rt-actions
- properties: displays all properties with their set and get actions and the rt-actions that notify the properties
--
TobiasHabermann - 22 Feb 2022