digraph g { graph [compound = true]; //presentation splines = true; overlap = false; rankdir = TB; subgraph cluster_upstream { label="Upstream Systems"; upstream_databases [label="Databases", shape="cylinder"] upstream_filesystems [label="Filesystems", shape="tab"] upstream_generators [label="Generators"] upstream_queues [label="Queues", shape="trapezium"] } subgraph cluster_streams { label="Apache Streams Pipelines"; providers [label="Providers"] persistReaders [label="PersistReaders"] processors [label="Processors"] persistWriters [label="PersistWriters"] } subgraph cluster_downstream { label="Downstream Systems"; downstream_databases [label="Databases", shape="cylinder"] downstream_filesystems [label="Filesystems", shape="tab"] downstream_queues [label="Queues", shape="trapezium"] } upstream_generators -> providers upstream_databases -> persistReaders upstream_filesystems -> persistReaders upstream_queues -> persistReaders providers,persistReaders -> processors processors -> processors processors -> persistWriters persistWriters -> downstream_databases persistWriters -> downstream_filesystems persistWriters -> downstream_queues } |