用於快速構建各類關係圖的庫,好比流程圖,可視化執行流等javascript
github地址:https://github.com/auto-workflow/AWorkflowhtml
npm install aworkflowjava
或者引用dist文件夾下的產出文件node
npm installgit
npm run devgithub
默認模版:http://localhost:9999/npm
動畫:http://localhost:9999/demo/animateapi
自動排列:http://localhost:9999/demo/autosort數組
自定義模版:http://localhost:9999/demo/customapp
也能夠訪問在線demo:
默認模版:http://zhoushengfe.com/flow/dist/index.html
動畫:http://zhoushengfe.com/flow/dist/demo/animate/index.html
自動排列:http://zhoushengfe.com/flow/dist/demo/autosort/index.html
自定義模版:http://zhoushengfe.com/flow/dist/demo/custom/index.html
接口文檔: http://zhoushengfe.com/flow/api/index.html
模版是形狀和樣式的結合體,定義了節點(node)和連線(edge)的具體形狀和樣式 默認爲defaultTemplate,由矩形和文案組成 系統還提供了iconTemplate模版,由一個icon和文案組成 固然還能夠自定義模版,能夠參考demo,定義了一個紅色模版 定義的模版能夠在node和edge中使用,這樣就能夠畫出不一樣的節點和連線了
節點,能夠定義使用的模版,模版中參數,輸入,輸出圈信息
連線,能夠定義模版,連線信息
在渲染工做流中,爲了方便地處理縮放,因此整個工做流的圖形集合是一個對象,對應zrender中的Group
類,默認狀況下是Aworkflow中的DrawView
類,在DrawView
中包含了NodeView
和EdgeView
,NodeView
和EdgeView
是由不一樣的Shape組成的Group。
若是想自定義一個渲染規則,能夠參考src/draw/basicdraw/DrawView.js
中的代碼,使用Draw.extend()
實現一個自定義的類,須要設置type
字段,而且實現render()
方法,render()
方法中須要將最終使用的zrender的形狀實例對象return出去,以便於在Aworkflow中add到zrender對象中。
(這個地方實現的好像不太好)
Node是工做流中的節點,默認的實現類是src/draw/basicDraw/NodeView
,父類是src/draw/Node
,Node也是一個Group
,包含了像文字(Text),圖標(Image),矩形(Rect)等基本形狀。在NodeView中render輸入輸出點的時候,會根據點的個數和Node的position來計算出每一個點的座標來繪製,同時能夠在config中配置input或者output在node中的位置,如top、right、bottom、left。
一樣,若是想要自定義一個Node,須要使用Node.extend()
方法,須要定義type和實現render()
方法,render()
方法中須要將最終使用的zrender的形狀實例對象return出去,以便於在DrawView
或者父集合對象中add到對應的Group對象中。
Edge是工做流中的連線,默認的實現類是src/draw/basicDraw/EdgeView
,父類是src/draw/Edge
,Edge也是一個Group
,包含了像貝塞爾曲線和三角形箭頭基本形狀。渲染連線須要在渲染節點以後進行,由於連線的信息只有節點信息沒有座標信息,因此須要在節點渲染後,根據起止節點來計算處連線的起始點座標,同時會根據箭頭的位置對終點座標進行細微的調整。
一樣,若是想要自定義一個Edge,須要使用Edge.extend()
方法,須要定義type和實現render()
方法,render()
方法中須要將最終使用的zrender的形狀實例對象return出去,以便於在DrawView
或者父集合對象中add到對應的Group對象中。
Shape是一些基本形狀,目前實現了的有BezierCurve、CirCle、Image、Text、React、Triangle,是對zrender中Displayable中的簡單封裝。在使用Shape的時候,須要先實例化,而後調用shape.init()
方法實例化對應的zrender對象,init以後shape.dom
中存儲即是對應的zrender對象。 須要自定義Shape的時候,須要使用Shape.extend()
方法。和上面幾個相似,具體可參考src/draw/shape
目錄中的代碼。
npm run test
qq羣:869605396