bpmn的依賴注入
主要對(duì)象
new BPMN對(duì)象時(shí),流程及對(duì)象結(jié)構(gòu)如下圖


依賴注入
在初始化bpmn對(duì)象時(shí)有傳入additionalModules進(jìn)行自定義操作,具體是如何實(shí)現(xiàn)這種模塊化的管理,主要是用到了依賴注入https://github.com/nikku/didi。
繼續(xù)查看bpmn實(shí)例對(duì)象發(fā)現(xiàn)有injector對(duì)象,該對(duì)象即類似java的ICO容器,容器負(fù)責(zé)實(shí)例化、定位、配置對(duì)象及建立這些對(duì)象間的依賴。對(duì)象主要開放get,invoke兩個(gè)API,bpmn對(duì)象的get,invoke即指定injector對(duì)象的get ,invoke。

舉個(gè)例子
如果要自定義pallete,代碼大致如下



1.depends 顯示聲明依賴,在diagram.js中根據(jù)該依賴生成new injector需要的模塊數(shù)組
2.init new injector創(chuàng)建容器后,并未執(zhí)行constrnctor等方法,所以diggram.js根據(jù)該節(jié)點(diǎn)解析模塊,執(zhí)行模塊方法
3.如customPallete構(gòu)造時(shí),獲取到依賴注入的pallete對(duì)象,調(diào)用該對(duì)象的registerProvider注冊(cè)當(dāng)前的對(duì)象。pallete進(jìn)行繪制操作時(shí)可以從注冊(cè)的對(duì)象中獲取各元素節(jié)點(diǎn)


浙公網(wǎng)安備 33010602011771號(hào)