首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有影响的情况下添加边缘?

如何在没有影响的情况下添加边缘?
EN

Stack Overflow用户
提问于 2022-11-30 18:36:56
回答 1查看 39关注 0票数 0

我有一个图形(点),它被渲染得很好。现在,我想添加一些边,这应该不会影响到图的其余部分。理想情况下,附加的边应该画成节点之间的直线。这些边缘应该穿过节点后面的节点。

我试过constraint=false,但这不会产生直线。

增加的一行是最后一条灰色的。

代码语言:javascript
复制
digraph K3LS {
  rankdir=TB;
  outputorder="edgesfirst";
  // States
  Start [shape=plain color="#cc0000" margin=0 label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>Start</td></tr>
    <tr>
      <td port='onScan' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onScan</font></td>
    </tr>
  </table>>];
  ScanBarcode [shape=plain color="#cc0000" margin=0 label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>ScanBarcode</td></tr>
    <tr>
      <td port='onSerno' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSerno</font></td>
      <td port='onScan' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onScan</font></td>
    </tr>
  </table>>];
  HaveSerno [shape=plain color="#cc0000" margin=0 label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>HaveSerno</td></tr>
    <tr>
      <td port='onScan' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onScan</font></td>
      <td port='onSearch' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSearch</font></td>
    </tr>
  </table>>];
  SearchingIssue [shape=plain color="#cc0000" margin=0 label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>SearchingIssue</td></tr>
    <tr>
      <td port='onSuccess' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSuccess</font></td>
      <td port='onError' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onError</font></td>
    </tr>
  </table>>];
  HaveIssue [shape=plain color="#cc0000" margin=0 label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>HaveIssue</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  IssueError [shape=plain color="#cc0000" margin=0 label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>IssueError</td></tr>
    <tr>
      <td port='onScan' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onScan</font></td>
    </tr>
  </table>>];
  SearchingRevocation [shape=plain color="#cc0000" margin=0 label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>SearchingRevocation</td></tr>
    <tr>
      <td port='onSuccess' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSuccess</font></td>
      <td port='onError' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onError</font></td>
    </tr>
  </table>>];
  NeedRevocation [shape=plain color="#cc0000" margin=0 label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>NeedRevocation</td></tr>
    <tr>
      <td port='onRevoke' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onRevoke</font></td>
      <td port='onScan' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onScan</font></td>
      <td port='onSearch' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSearch</font></td>
    </tr>
  </table>>];
  RevokingCert [shape=plain color="#cc0000" margin=0 label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>RevokingCert</td></tr>
    <tr>
      <td port='onSuccess' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSuccess</font></td>
      <td port='onError' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onError</font></td>
    </tr>
  </table>>];
  HaveRevocation [shape=plain color="#cc0000" margin=0 label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>HaveRevocation</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  SearchingAffirmation [shape=plain color="#cc0000" margin=0 label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>SearchingAffirmation</td></tr>
    <tr>
      <td port='onSuccess' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSuccess</font></td>
      <td port='onError' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onError</font></td>
    </tr>
  </table>>];
  NeedAffirmation [shape=plain color="#cc0000" margin=0 label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>NeedAffirmation</td></tr>
    <tr>
      <td port='onAffirm' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onAffirm</font></td>
      <td port='onScan' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onScan</font></td>
      <td port='onSearch' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSearch</font></td>
    </tr>
  </table>>];
  AffirmingReturn [shape=plain color="#cc0000" margin=0 label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>AffirmingReturn</td></tr>
    <tr>
      <td port='onSuccess' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSuccess</font></td>
      <td port='onError' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onError</font></td>
    </tr>
  </table>>];
  HaveAffirmation [shape=plain color="#cc0000" margin=0 label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>HaveAffirmation</td></tr>
    <tr>
      <td port='onScan' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onScan</font></td>
    </tr>
  </table>>];
  // Composables
  ShowUsage [shape=plain color="#aa00ee" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>ShowUsage</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  ShowBarcodeScanner [shape=plain color="#aa00ee" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>ShowBarcodeScanner</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  ShowSerno [shape=plain color="#aa00ee" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'><u>ShowSerno</u></td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  SearchIssue [shape=plain color="#aa00ee" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>SearchIssue</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  ShowIssueError [shape=plain color="#aa00ee" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>ShowIssueError</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  ShowIssue [shape=plain color="#aa00ee" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'><u>ShowIssue</u></td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  SearchRevocation [shape=plain color="#aa00ee" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>SearchRevocation</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  ShowRevocation [shape=plain color="#aa00ee" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'><u>ShowRevocation</u></td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  RevokeCert [shape=plain color="#aa00ee" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>RevokeCert</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  SearchAffirmation [shape=plain color="#aa00ee" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>SearchAffirmation</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  AffirmReturn [shape=plain color="#aa00ee" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>AffirmReturn</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  ShowAffirmation [shape=plain color="#aa00ee" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'><u>ShowAffirmation</u></td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  // Coroutines
  BarcodeAnalyzer [shape=plain color="#0000cc" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>coroutine</font></td></tr>
    <tr><td colspan='4' border='1' color="#0000cc" bgcolor="#eeeeff" port='_' cellpadding='4'>BarcodeAnalyzer</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  JiraSearchIssue [shape=plain color="#0000cc" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>coroutine</font></td></tr>
    <tr><td colspan='4' border='1' color="#0000cc" bgcolor="#eeeeff" port='_' cellpadding='4'>JiraSearchIssue</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  JiraSearchRevocation [shape=plain color="#0000cc" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>coroutine</font></td></tr>
    <tr><td colspan='4' border='1' color="#0000cc" bgcolor="#eeeeff" port='_' cellpadding='4'>JiraSearchRevocation</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  JiraSearchAffirmation [shape=plain color="#0000cc" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>coroutine</font></td></tr>
    <tr><td colspan='4' border='1' color="#0000cc" bgcolor="#eeeeff" port='_' cellpadding='4'>JiraSearchAffirmation</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  JiraRevokeCert [shape=plain color="#0000cc" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>coroutine</font></td></tr>
    <tr><td colspan='4' border='1' color="#0000cc" bgcolor="#eeeeff" port='_' cellpadding='4'>JiraRevokeCert</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  JiraAffirmReturn [shape=plain color="#0000cc" margin=0 label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>coroutine</font></td></tr>
    <tr><td colspan='4' border='1' color="#0000cc" bgcolor="#eeeeff" port='_' cellpadding='4'>JiraAffirmReturn</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>];
  // Calls aiming a Composable
  { rank=same; Start ShowUsage }
  Start:_:e -> ShowUsage:_:w [arrowhead=onormal minlen=2];
  { rank=same; ScanBarcode ShowBarcodeScanner }
  ScanBarcode:_:e -> ShowBarcodeScanner:_:w [arrowhead=onormal minlen=2];
  { rank=same; HaveSerno ShowSerno }
  HaveSerno:_:e -> ShowSerno:_:w [arrowhead=onormal minlen=2];
  { rank=same; SearchingIssue SearchIssue }
  SearchingIssue:_:e -> SearchIssue:_:w [arrowhead=onormal minlen=2];
  { rank=same; IssueError ShowIssueError }
  IssueError:_:e -> ShowIssueError:_:w [arrowhead=onormal minlen=2];
  { rank=same; HaveIssue ShowIssue }
  HaveIssue:_:e -> ShowIssue:_:w [arrowhead=onormal minlen=2];
  { rank=same; SearchingRevocation SearchRevocation }
  SearchingRevocation:_:e -> SearchRevocation:_:w [arrowhead=onormal minlen=2];
  { rank=same; RevokingCert RevokeCert }
  RevokingCert:_:e -> RevokeCert:_:w [arrowhead=onormal minlen=2];
  { rank=same; HaveRevocation ShowRevocation }
  HaveRevocation:_:e -> ShowRevocation:_:w [arrowhead=onormal minlen=2];
  { rank=same; SearchingAffirmation SearchAffirmation }
  SearchingAffirmation:_:e -> SearchAffirmation:_:w [arrowhead=onormal minlen=2];
  { rank=same; AffirmingReturn AffirmReturn }
  AffirmingReturn:_:e -> AffirmReturn:_:w [arrowhead=onormal minlen=2];
  { rank=same; HaveAffirmation ShowAffirmation }
  HaveAffirmation:_:e -> ShowAffirmation:_:w [arrowhead=onormal minlen=2];
  // Launches aiming a Coroutine
  { rank=same; ShowBarcodeScanner BarcodeAnalyzer }
  ShowBarcodeScanner:_:e -> BarcodeAnalyzer:_:w [arrowhead=odiamond minlen=2];
  { rank=same; SearchIssue JiraSearchIssue }
  SearchIssue:_:e -> JiraSearchIssue:_:w [arrowhead=odiamond minlen=2];
  { rank=same; SearchRevocation JiraSearchRevocation }
  SearchRevocation:_:e -> JiraSearchRevocation:_:w [arrowhead=odiamond minlen=2];
  { rank=same; RevokeCert JiraRevokeCert }
  RevokeCert:_:e -> JiraRevokeCert:_:w [arrowhead=odiamond minlen=2];
  { rank=same; SearchAffirmation JiraSearchAffirmation }
  SearchAffirmation:_:e -> JiraSearchAffirmation:_:w [arrowhead=odiamond minlen=2];
  { rank=same; AffirmReturn JiraAffirmReturn }
  AffirmReturn:_:e -> JiraAffirmReturn:_:w [arrowhead=odiamond minlen=2];
  // Transitions aiming a State
  Start:onScan:s -> ScanBarcode [arrowhead=normal];
  ScanBarcode:onSerno:s -> HaveSerno [arrowhead=normal];
  ScanBarcode:onScan:s -> Start [arrowhead=normal];
  HaveSerno:onSearch:s -> SearchingIssue [arrowhead=normal];
  SearchingIssue:onError:s -> IssueError [arrowhead=normal];
  SearchingIssue:onSuccess:s -> HaveIssue [arrowhead=normal];
  HaveIssue:_:s -> SearchingRevocation [arrowhead=normal];
  SearchingRevocation:onSuccess:s -> HaveRevocation [arrowhead=normal];
  SearchingRevocation:onError:s -> NeedRevocation [arrowhead=normal];
  NeedRevocation:onRevoke:s -> RevokingCert [arrowhead=normal];
  RevokingCert:onSuccess:s -> HaveRevocation [arrowhead=normal];
  RevokingCert:onError:s -> NeedRevocation [arrowhead=normal];
  HaveRevocation:_:s -> SearchingAffirmation [arrowhead=normal];
  SearchingAffirmation:onSuccess:s -> HaveAffirmation [arrowhead=normal];
  SearchingAffirmation:onError:s -> NeedAffirmation [arrowhead=normal];
  NeedAffirmation:onAffirm:s -> AffirmingReturn [arrowhead=normal];
  AffirmingReturn:onSuccess:s -> HaveAffirmation [arrowhead=normal];
  AffirmingReturn:onError:s -> NeedAffirmation [arrowhead=normal];
  
  // Additional line without impact.
  HaveSerno -> IssueError [constraint=false color="#aaaaaa" dir=back arrowtail=onormal style=dashed];
}
EN

回答 1

Stack Overflow用户

发布于 2022-11-30 21:18:56

“最简单”的方法是在几个步骤中做到这一点。

  • 从输入
  • 中删除新的边缘运行以下命令dot myfile.gv >myfile.dot #这将列出所有节点和“旧”边缘
  • 编辑myfile.dot,并添加新的边缘(在文件末尾,但在最后一个大括号内)
  • run neato -n2 -Tpng myfile.dot >myfile.png #添加“新”边缘,其中splines=false (neato默认值)H 210F 211

有关更多信息,请参见http://www.graphviz.org/faq/#FaqDotWithCoords

这是我称为myfile.dot的文件。请注意,除了手工编辑的节点和边缘之外,它具有所有节点和边缘的位置数据。

代码语言:javascript
复制
digraph K3LS {
    graph [bb="0,0,598.5,1147",
        outputorder=edgesfirst,
        rankdir=TB
    ];
    node [label="\N"];
    {
        graph [rank=same];
        Start   [color="#cc0000",
            height=0.76389,
            label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>Start</td></tr>
    <tr>
      <td port='onScan' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onScan</font></td>
    </tr>
  </table>>,
            margin=0,
            pos="236,1119.5",
            shape=plain,
            width=0.66667];
        ShowUsage   [color="#aa00ee",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>ShowUsage</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="338,1119.5",
            shape=plain,
            width=1.1806];
    }
    {
        graph [rank=same];
        ScanBarcode [color="#cc0000",
            height=0.76389,
            label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>ScanBarcode</td></tr>
    <tr>
      <td port='onSerno' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSerno</font></td>
      <td port='onScan' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onScan</font></td>
    </tr>
  </table>>,
            margin=0,
            pos="225,1028.5",
            shape=plain,
            width=1.3056];
        ShowBarcodeScanner  [color="#aa00ee",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>ShowBarcodeScanner</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="378,1028.5",
            shape=plain,
            width=1.9444];
    }
    {
        graph [rank=same];
        HaveSerno   [color="#cc0000",
            height=0.76389,
            label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>HaveSerno</td></tr>
    <tr>
      <td port='onScan' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onScan</font></td>
      <td port='onSearch' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSearch</font></td>
    </tr>
  </table>>,
            margin=0,
            pos="202,937.5",
            shape=plain,
            width=1.1528];
        ShowSerno   [color="#aa00ee",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'><u>ShowSerno</u></td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="321,937.5",
            shape=plain,
            width=1.1528];
    }
    {
        graph [rank=same];
        SearchingIssue  [color="#cc0000",
            height=0.76389,
            label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>SearchingIssue</td></tr>
    <tr>
      <td port='onSuccess' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSuccess</font></td>
      <td port='onError' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onError</font></td>
    </tr>
  </table>>,
            margin=0,
            pos="217,846.5",
            shape=plain,
            width=1.4444];
        SearchIssue [color="#aa00ee",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>SearchIssue</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="347,846.5",
            shape=plain,
            width=1.1806];
    }
    {
        graph [rank=same];
        IssueError  [color="#cc0000",
            height=0.76389,
            label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>IssueError</td></tr>
    <tr>
      <td port='onScan' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onScan</font></td>
    </tr>
  </table>>,
            margin=0,
            pos="321,755.5",
            shape=plain,
            width=1.0972];
        ShowIssueError  [color="#aa00ee",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>ShowIssueError</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="450,755.5",
            shape=plain,
            width=1.5];
    }
    {
        graph [rank=same];
        HaveIssue   [color="#cc0000",
            height=0.76389,
            label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>HaveIssue</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="110,755.5",
            shape=plain,
            width=1.0972];
        ShowIssue   [color="#aa00ee",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'><u>ShowIssue</u></td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="224,755.5",
            shape=plain,
            width=1.0972];
    }
    {
        graph [rank=same];
        SearchingRevocation [color="#cc0000",
            height=0.76389,
            label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>SearchingRevocation</td></tr>
    <tr>
      <td port='onSuccess' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSuccess</font></td>
      <td port='onError' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onError</font></td>
    </tr>
  </table>>,
            margin=0,
            pos="111,664.5",
            shape=plain,
            width=1.9167];
        SearchRevocation    [color="#aa00ee",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>SearchRevocation</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="275,664.5",
            shape=plain,
            width=1.6528];
    }
    {
        graph [rank=same];
        RevokingCert    [color="#cc0000",
            height=0.76389,
            label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>RevokingCert</td></tr>
    <tr>
      <td port='onSuccess' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSuccess</font></td>
      <td port='onError' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onError</font></td>
    </tr>
  </table>>,
            margin=0,
            pos="136,482.5",
            shape=plain,
            width=1.3611];
        RevokeCert  [color="#aa00ee",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>RevokeCert</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="263,482.5",
            shape=plain,
            width=1.1806];
    }
    {
        graph [rank=same];
        HaveRevocation  [color="#cc0000",
            height=0.76389,
            label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>HaveRevocation</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="86,391.5",
            shape=plain,
            width=1.5694];
        ShowRevocation  [color="#aa00ee",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'><u>ShowRevocation</u></td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="235,391.5",
            shape=plain,
            width=1.5694];
    }
    {
        graph [rank=same];
        SearchingAffirmation    [color="#cc0000",
            height=0.76389,
            label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>SearchingAffirmation</td></tr>
    <tr>
      <td port='onSuccess' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSuccess</font></td>
      <td port='onError' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onError</font></td>
    </tr>
  </table>>,
            margin=0,
            pos="87,300.5",
            shape=plain,
            width=1.9722];
        SearchAffirmation   [color="#aa00ee",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>SearchAffirmation</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="255,300.5",
            shape=plain,
            width=1.7083];
    }
    {
        graph [rank=same];
        AffirmingReturn [color="#cc0000",
            height=0.76389,
            label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>AffirmingReturn</td></tr>
    <tr>
      <td port='onSuccess' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSuccess</font></td>
      <td port='onError' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onError</font></td>
    </tr>
  </table>>,
            margin=0,
            pos="115,118.5",
            shape=plain,
            width=1.5972];
        AffirmReturn    [color="#aa00ee",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'>AffirmReturn</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="256,118.5",
            shape=plain,
            width=1.3333];
    }
    {
        graph [rank=same];
        HaveAffirmation [color="#cc0000",
            height=0.76389,
            label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>HaveAffirmation</td></tr>
    <tr>
      <td port='onScan' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onScan</font></td>
    </tr>
  </table>>,
            margin=0,
            pos="58,27.5",
            shape=plain,
            width=1.6111];
        ShowAffirmation [color="#aa00ee",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>composable</font></td></tr>
    <tr><td colspan='4' border='1' color="#aa00ee" bgcolor="#ffeeff" port='_' cellpadding='4'><u>ShowAffirmation</u></td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="210,27.5",
            shape=plain,
            width=1.625];
    }
    {
        graph [rank=same];
        ShowBarcodeScanner;
        BarcodeAnalyzer [color="#0000cc",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>coroutine</font></td></tr>
    <tr><td colspan='4' border='1' color="#0000cc" bgcolor="#eeeeff" port='_' cellpadding='4'>BarcodeAnalyzer</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="541,1028.5",
            shape=plain,
            width=1.5972];
    }
    {
        graph [rank=same];
        SearchIssue;
        JiraSearchIssue [color="#0000cc",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>coroutine</font></td></tr>
    <tr><td colspan='4' border='1' color="#0000cc" bgcolor="#eeeeff" port='_' cellpadding='4'>JiraSearchIssue</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="478,846.5",
            shape=plain,
            width=1.4583];
    }
    {
        graph [rank=same];
        SearchRevocation;
        JiraSearchRevocation    [color="#0000cc",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>coroutine</font></td></tr>
    <tr><td colspan='4' border='1' color="#0000cc" bgcolor="#eeeeff" port='_' cellpadding='4'>JiraSearchRevocation</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="439,664.5",
            shape=plain,
            width=1.9167];
    }
    {
        graph [rank=same];
        RevokeCert;
        JiraRevokeCert  [color="#0000cc",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>coroutine</font></td></tr>
    <tr><td colspan='4' border='1' color="#0000cc" bgcolor="#eeeeff" port='_' cellpadding='4'>JiraRevokeCert</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="394,482.5",
            shape=plain,
            width=1.4583];
    }
    {
        graph [rank=same];
        SearchAffirmation;
        JiraSearchAffirmation   [color="#0000cc",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>coroutine</font></td></tr>
    <tr><td colspan='4' border='1' color="#0000cc" bgcolor="#eeeeff" port='_' cellpadding='4'>JiraSearchAffirmation</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="423,300.5",
            shape=plain,
            width=1.9722];
    }
    {
        graph [rank=same];
        AffirmReturn;
        JiraAffirmReturn    [color="#0000cc",
            height=0.73611,
            label=<
  <table border='0' cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>coroutine</font></td></tr>
    <tr><td colspan='4' border='1' color="#0000cc" bgcolor="#eeeeff" port='_' cellpadding='4'>JiraAffirmReturn</td></tr>
    <tr><td color='#ffffff00' cellpadding='1'><font point-size='8'> </font></td></tr>  </table>>,
            margin=0,
            pos="397,118.5",
            shape=plain,
            width=1.5972];
    }
    Start:onScan:s -> ScanBarcode   [arrowhead=normal,
        pos="e,228.63,1056.2 231,1093.5 231,1084.7 230.43,1075.2 229.64,1066.3"];
    Start:_:e -> ShowUsage:_:w  [arrowhead=onormal,
        minlen=2,
        pos="e,297,1122.5 258,1122.5 271.41,1122.5 277.04,1122.5 286.92,1122.5"];
    ScanBarcode:onScan:s -> Start   [arrowhead=normal,
        pos="e,255.45,1091.9 242,1002.5 242,989.16 262.73,993.91 272,1003.5 288.22,1020.3 278.03,1033.5 272,1056 269.53,1065.2 265.33,1074.5 \
260.65,1083"];
    ScanBarcode:onSerno:s -> HaveSerno  [arrowhead=normal,
        pos="e,202,965.28 202,1002.5 202,993.72 202,984.25 202,975.37"];
    ScanBarcode:_:e -> ShowBarcodeScanner:_:w   [arrowhead=onormal,
        minlen=2,
        pos="e,309,1031.5 270,1031.5 283.41,1031.5 289.04,1031.5 298.92,1031.5"];
    HaveSerno:onSearch:s -> SearchingIssue  [arrowhead=normal,
        pos="e,217,874.28 217,911.5 217,902.72 217,893.25 217,884.37"];
    HaveSerno:_:e -> ShowSerno:_:w  [arrowhead=onormal,
        minlen=2,
        pos="e,281,940.5 242,940.5 255.41,940.5 261.04,940.5 270.92,940.5"];
    SearchingIssue:onSuccess:s -> HaveIssue [arrowhead=normal,
        pos="e,149.56,770.09 193,820.5 193,799.86 176.7,784.94 158.55,774.73"];
    SearchingIssue:onError:s -> IssueError  [arrowhead=normal,
        pos="e,281.44,778.55 238,820.5 238,810.09 254.59,796.19 272.94,784.01"];
    SearchingIssue:_:e -> SearchIssue:_:w   [arrowhead=onormal,
        minlen=2,
        pos="e,306,849.5 267,849.5 280.41,849.5 286.04,849.5 295.92,849.5"];
    HaveIssue:_:s -> SearchingRevocation    [arrowhead=normal,
        pos="e,111,692.19 111,744.5 111,730.76 111,715.67 111,702.39"];
    HaveIssue:_:e -> ShowIssue:_:w  [arrowhead=onormal,
        minlen=2,
        pos="e,186,758.5 148,758.5 160.93,758.5 166.44,758.5 175.89,758.5"];
    IssueError:_:e -> ShowIssueError:_:w    [arrowhead=onormal,
        minlen=2,
        pos="e,397,758.5 359,758.5 371.93,758.5 377.44,758.5 386.89,758.5"];
    NeedRevocation  [color="#cc0000",
        height=0.76389,
        label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>NeedRevocation</td></tr>
    <tr>
      <td port='onRevoke' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onRevoke</font></td>
      <td port='onScan' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onScan</font></td>
      <td port='onSearch' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSearch</font></td>
    </tr>
  </table>>,
        margin=0,
        pos="156,573.5",
        shape=plain,
        width=1.5694];
    SearchingRevocation:onError:s -> NeedRevocation [arrowhead=normal,
        pos="e,143.79,601.02 136,638.5 136,629.28 137.91,619.64 140.56,610.72"];
    SearchingRevocation:onSuccess:s -> HaveRevocation   [arrowhead=normal,
        pos="e,81.824,419.19 78,638.5 78,556.94 72.812,536.39 78,455 78.534,446.62 79.468,437.64 80.513,429.18"];
    SearchingRevocation:_:e -> SearchRevocation:_:w [arrowhead=onormal,
        minlen=2,
        pos="e,217,667.5 178,667.5 191.41,667.5 197.04,667.5 206.92,667.5"];
    NeedRevocation:onRevoke:s -> RevokingCert   [arrowhead=normal,
        pos="e,126.84,510.27 121,547.5 121,538.46 122.44,528.89 124.42,519.98"];
    RevokingCert:onError:s -> NeedRevocation    [arrowhead=normal,
        pos="e,171.54,545.72 156,456.5 156,443.6 176.04,448.22 185,457.5 201.21,474.28 190.03,487.21 185,510 183.03,518.91 179.66,528.06 175.9,\
536.52"];
    RevokingCert:onSuccess:s -> HaveRevocation  [arrowhead=normal,
        pos="e,102.79,419.19 113,456.5 113,447.02 110.46,437.34 106.93,428.46"];
    RevokingCert:_:e -> RevokeCert:_:w  [arrowhead=onormal,
        minlen=2,
        pos="e,222,485.5 183,485.5 196.41,485.5 202.04,485.5 211.92,485.5"];
    HaveRevocation:_:s -> SearchingAffirmation  [arrowhead=normal,
        pos="e,87,328.19 87,380.5 87,366.76 87,351.67 87,338.39"];
    HaveRevocation:_:e -> ShowRevocation:_:w    [arrowhead=onormal,
        minlen=2,
        pos="e,180,394.5 141,394.5 154.41,394.5 160.04,394.5 169.92,394.5"];
    NeedAffirmation [color="#cc0000",
        height=0.76389,
        label=<
  <table border='1' bgcolor="#ffeeee" cellborder='1'>
    <tr><td colspan='4' border='0' align='right' cellpadding='0' cellspacing='10'><font point-size='6'>state</font></td></tr>
    <tr><td colspan='4' border='1' color="#ffeeee" bgcolor="#ffeeee" port='_' cellpadding='4'>NeedAffirmation</td></tr>
    <tr>
      <td port='onAffirm' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onAffirm</font></td>
      <td port='onScan' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onScan</font></td>
      <td port='onSearch' color="#00aa00" bgcolor="#ffffff" cellpadding='1' cellspacing='3'><font point-size='8'>onSearch</font></td>
    </tr>
  </table>>,
        margin=0,
        pos="138,209.5",
        shape=plain,
        width=1.6111];
    SearchingAffirmation:onError:s -> NeedAffirmation   [arrowhead=normal,
        pos="e,122.59,237.02 113,274.5 113,265.04 115.4,255.3 118.71,246.36"];
    SearchingAffirmation:onSuccess:s -> HaveAffirmation [arrowhead=normal,
        pos="e,53.302,55.174 53,274.5 53,192.93 43.172,172.37 49,91 49.601,82.604 50.652,73.623 51.827,65.161"];
    SearchingAffirmation:_:e -> SearchAffirmation:_:w   [arrowhead=onormal,
        minlen=2,
        pos="e,195,303.5 156,303.5 169.41,303.5 175.04,303.5 184.92,303.5"];
    NeedAffirmation:onAffirm:s -> AffirmingReturn   [arrowhead=normal,
        pos="e,107.14,146.04 102,183.5 102,174.44 103.27,164.8 105.01,155.82"];
    AffirmingReturn:onError:s -> NeedAffirmation    [arrowhead=normal,
        pos="e,156.64,181.77 138,92.5 138,77.16 161.81,82.497 172.5,93.5 188.76,110.24 178.32,123.4 172.5,146 170.14,155.17 166.11,164.43 161.63,\
172.91"];
    AffirmingReturn:onSuccess:s -> HaveAffirmation  [arrowhead=normal,
        pos="e,76.829,55.271 88,92.5 88,82.948 85.226,73.287 81.365,64.467"];
    AffirmingReturn:_:e -> AffirmReturn:_:w [arrowhead=onormal,
        minlen=2,
        pos="e,209,121.5 171,121.5 183.93,121.5 189.44,121.5 198.89,121.5"];
    HaveAffirmation:_:e -> ShowAffirmation:_:w  [arrowhead=onormal,
        minlen=2,
        pos="e,153,30.5 114,30.5 127.41,30.5 133.04,30.5 142.92,30.5"];
    ShowBarcodeScanner:_:e -> BarcodeAnalyzer:_:w   [arrowhead=odiamond,
        minlen=2,
        pos="e,485,1031.5 447,1031.5 459.01,1031.5 464.61,1031.5 472.92,1031.5"];
    SearchIssue:_:e -> JiraSearchIssue:_:w  [arrowhead=odiamond,
        minlen=2,
        pos="e,427,849.5 389,849.5 401.01,849.5 406.61,849.5 414.92,849.5"];
    SearchRevocation:_:e -> JiraSearchRevocation:_:w    [arrowhead=odiamond,
        minlen=2,
        pos="e,371,667.5 334,667.5 345.56,667.5 351.03,667.5 358.97,667.5"];
    RevokeCert:_:e -> JiraRevokeCert:_:w    [arrowhead=odiamond,
        minlen=2,
        pos="e,343,485.5 305,485.5 317.01,485.5 322.61,485.5 330.92,485.5"];
    SearchAffirmation:_:e -> JiraSearchAffirmation:_:w  [arrowhead=odiamond,
        minlen=2,
        pos="e,353,303.5 316,303.5 327.56,303.5 333.03,303.5 340.97,303.5"];
    AffirmReturn:_:e -> JiraAffirmReturn:_:w    [arrowhead=odiamond,
        minlen=2,
        pos="e,341,121.5 303,121.5 315.01,121.5 320.61,121.5 328.92,121.5"];
    // added by hand    
    HaveSerno -> IssueError [constraint=false color="#aaaaaa" dir=back arrowtail=onormal style=dashed]; 
}

其结果是:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74632664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档