digraph R { node [shape=rectangle]; {rank=same f1_A f1_B f1_C} {rank=same f2_A f2_B f2_C} {rank=same f3_A f3_B f3_C} f1_A [label="taskflow1 on token 1"]; f2_A [label="taskflow1 on token 2"]; f3_A [label="taskflow1 on token 3"]; f1_B [label="taskflow2 on token 1"]; f2_B [label="taskflow2 on token 2"]; f3_B [label="taskflow2 on token 3"]; f1_C [label="taskflow3 on token 1"]; f2_C [label="taskflow3 on token 2"]; f3_C [label="taskflow3 on token 3"]; f1_A->f2_A->f3_A; f1_B->f2_B->f3_B; f1_C->f2_C->f3_C; f1_A->f1_B->f1_C; f2_A->f2_B->f2_C; f3_A->f3_B->f3_C; }