1、功能介绍
脚本升级中遇到了一些需要对数据进行处理、修复等场景,sql处理起来十分困难,因此开发了给脚本升级插件,提供sql执行前后的切入点,供使用者进行使用。
2、插件机制
插件通过在sql执行前后提供切入的方法,使用者可以通过使用插件动态的对sql执行前后进行干预,以便实现业务所需功能。 脚本执行插件需要实现kd.bos.form.upgrade.AbstractUpgradePlugin接口,该接口提供了两个扩展方法,可供用户扩展使用。
2.1 beforeExecuteSql方法
该方法主要提供sql执行前切入,入参为ver版本号、iteration迭代器、dbkey以及sql文件名称。处理完毕后需要返回一个UpgradeResult对象,用于封装更新结果。
2.2 afterExecuteSql方法
该方法主要提供sql执行后切入,入参为ver版本号、iteration迭代器、dbkey以及sql文件名称。处理完毕后需要返回一个UpgradeResult对象,用于封装更新结果。
3、使用方法
1、在Datamodel下应用配置文件增加插件
使用英文半角,分隔,支持class和脚本两种配置方式。
插件配置规则为:Plugin="cloud:bos,app:er,class:ExpenseItemUpgradeService"。
脚本配置形如:Plugin="cloud:bos,app:er,js:ExpenseItemUpgradeService"。
2、编写plugin插件与plugin注册
依据场景,编写合适的插件,为提高安全性,系统只支持注册的插件进行调用。 目前只支持业务的插件,平台插件由于业务兼容性暂时还不支持。如有需要可以通过业务插件的方法构建需要的servicefactory进行注册。如需要在bos的base下面进行插件处理,可以编写一个kd.bos.base.servicehelper.ServiceFactory进行注册。
属于业务的插件,需要在kd.{cloud}.{app}.servicehelper.ServiceFactory中进行注册,对应cloud与app即在配置文件中配置的cloud与app。例如需要对财务云下的er进行更新,则配置为cloud:fi,app:er,class:注册的插件名
编写服务实现类,实现IUpgradeService接口。在服务实现中在委托接口中实现相关功能。
平台脚本插件注册开发可以参考新特性:https://developer.kingdee.com/article/92317897501894912?productLineId=29&isKnowledge=2
推荐阅读