說明:在很多情況下,需要將復雜且有些規律的代碼整理成邏輯片段,這個時候就需要畫圖,很多時候圖比代碼更加直觀
Graphviz是一個比較好的繪圖工具,可以通過簡單的代碼繪制出復雜的邏輯圖,且其代碼就像平時說話的語言一樣直觀
案例中是我在開發中整理的一個復雜的sql中的表依賴關系:
代碼:
digraph sbjob{
graph [fontname=Arial, nodesep=0.125, ranksep=0.25];
node [fontcolor=black, fontname=Arial, height=0, shape=box, style=filled, width=0];
edge [fontname=Arial, len=3.5];
INT_STG_OCS_TB_OCS_ACCOUNTEXT_SUBSCRIBER_SD [label="INT_STG_OCS_\nTB_OCS_ACCOUNTEXT_\nSUBSCRIBER_SD"]
STG_OCS_TB_OCS_ACCOUNTEXT_SUBSCRIBER [label="STG_OCS_TB_\nOCS_ACCOUNTEXT\n_SUBSCRIBER"]
LOAD_DATE_PARAMETERS_TBL [label="LOAD_DATE_\nPARAMETERS_TBL"]
SUBSCRIBER_AUDIT_TB [label="SUBSCRIBER_\nAUDIT_TB"]
STG_INF_CONTACT_PERSON [label="STG_INF_CONTACT\n_PERSON"]
INT_STG_INF_CONTACT_PERSON [label="INT_STG_INF_\nCONTACT_PERSON"]
STG_INF_CUSTOMER_ALL [label="STG_INF_\nCUSTOMER_ALL"]
INT_STG_INF_CUSTOMER_ALL [label="INT_STG_INF_\nCUSTOMER_ALL"]
STG_OCS_ACCOUNTS_SUBCRIBER [label="STG_OCS_ACCOUNTS\n_SUBCRIBER"]
INT_STG_OCS_ACCOUNTS_SUBCRIBER [label="INT_STG_OCS_\nACCOUNTS_SUBCRIBER"]
STG_CRM_PERSON_SUBSCRIBER [label="STG_CRM_PERSON_\nSUBSCRIBER"]
INT_STG_CRM_PERSON_SUBSCRIBER [label="INT_STG_CRM_PERSON_\nSUBSCRIBER"]
STG_T_S_OCS_TSNATIVENUMHEAD [label="STG_T_S_OCS_\nTSNATIVENUMHEAD"]
INT_STG_T_S_OCS_TSNATIVENUMHEAD [label="INT_STG_T_S_OCS_\nTSNATIVENUMHEAD"]
SUBSCRIBER_DIMENSION_STG [label="SUBSCRIBER_\nDIMENSION_STG"]
INT_STG_CRM_SUBSCRIBER_SD [label="INT_STG_CRM_\nSUBSCRIBER_SD"]
INT_STG_CBE_SUBSCRIBER_SD [label="INT_STG_CBE_\nSUBSCRIBER_SD"]
IMEI_MOBILEBRAND [label="IMEI_MOBILEBRAND"]
SUBSCRIBER_TEMP_TB [label="SUBSCRIBER_\nTEMP_TB"]
SUBSCRIBER_DIMENSION [label="SUBSCRIBER_\nDIMENSION"]
SUBSCRIBER_REGION_TB [label="SUBSCRIBER_\nREGION_TB"]
SUBSCRIBER_TEMP_TB [label="SUBSCRIBER_TEMP_TB"]
AUDIT_TB [label="AUDIT_TB"]
//////////////////////////////////////////////////////
INT_STG_OCS_TB_OCS_ACCOUNTEXT_SUBSCRIBER_SD ->
{STG_OCS_TB_OCS_ACCOUNTEXT_SUBSCRIBER,
LOAD_DATE_PARAMETERS_TBL}[color="#0d1976", fontcolor="#0d1976", label="1"]
//---
SUBSCRIBER_AUDIT_TB ->
AUDIT_TB[color="#BBFFFF", fontcolor="#BBFFFF", label="2"]
//---
STG_INF_CONTACT_PERSON ->
{AUDIT_TB,
LOAD_DATE_PARAMETERS_TBL,
INT_STG_INF_CONTACT_PERSON}[color="#FFFF00", fontcolor="#FFFF00", label="3"]
//---
STG_INF_CUSTOMER_ALL ->
{AUDIT_TB,
LOAD_DATE_PARAMETERS_TBL,
INT_STG_INF_CUSTOMER_ALL}[color="#EE0000", fontcolor="#EE0000", label="4"]
//---
STG_OCS_ACCOUNTS_SUBCRIBER ->
{SUBSCRIBER_AUDIT_TB,
LOAD_DATE_PARAMETERS_TBL,
INT_STG_OCS_ACCOUNTS_SUBCRIBER}[color="#9ACD32", fontcolor="#9ACD32", label="5"]
STG_CRM_PERSON_SUBSCRIBER ->
{SUBSCRIBER_AUDIT_TB,
LOAD_DATE_PARAMETERS_TBL,
INT_STG_CRM_PERSON_SUBSCRIBER}[color="#98F5FF", fontcolor="#98F5FF", label="6"]
//---
STG_T_S_OCS_TSNATIVENUMHEAD ->
{AUDIT_TB,
LOAD_DATE_PARAMETERS_TBL,
INT_STG_T_S_OCS_TSNATIVENUMHEAD}[color="#7D26CD", fontcolor="#7D26CD", label="7"]
//---
SUBSCRIBER_DIMENSION_STG ->
{INT_STG_CRM_SUBSCRIBER_SD,
INT_STG_CRM_PERSON_SUBSCRIBER,
INT_STG_CBE_SUBSCRIBER_SD,
INT_STG_OCS_TB_OCS_ACCOUNTEXT_SUBSCRIBER_SD,
INT_STG_OCS_ACCOUNTS_SUBCRIBER,
IMEI_MOBILEBRAND,
SUBSCRIBER_AUDIT_TB,
INT_STG_INF_CONTACT_PERSON,
INT_STG_INF_CUSTOMER_ALL}[color="#838B83", fontcolor="#838B83", label="8"]
//---
SUBSCRIBER_TEMP_TB ->
{AUDIT_TB,
SUBSCRIBER_DIMENSION,
SUBSCRIBER_DIMENSION_STG}[color="#B8860B", fontcolor="#B8860B", label="9"]
SUBSCRIBER_REGION_TB ->
{INT_STG_T_S_OCS_TSNATIVENUMHEAD,
SUBSCRIBER_DIMENSION_STG,
SUBSCRIBER_TEMP_TB,
SUBSCRIBER_DIMENSION_STG,
SUBSCRIBER_TEMP_TB} [color="#B3EE3A", fontcolor="#B3EE3A", label="10"]
// update
SUBSCRIBER_AUDIT_TB ->
{SUBSCRIBER_TEMP_TB,
SUBSCRIBER_DIMENSION_STG,
SUBSCRIBER_AUDIT_TB}[color="#B22222", fontcolor="#B22222", label="11"]
// update
SUBSCRIBER_DIMENSION ->
SUBSCRIBER_TEMP_TB[color="#030303", fontcolor="#030303", label="12"]
SUBSCRIBER_DIMENSION ->
{SUBSCRIBER_DIMENSION_STG,
SUBSCRIBER_TEMP_TB,
SUBSCRIBER_REGION_TB}[color="#32CD32", fontcolor="#32CD32", label="13"]
// update
SUBSCRIBER_DIMENSION ->
{SUBSCRIBER_DIMENSION_STG,
SUBSCRIBER_TEMP_TB}[color="#8B0000", fontcolor="#8B0000", label="14"]
}
保存為.dot文件
在cmd下執行命令(前提是你安裝了Graphviz並配置了環境變量,這個請自行百度):
neato C:\Users\meij\Desktop\graph3.gv -Tpng -o sb_job_tab.png
解釋:neato是生成某一種圖形樣式,Graphviz提供了很多樣式
也可以生成.img文件
大家安裝客戶端后可以按照上面的代碼和步驟就可以實現生成圖片,結果因為圖片太大不在這里展示。
參考網址:http://www.graphviz.org/
http://m.blog.csdn.net/article/details?id=49472949