Test QuickGV: Difference between revisions

From Fundamental Ramen
Jump to navigation Jump to search
 
(117 intermediate revisions by the same user not shown)
Line 1: Line 1:
See: https://graphviz.gitlab.io/_pages/pdf/dotguide.pdf
See: https://graphviz.gitlab.io/_pages/pdf/dotguide.pdf


= FW 1 =
= MQTT =


<quickgv usage="ram" name="FW1" theme="warm">
<quickgv name="hygeai_center" theme="warm">
Y [label="Firewall | <ob1> OB1 診間可連外\l | <ob2> OB2 所有PC可連健保局\l | <ob3> OB3 所有PC可連集團診所\l | <ib1> IB1 集團診所可連入\l | <ib2> IB2 采醫辦公室可連入\l"];
CLINIC_WIZ [label="診所小幫手"];
Z1 [label="一般網路"];
DICOM_UPLOADER [label="影像上傳程式"];
Z2 [label="健保VPN"];
CHECK_UPLOADER [label="檢驗報告上傳程式"];
Z3 [label="集團診所"];
HIX_BUSINESS [label="HIX 營業活動"];
Z4 [label="采醫辦公室"];
HIX_BACKGROUND [label="HIX 排程工作"];


Y:ob1 -> Z1;
subgraph cluster_HYGE {
Y:ob2 -> Z2;
CENTER [label="營運中心"];
Y:ob3 -> Z3;
LOG_MONITOR [label="即時監測"];
Z3 -> Y:ib1;
LOG_REVIEW [label="事後分析"];
Z4 -> Y:ib2;
}
 
CLINIC_WIZ -> CENTER;
DICOM_UPLOADER -> CENTER;
CHECK_UPLOADER -> CENTER;
HIX_BUSINESS -> CENTER;
HIX_BACKGROUND -> CENTER;
CENTER -> LOG_MONITOR [label="MQTT"];
CENTER -> LOG_REVIEW [label="Restful"];
</quickgv>
 
= ClinicWiz =
 
<quickgv name="clinicwiz" theme="warm">
rankdir=TB;
 
subgraph cluster_formain_cs {
  label="HTTP";
  A [label="GenHTTP http://localhost:8168\n(FormMain.cs)"];
  B [label="Functional Handler\n(FormMain.cs)"];
  C [label="Functions\n(RestfulMethods.cs)"];
}
 
subgraph cluster_form {
  label="WPF";
  L [label="ReadTest.cs"];
}
 
subgraph cluster_cshistaskfactory_cs {
  label="Queue Mechanism";
  D [label="TaskFactory\n(CsHisTask/CsHisTaskFactory.cs)"];
  E [label="Task\n(CsHisTask/CsHisTaskFactory.cs)"];
  F [label="StateMachine\n(CsHisStateMachine.cs)"];
}
 
subgraph cluster_hal {
  label="Hardware Control";
  G [label="CsHisHAL.cs"];
  H [label="CsHis.dll\n(CsHis99Native.cs)"];
  J [label="PCSC API"];
  K [label="SetupAPI"];
  R1 [label="HC3000"];
  R2 [label="DWR18"];
  R3 [label="PCSC Reader"];
}
 
A -> B -> C -> D -> E -> F -> G -> H;
F -> J;
F -> K;
L -> D;
 
H -> R1;
H -> R2;
H -> R3;
J -> R2;
J -> R3;
</quickgv>
</quickgv>


= FW 2 =
= WebSocket Service =
 
<quickgv name="123" theme="warm" usage="ram">
subgraph cluster_client {
  label="WebSocket Client"
  c1[label="var ws = new WebSocket('/foo')"];
  c2[label="ws.onerror = function (ev) ..."];
  c3[label="ws.onopen = function (ev) ..."];
  c4[label="ws.onmessage = function (ev) ..."];
  c5[label="ws.send()"];
}
 
subgraph cluster_server {
  label="";
  s[label="Service Unit | <rh> Request Handler | <ph> Push Handler | <pw> Push Worker | <mh> Message Handler | <mw> Message Worker"];
  iq[label="Inbound Queue"];
  oq[label="Outbound Queue"];
}
 
c1 -> s:rh [color="#ff0000"];
c2 -> s:rh [color="#0000ff",dir="back"];
c3 -> s:rh [color="#0000ff",dir="back"];
c4 -> s:ph [color="#0000ff",dir="back"];
s:ph -> oq [color="#0000ff",dir="back"];
s:pw -> oq [color="#0000ff"];
c5 -> s:mh [color="#ff0000"];
s:mh -> iq [color="#ff0000"];
s:mw -> iq [color="#ff0000",dir="back"];
</quickgv>
 
= 建議線路 gen1 =
<quickgv name="topology" theme="warm">
<quickgv name="topology" theme="warm">
// rankdir=TB;
subgraph cluster_clinic {
  label="診間網路";
 
  his[label="HIS Server"];
  nas[label="NAS"];
  opd[label="診間"];
  pt[label="復健"];
  reg[label="掛號"];
  tv[label="衛教"];
  prn[label="印表機"];
  sw[label="辦公室交換器"];
  fw[label="防火牆"];
  wan1[label="固定IP線路"];
  wan2[label="健保局 VPN"];
  cross[label="跨院病歷"];


fw[label="防火牆"];
  {opd pt reg tv his nas prn} -> sw;
sw[label="辦公室交換器"];
  sw -> fw;
rt[label="IP分享器"];
  fw -> {wan1 wan2};
pc1[label="外網專用PC"];
  wan1 -> cross [dir="back", color="#ff0000"];
opd1[label="診間1"];
}
opd2[label="診間2"];
pt1[label="復健1"];
pt2[label="復健2"];
reg1[label="掛號1"];
reg2[label="掛號2"];
tv1[label="衛教"];
his[label="HIS Server"];
nas[label="NAS"];
gu[label="新光保全"];
mo[label="監視系統"];
prn[label="印表機"];
wan1[label="光世代固定IP線路"];
wan2[label="健保局 VPN"];
wan3[label="光世代浮動IP線路"];


{opd1 opd2 pt1 pt2 reg1 reg2 tv1 his nas prn} -> sw;
// 開放網路
sw -> fw;
subgraph cluster_open {
fw -> {wan1 wan2};
  label="開放網路";
{pc1 gu mo} -> rt -> wan3;
 
  gu[label="新光保全"];
  mo[label="監視系統"];
  pc1[label="外網專用PC"];
  rt[label="IP分享器"];
  wan3[label="浮動IP線路"];
  mobile[label="監視系統 App"];
  hacker[label="駭客 or 殭屍電腦"];
 
  {pc1 gu mo} -> rt -> wan3;
  wan3 -> {mobile hacker} [label="tcp:3880", dir="back", color="#ff0000"];
}
</quickgv>
</quickgv>
= 建議線路 gen2 =


<quickgv name="topology_gen2" theme="warm">
<quickgv name="topology_gen2" theme="warm">
// rankdir=TB;
subgraph cluster_clinic {
  label="診間網路";
 
  his[label="HIS Server"];
  nas[label="NAS"];
  opd[label="診間"];
  pt[label="復健"];
  reg[label="掛號"];
  tv[label="衛教"];
  prn[label="印表機"];
  fw[label="防火牆"];
  wan1[label="固定IP線路"];
  wan2[label="健保局 VPN"];
  cross[label="跨院病歷"];
 
  subgraph cluster_switch {
    label="網路交換器";
    vlan1[label="診間區虛擬網路"];
    vlan2[label="敏感區虛擬網路"];
  }
 
  {opd pt reg tv prn} -> vlan1;
  {his nas} -> vlan2;
  {vlan1 vlan2} -> fw;
  fw -> {wan1 wan2};
  wan1 -> cross [dir="back", color="#ff0000"];
}
 
// 開放網路
subgraph cluster_open {
  label="開放網路";


fw[label="防火牆"];
  gu[label="新光保全"];
sw1[label="辦公室虛擬內網\nVLAN1"];
  mo[label="監視系統"];
sw2[label="敏感區虛擬內網\nVLAN2"];
  pc1[label="外網專用PC"];
rt[label="IP分享器"];
  rt[label="IP分享器"];
opd1[label="診間1"];
  wan3[label="浮動IP線路"];
opd2[label="診間2"];
  mobile[label="監視系統 App\n(僅限特定地點存取)"];
pt1[label="復健1"];
pt2[label="復健2"];
reg1[label="掛號1"];
reg2[label="掛號2"];
tv1[label="衛教"];
his[label="HIS Server"];
nas[label="NAS"];
gu[label="新光保全"];
mo[label="監視系統"];
wan1[label="光世代固定IP線路"];
wan2[label="健保局 VPN"];
wan3[label="光世代浮動IP線路"];


{opd1 opd2 pt1 pt2 reg1 reg2 tv1} -> sw1;
  {pc1 gu mo} -> rt -> wan3;
{his nas} -> sw2;
  wan3 -> mobile [label="tcp:3880", dir="back", color="#ff0000"];
{sw1 sw2} -> fw;
}
fw -> {wan1 wan2};
{gu mo} -> rt -> wan3;
</quickgv>
</quickgv>



Latest revision as of 05:40, 23 October 2024

See: https://graphviz.gitlab.io/_pages/pdf/dotguide.pdf

MQTT

ClinicWiz

WebSocket Service

建議線路 gen1

建議線路 gen2

A

testflow

test

Crawling Flow

GDS

Geomancer

Sandbox