一文读懂-动态注入插件原创
金蝶云社区-金蝉子
金蝉子
13人赞赏了该文章 1,788次浏览 未经作者许可,禁止转载编辑于2021年06月17日 16:00:23
summary-icon摘要由AI智能服务提供

本文介绍了动态注入插件的方法及其应用场景。文中详细说明了在页面跳转时如何通过代码向页面动态注入插件,以及通过重写beforeShowBill函数实现在不同条件下注入不同插件。此外,还提到了在表单页面preOpenForm中注入插件的情况,并探讨了动态注入插件与原设计中插件的执行顺序。最后,提出了动态注入插件的适用场景和注意事项。

如何实现动态注入插件

 

相信大家都接触过插件注册,在我们平时开发中插件注册是我们开发经常做的事情。

image.png 

如下图我们会在一个表单中注入插件来实现我们对应的功能。这种情况就是我们预制插件的功能,需要什么配置不能实现的功能,就可以通过插件来写。那么我们能不能不在注册插件页面注入插件,来通过代码给一个页面动态的来注入插件呢?当然是可以的啦,小本本拿起来记好,下面是重点。

 image.png

两点注册动态插件

1. 页面跳转时在BillShowParameteraddCustPlugin(插件包路径

2. 注入插件的是跳转后的页面。

 

模拟案例:

列表中有单据状态为暂存和提交的两条数据,需要实现的内容是暂存状态的单据文本A是必填的,提交状态的单据文本B是必填的。

首先这个问题我们用传统的预制插件的方式很好实现,在单据页面注入插件,根据单据类型来判断设置不同的文本必填项就好了,但是为了探究我们动态注入插件的能力我们换种方式来实现。

 image.png

首先我们在列表页面注入列表插件,没错就是列表页面,重写beforeShowBill,根据单据类型不同,在跳转后的单据页面注入不同的插件MustInputAMustInputB

 image.png

我们看下MustInputAMustInputB里面设置的是什么内容?很简单,就是单纯的设置文本控件ab为必填。

 image.pngimage.png

 

下面我们在列表中分别进入单据中看下效果,发现确实必录性发生了变化。这样我们核实了跳转后的页面确实受到了插件的影响。

 image.pngimage.pngimage.png

 

BOTP案例:

我们BOTP也有用动态注入插件的知识哦,在下推的动态表单中会向目标单注入插件如下图所示:

 image.png

该插件的效果是目标单会设置afterCreateNewData为false,这也就是为什么下推的目标单不进入afterCreateNewData方法的原因。

 image.png

 

扩展知识:

上面我们根据两个案例探究了跳转到目标单页面动态注入插件的场景,那么我们引出思考,难道说我们只有在跳转时才能给页面动态注入插件吗?我们能否在打开当前页面的时候就动态注入插件呢?

答案是可以的!

在表单页面preOpenForm中可以在FormShowParameter中添加插件,这样就可以动态给当前表单注入插件。

 image.png

在这里我们引出另一个问题,注入的插件和原有在设计器中插入的插件的执行顺序是怎样的,由于我们是先加载元数据获取完设计器中的插件,然后通过addCustPlugin方法,向list中末尾加入新的插件,所以是先执行设计器中的插件再执行动态注入的插件的。

 

动态注入插件适用场景

1. 动态注入插件试用于复用性很强的业务;

2. 动态注入插件会提升问题排查的复杂度,请谨慎试用。

 

以上就是本期的全部内容啦,咱们下期再见!


赞 13