App层插件,如何调用保存(Save)操作,ISaveService.Save()

Ø 运行在App层的插件
包括操作插件、单据转换插件、反写插件、账表取数插件等,此类插件掌控着某种特定服务的执行过程,与交互界面无关;
Ø 实现思路
通过Kingdee.BOS.App.dll组件提供的ServiceHelper类,调用GetService泛型方法,获取SaveService服务,调用SaveService提供的Save方法
Ø 插件准备
插件工程引用Kingdee.BOS.App.dll、Kingdee.BOS.Contracts.dll、Kingdee.BOS.DataEntity.dll
类文件引用相关命名空间,详见示例代码
Ø ISaveService.Save接口介绍
ISaveService提供4个Save方法,看上去差不多,其实本质有区别,可以将这4个方法区分为2类方法
直接调用Orm把数据保存到数据库
public DynamicObject Save(Context ctx, DynamicObject dataObject)
public DynamicObject[] Save(Context ctx, DynamicObject[] dataObject)
模拟保存操作服务端完整过程,调用填充主键、生成单据编号,执行校验器,调用服务端服务与服务端插件,最后调用Orm把数据保存到数据库
public DynamicObject[] Save(Context ctx, BusinessInfo businessInfo, DynamicObject[] dataObject, string operationNumber)
public IOperationResult Save(Context ctx, BusinessInfo businessInfo, DynamicObject dataObject, OperateOption option = null, string operationNumber = "")
Ø Save方法参数介绍
名称 | 类型 | 说明 |
ctx | Context | 系统全局信息,这里主要使用全局信息中的数据库连接信息 |
dataObject | DynamicObject | 待保存的数据对象 |
businessInfo | BusinessInfo | 待保存数据对象的元数据信息 |
option | OperateOption | 自定义额外参数对象,服务端服务和服务端插件都能持有此对象 |
operationNumber | string | 当前操作的操作码 |
Ø 示例代码
C# | |
using Kingdee.BOS.Contracts; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Orm.DataEntity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace MyOperaionServicePlugIn { [System.ComponentModel.Description("区分当前类应用在哪个操作上")] public class Class1 : AbstractOperationServicePlugIn {
| |
App层插件,如何调用保存(Save)操作,ISaveService.Save()
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



