二次开发扩展程序开发之插件模式原创
金蝶云社区-Tick
Tick
21人赞赏了该文章 7,916次浏览 未经作者许可,禁止转载编辑于2022年08月03日 11:09:01
summary-icon摘要由AI智能服务提供

本文讨论了如何在PLM系统中对业务类型单据进行插件开发,而不扩展原有业务类型。提出了一个四步方案:创建项目、创建扩展类、编译并部署组件、重启IIS。详述了使用VisualStudio创建.Net Framework类库项目、引用相关组件、创建并标记扩展类、编译并更新到站点bin目录、重启IIS以查看效果的步骤,并提供了代码示例和附加接口扩展的参考链接。

问题:


PLM的业务类型的单据,如果需要进行业务干预时,需要绑定插件;

但业务类型单据又不建议进行扩展,那如何进行插件开发呢?


方案:

PLM配置系统提供一种插件模式,用于对业务类型对象进行扩展的业务处理。


Step1:创建项目

Step2: 创建扩展类

Step3: 编译项目,并发组件

Step4:重启IIS




Step1:创建二次开发扩展组件项目

打开VisualStudio进行开发,不同版本vs可能界面不一样,但相关设置相同:

image.png

创建.Net Framework 类库项目(基于.net Framework 4.0)

image.png

如下,一定要注意相关的命名规则: ISV.项目标识名.Common.BusinessEntity

image.png

设置项目的相关配置项

image.png


Step2: 引用相关的组件并创建扩展类


image.png


一般需要引用以下组件:

Kingdee.BOS.dll

Kingdee.BOS.Core.dll

Kingdee.BOS.DataEntity.dll

Kingdee.K3.PLM.CFG.Common.Interface.dll

Kingdee.K3.PLM.Common.Core.dll



我们这里以物料业务类型的单据维护业务干预为例:


创建一个扩展插件类,派生于AbstractBaseBillOperation抽象类


image.png


必须通过OperationAttribute标记类,说明该业务处理作用的业务类型ID;

可以通过StandardCategoryType来获取标准产品的类型;如果是子类型或自定的类型,CategoryId就是业务类型的ID了,如:1810000000000000000 之类的

image.png


上图,有相关的上下文与视图的获取方法可以参考


Step3: 编译项目,生成组件并将组件更新到安装位置的站点bin目录下(如果构建到补丁包,就将组件包放到资源包里)

image.png

如果生成位置不是运行的位置; 也可以把编译好的组件,拷贝到安装环境的WebSite\bin目录下


Step4:重启IIS,并检查运行效果


可以运行 windows 启动-》 cmd-> 运行 iisreset

或者运行inetmgr 启动iis,在操作界面上重启iis


当我们打开一个物料单据时,会出现扩展程序的提示信息了:


image.png

image.png


这就看到我们的扩展业务逻辑生效了。


附一:

 var plmCtx = view.Context; //获取PLM上下文
var bosCtx = plmCtx.BOSContext; //获取BOS的上下文
var bosView = view.CurrentView;//获取当前的view
var obj = bosView.Model.DataObject;//获取当前单据的业务对象
var billView =(IBillView)view.CurrentView;//获取单据视图
var status=billView.OpenParameter.Status;//获取当前状态(新增、编辑等)


附二:

这种扩展还支持其它的接口扩展,请参考:https://vip.kingdee.com/article/44303

 



----END-----



图标赞 21
21人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!