digraph finite_state_machine { label = "IHE Product Registry State Diagram" rankdir=LR; size="10"; fontname ="Arial" fontsize = 30 node [shape = circle fontname = "Arial"]; state1 [label="IIS\ncreated" style = "filled" penwidth = 1 fillcolor = "lightgrey" fixedsize=true width=1.5 ] state2 [label="IIS\npublished"style = "filled" penwidth = 1 fillcolor = "green" fixedsize=true width=1.5] state3 [label="IIS\nverified" style = "filled" penwidth = 1 fillcolor = "green" fixedsize=true width=1.5] state4 [label="unmatch\ncounter (M)" style = "filled" penwidth = 1 fillcolor = "lightblue" fixedsize=true width=1.2] state5 [label="unreachable\ncounter (N)" style = "filled" penwidth = 1 fillcolor = "lightblue" fixedsize=true width=1.2] state6 [label="IIS\nunreachable"style = "filled" penwidth = 1 fillcolor = "lightgrey" fixedsize=true width=1.5] state7 [label="IIS\nunmatched"style = "filled" penwidth = 1 fillcolor = "green" fixedsize=true width=1.5] state8 [label="IIS\nrejected"style = "filled" penwidth = 1 fillcolor = "lightgrey" fixedsize=true width=1.5] transient [label="transient" shape = box style = "filled" penwidth = 1 fillcolor = "lightblue" fixedsize=true width=1] visible [label="IIS visible" shape = box style = "filled" penwidth = 1 fillcolor = "green" fixedsize=true width=1] hidden [label="IIS hidden" shape = box style = "filled" penwidth = 1 fillcolor = "lightgrey" fixedsize=true width=1] hidden2 [label="" penwidth = 1 fixedsize=true width=.5] hidden3 [label="" penwidth = 1 fixedsize=true width=.5] hidden2 -> hidden3 [ label = "PR admin actions" fontcolor ="blue" color="blue"]; hidden2 -> hidden3 [ label = "PR crawler job" fontcolor ="red" color="red"]; hidden2 -> hidden3 [ label = "PR user"]; state1 -> state1 [ label = "0 - Update summary, \nAIPO, URL, etc..." ]; state8 -> state8 [ label = "0 - Update summary, \nAIPO, URL, etc..." ]; state3 -> state3 [ label = "0 - Update summary, \nAIPO, URL, etc..." ]; state2 -> state2 [ label = "0 - Update summary, \nAIPO, URL, etc..." ]; state6 -> state6 [ label = "0 - Update summary, \nAIPO, URL, etc..." ]; state7 -> state7 [ label = "0 - Update summary, \nAIPO, URL, etc..." ]; state1 -> state2 [ label = "1 - Publication request" ]; state8 -> state2 [ label = "1 - Publication request" ]; state2 -> state3 [ label = "2 - IIS manual \nverification" fontcolor ="blue" color="blue"]; state7 -> state3 [ label = "2 - IIS manual \nverification" fontcolor ="blue" color="blue"]; state2 -> state3 [ label = "3 - IIS auto verified" fontcolor ="red" color="red"]; state7 -> state3 [ label = "3 - IIS auto verified" fontcolor ="red" color="red"]; state2 -> state8 [ label = "4 - Reject IIS" fontcolor ="blue" color="blue"]; state7 -> state8 [ label = "4 - Reject IIS" fontcolor ="blue" color="blue"]; state3 -> state5 [ label = "5 - IIS URL unreachable (N=N+1)" fontcolor ="red" color="red"]; state2 -> state5 [ label = "5 - IIS URL unreachable (N=N+1)" fontcolor ="red" color="red"]; state5 -> state6 [ label = "6 - N > threshold" fontcolor ="red" color="red"]; state5 -> state3 [ label = "7 - N < threshold" fontcolor ="red" color="red"]; state5 -> state2 [ label = "7 - N < threshold" fontcolor ="red" color="red"]; state3 -> state4 [ label = "8 - IIS modified online (M=M+1)" fontcolor ="red" color="red"] state4 -> state7 [ label = "9 - M > threshold" fontcolor ="red" color="red"] state4 -> state3 [ label = "10 - M < threshold" fontcolor ="red" color="red"] state2 -> state1 [ label = "11 - IIS modified in PR"] state3 -> state1 [ label = "11 - IIS modified in PR"] state6 -> state1 [ label = "11 - IIS modified in PR"] state7 -> state1 [ label = "11 - IIS modified in PR"] state8 -> state1 [ label = "11 - IIS modified in PR"] state4 -> state4 [ label = "12 - Send\nemail\nnotification?" fontcolor ="red" color="red"] state5 -> state5 [ label = "13 - Send\nemail\nnotification?" fontcolor ="red" color="red"] state6 -> state3 [ label = "14 - IIS reachable" fontcolor ="red" color="red"] state2 -> state2 [ label = "15 - Crawler" fontcolor ="red" color="red"]; state3 -> state3 [ label = "15 - Crawler" fontcolor ="red" color="red"]; state6 -> state6 [ label = "15 - Crawler" fontcolor ="red" color="red"]; state7 -> state7 [ label = "15 - Crawler" fontcolor ="red" color="red"]; }