如何在设计期核心操作在模型层进行二次扩展
问题描述
客户在某些场景下需要在标准产品的基础上进行二次开发,并且不仅需要界面操作支持二开并且在调用API的场景下也要支持二开。
解决方法
1. 配置生命周期监听,预置脚本,注意FSTENCILTYPE要设置成 'Diagram',FAPPID、 FCLOUDID要设置自己系统对应应用的APPID 和 应用所属云的CLOUDID,每个应用只有一条生效。
示例:
DELETE FROM T_WF_DYNMODELCONFIG WHERE FID = xxx; INSERT INTO T_WF_DYNMODELCONFIG (FID, FAPPID, FSTENCILTYPE, FSTENCILTYPENAME, FBUILTIN, FCREATER, FCREATEDATE, FMODIFIER, FMODIFYDATE, FISV, FLIFECYCLECONFIG, FCLOUDID) VALUES (xxx, 'wf', 'Diagram', '流程', '0', 100, {ts'2022-08-10 15:53:55'}, 100, {ts'2022-08-10 15:53:55'}, 'kingdee', '{"listeners":{"publish":"{\"class\":\"com.kingdee.TestLifecycleListener\"}"}}', '18Y30L1D2HS4'); |
字段 FLIFECYCLECONFIG定义生命周期监听。其中 publish为【设计器发布】生命监听表需配置的插件对应Key,同理亦可配置为save、import…,save表示【设计器保存】对应的插件Key, import表示【设计器导入】对应的插件Key
2. 自定义插件,实现kd.bos.workflow.engine.extitf.IWorkflowModelPlugin接口,重写对应的方法,如【设计器保存】重写afterSave(),【设计器导入】重写afterImport ()
示例:
public class ExtItfNodeLifeCycleTestPlugin implements IWorkflowModelPlugin{ @Override public void afterPublish(Long procDefId, Map<String, Object> variables){ ... }
@Override public void afterSave(Long modelId, String processNumber, Map<String, Object> paramter){ ... } @Override public void afterImport(String processNumber, Map<String, Object> paramter){ ... } @Override public void afterExport(String processNumber, Map<String, Object> paramter){ ... } @Override public void afterSuspend(Long procDefId, Map<String, Object> paramter){ ... } @Override public void afterActivate(Long procDefId, Map<String, Object> paramter){ ... } @Override public void afterImportScheme(Long procDefId, Map<String, Object> paramter){ ... } @Override public void afterExportScheme(Long procDefId, Map<String, Object> paramter){ ... } } |
适用版本
V5.0 及以上版本
注意事项(可选)
此项扩展为模型层扩展,api调用和页面操作均会触发,插件调用失败不会影响正常操作。
如何在设计期核心操作在模型层进行二次扩展
本文2024-09-23 00:56:56发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-142779.html