升级插件使用说明原创
金蝶云社区-柒拾贰
柒拾贰
2人赞赏了该文章 629次浏览 未经作者许可,禁止转载编辑于2023年03月24日 14:42:06

1、功能介绍

     脚本升级中遇到了一些需要对数据进行处理、修复等场景,sql处理起来十分困难,因此开发了给脚本升级插件,提供sql执行前后的切入点,供使用者进行使用。

 2、插件机制 

     插件通过在sql执行前后提供切入的方法,使用者可以通过使用插件动态的对sql执行前后进行干预,以便实现业务所需功能。 脚本执行插件需要实现kd.bos.form.upgrade.AbstractUpgradePlugin接口,该接口提供了两个扩展方法,可供用户扩展使用。

image.png

    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"。

                    image.png    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:注册的插件名       image.png

编写服务实现类,实现IUpgradeService接口。在服务实现中在委托接口中实现相关功能。

image.png

平台脚本插件注册开发可以参考新特性:https://developer.kingdee.com/article/92317897501894912?productLineId=29&isKnowledge=2

赞 2