【答疑汇总&资料】金蝶云·星空BOS第4期直播—App插件开发 原创
金蝶云社区-Jack
Jack
153人赞赏了该文章 5988次浏览 未经作者许可,禁止转载编辑于2020年07月10日 20:29:37

一、课程主题:金蝶云星空BOS中级课-App插件开发

 

二、回看地址:

https://vip.kingdee.com/school/liveCourse/67977383596474368

 

三、PPT课件:

https://vip.kingdee.com/school/69180211434048000

 

四、案例代码(可在文末附件压缩包进行下载)

 

五、直播答疑汇总(部分问题已在直播答疑环节进行解答,文字简答版可参考以下答复)

1、 写插件,除了将插件编译成DLL文件,并注册后,还是更新什么文件到服务器吗?

答复:需要将编译的插件DLL文件放在服务器的website/bin目录下,重启IIS以生效。也推荐使用我们的快速启动工具:https://vip.kingdee.com/article/39960

 

2、检验器弹出后,如果选是,还会在执行一遍beforesave这个是不是会影响性能?

答复:有一定的性能影响,您可以在插件代码中稍加控制,比如填充主键,第一次调用时填充完后,第二次再调用时可以直接跳过。

 

3、提问:插件里面能支持IOC吗?

答复:IOC是一种设计模式 与插件无关。

 

4、APP层是手机应用吗?

答复:APP层不是手机应用,而是星空系统架构的分层,展示层、Web层、App层、DB层。

 

5、如果app不是移动端的话,我写的插件在移动端还起作用吗?

答复:起作用,移动端在进行数据交互时也会调用APP层的服务,进而执行APP插件。

 

6、交互和验证器有啥区别?

答复:

(1)执行时机不同:校验器在操作开始前执行,而交互异常可以在校验器,表单服务,插件事件中发起。

(2)影响范围不同:校验器校验失败,是正常退出代码逻辑,而交互异常,其本质上还是一种异常,会立即中断当前代码块的执行。

(3)交互界面可编程性不同:校验器只能按指定格式输出交互内容,交互异常可以输出完全自定义的复杂交互界面。

 

7、事务失败,实体类不会自动回滚到初始状态吗?

答复:不会,事务只解决了数据库的脏数据问题。但是内存中的实体对象有可能在插件内被修改了,这个需要通过rollback事件里写反向值来还原到初始状态。

 

8、二开插件必须本地电脑安装整个k3cloud产品么

答复:如果只是开发插件,引用对应版本的K3Cloud组件即可。如果还需要调试插件,就必须安装K3CLoud产品,或者使用协同开发平台自动搭建对应版本的开发环境。

 

9、现在得架构支持有内置 IOC 支持吗?比如我要获取自己定义得一些业务服务组件,需要解决依赖关系?

答复:目前尚未提供件支持。

 

10、SubmitService 好像不校验用户。ISubmitService 这个好像校验用户?例如administrator执行

答复:Submit操作会验权,但是SubmitService不验权。

 

11、事务超时的时间是多长时间?

答复:默认10分钟。

 

12、用户操作不保存,直接提交,保存中的插件会执行吗?

答复:直接提交时,如果Model中的数据包有发生变化,会自动调用保存操作,此时保存操作绑定的服务插件会执行。

 

13、刚刚说可以不用密码直接调用 web service?这样安全吗?

答复:安全。因为是从执行计划中发起的调用,本质上就是程序集调用,执行计划以administrator身份运行在应用服务器上。

 

14、一个单据同时对一个接口写几个DDL,调用有先后顺序吗?

答复:插件调用没有严格的先后顺序,缺省按照其在元数据中对应的插件集合中的顺序执行。

 

15、(1)接口里对批量个单个处理是否有区别,如何区别,课程开始时,提单参数设置批量处理,这个怎么处理?(2)不同的操作使用同一个插件,代码里如何区分不同操作?

答复:

(1)有区别,批量处理性能更好。PrepareOperationServiceOption事件的SurportBatchTransaction参数可以设置是否启用批量处理。

(2)在插件事件中,访问this.FormOperation.Operation属性可以知道当时执行的是哪个操作。

 

16、老师,数据库读取操作不能在循环里执行,那么如果列表中选择了100条数据,每一条数据都需要执行数据库读取操作,那应该怎么写?

答复:可以将100次查询,通过查询条件合并的方式,合并为一次查询。

 

17、事物requireNew是会回滚自身创建的事物,而不受环境事物影响吧

答复:requireNew可以理解成开启一个全新的事务块,不受环境事务的影响。

 

18、webservice dll 里有所有的webapi接口吗?

答复:有的。

 

19、代码前面大概10行 using kingdee.bos.xxxx,这些是元数据嘛?怎么知道要调用哪些?

答复:这些是代码中使用到的类所在的命名空间,这些不是元数据,通常您需要提前知道您要使用的类所在的程序集和命名空间,并在代码最上面提前引入命名空间,否则会编译失败。

 

20、协同开发是不是可以直接用公有云的管理中心?

答复:不可以,公有云的管理中心未开放给外网访问。

 

21、问个其他问题:上下游单据的关联关系是记录在_LK表吧,多级下推的情况是否要一级一级关联找到目的单:比如销售订单->采购申请->采购订单->采购入库,找销售订单对应的采购入库是否需要一级一级关联对应的LK查找?

答复:lk表只能查询到直接上下关联关系, 所有关联关系都记录在t_bf_instanceEntry表。

 

22、老师,请问单据转换,复制一个单据转换,不启动原有插件,目标单选原单,对目标单流程单的流程有影响?

答复:只要插件不干预关联数据包的,就不会有影响。

 


赞 153