关键代码
事件派发器:nc.bs.businessevent.EventDispatcher
插件加载sql
SELECT T0.owner,
T0.listenertype,
T1.sourceid AS sourceid,
T1.eventtypecode AS eventtype,
T0.implclassname AS implclassname,
T0.operindex AS operindex,
M.devmodule AS devmodulecode,
T0.localtype AS localtype,
T0.industrytype AS industrytype
FROM pub_eventlistener T0 left outer
JOIN pub_eventtype T1
ON T0.pk_eventtype =T1.pk_eventtype
LEFT JOIN dap_dapsystem M
ON M.moduleid=T0.owner
WHERE T0.enabled = 'Y'
OR T0.enabled = 'y';
业务插件缓存清除方法
如果注册新插件后,不想重启,可调用此方法,但请注意,不要将此方法写入业务逻辑内,防止对性能造成影响
EventDispatcher.clearCache();
关键表
事件源:pub_eventlistener
事件类型:pub_eventtype
关键断点
778行,EventDispatcher.getListenersInfo()
该处会以【事件源id@事件类型编码】作为key加载缓存
只要在该处打上断点,即可查看所有正在加载的事件,与关键表中的数据进行对照,即可分析出插件注册点
新增事件派发器监听
此处以增加采购发票收回后插件为例,传参为:元数据ID+动作+vo
EventDispatcher.fireEvent(new BusinessEvent("8b387c3a-819b-4c4d-bc59-d90955d205e7", "1020", vos));
若自带业务插件中找不到此事件类型,则需要在前台业务插件注册节点自行新增