} } }
OperationResult
操作执行结果对象。
语法
属性定义 C# publicIOperationResult OperationResult { get; privateset; } 备注
本属性对象,在操作开始执行前,即会被构建,执行过程中,会不断收集执行结果,比如校验执行完毕后,有那些数据校验失败,基于什么原因校验失败,都会被收集进此操作结果;
最终那些数据执行成功,操作是否成功,也会被记录于此。
系统操作引擎,会自动更新本对象属性值,如果插件更改了本对象的属性值,可能会被覆盖。
案例–检查到负库存,提醒用户确认
代码来源
Kingdee.K3.SCM.App.Core.AppBusinessService.CheckInvMinusService
需求背景
出库单据保存、审核时,需要检查库存,如果出现了负库存,需要提醒用户确认,如果用户选择取消,则放弃保存、审核;
实现方案
定制通用的库存检查服务,供各种出库单调用。
如果检查出了负库存,则向操作结果,添加交互提示信息,以供用户确认。
此示例代码,来自于服务端服务(AbstractAppBusinessService),但OperationResult用法相同。
关键字
交互提示
示例代码
C#
{ string tranId = \;
privatevoid CheckMinusInv(AppBusinessServiceArgs e)
this.Option.TryGetVariableValue
//throw new KDException(\未知事务ID,该服务需要配置在库存更新服务后,不能被独立调用!\ //为了减少负库存检查空跑的概率,更新库存服务里到有实际更新SQL时才设置该Id,如果抛错会造成误判 //也就是说如果该操作没有执行任何库存更新的SQL,那么这个Id就为空,也就没必要检查负库存了 return; }
CommonService comService = newCommonService();
bool usePLNReserve = comService.IsUsePLNReserve(e.Context);
StringBuilder sBuilder = newStringBuilder(); List
DataTable dataTb = GetMinusInvDataSet(e.Context, tranId, usePLNReserve, e.BusinessInfo,
e.FormBusinessService.PreCondition);
if (dataTb == null) { return; }
//拼接错误消息并返回错误类型
DynamicObject errObj = GetMinusCheckErrInfo(e.Context, dataTb.Rows.ToArray
usePLNReserve);
//构造操作结果 if (errObj != null) {
BuildOperationResult(e.Context, errObj); }
//打包处理弱预留提示信息
string sql = \; List
paras.Add(newSqlParam(\, DbType.AnsiString, tranId));
if (DBUtils.ExecuteScalar
if (this.OperationResult != null) {
this.OperationResult.CustomMessageFormId = \;
this.OperationResult.CustomMessageFormParameter.CustomParams.Add(\, tranId); this.OperationResult.CustomMessageFormParameter.FormId = \; this.OperationResult.IsShowMessage = true; } } }
Option
操作附加参数对象,相当于一个定制的参数字典。
语法
属性定义 C# publicOperateOption Option { get; privateset; } 备注
调用操作处理,可以把一些特别的参数,封装到Option对象中,传入到操作引擎。
操作插件可以访问此属性对象,拿到传入的特别参数;
案例–寄售结算单只在列表上审核时,需检查价格
代码来源
Kingdee.K3.SCM.App.Sal.ServicePlugIn.ConsignSettle.Audit
需求背景 寄售结算单,在单据查看界面进行审核时,已经检查了价格,在审核操作时,无需再此检查;但是,在列表上进行审核时,则需要在审核操作中,特别检查价格。
实现方案
在单据查看界面,检查完价格之后,调用审核操作之前,把一个标志变量IsFromBill,放到Option中。
审核插件执行时,判断Option中的IsFromBill标志变量值,如果为true,则不检查价格;
关键字
操作附加参数传递操作定制参数传递 示例代码
C#
using System;
using System.Collections.Generic; using System.Linq; using System.Text;
using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
namespace Kingdee.K3.SCM.App.Sal.ServicePlugIn.ConsignSettle {
publicclassAudit : AbstractOperationServicePlugIn {
publicoverridevoid OnPreparePropertys(PreparePropertysEventArgs e) {
e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\);
e.FieldKeys.Add(\); }
publicoverridevoid OnAddValidators(AddValidatorsEventArgs e) {
bool isFromBill = this.Option.GetVariableValue
Kingdee.K3.SCM.App.Sal.ServicePlugIn.SaleOrder.SaleLimitPriceCtrlValidator salePrice = new
Kingdee.K3.SCM.App.Sal.ServicePlugIn.SaleOrder.SaleLimitPriceCtrlValidator();
salePrice.AlwaysValidate = true;
salePrice.EntityKey = \; salePrice.PriceCtrlTime = \;
salePrice.BillFormID = \; salePrice.OrderEntryName = \;
salePrice.OrderFinancialEntryName = \; e.Validators.Add(salePrice); } } } }
基类虚方法,可捕获的事件
操作插件基类,提供了多个按顺序执行的虚方法,插件按需要重载这些方法,即可适当的实际,对操作的执行进行干预;
本文将按照各虚方法的执行顺序进行介绍。
OnPrepareOperationServiceOption
初始化操作执行参数时触发。通常在此事件中,设置操作执行选项;
语法
虚方法定义 C# publicvirtualvoid OnPrepareOperationServiceOption(OnPrepareOperationServiceEventArgs e) 参数说明
参数e的属性如下: 属性 Context Context bool SurportBatchTransaction 描述 上下文 整批数据放在一个事务中处理,性能比较好; 默认为true,如果设置为false,则会为每条数据单独开启一个事务,单条数据操作失败,不影响其他数据; 操作处理时,开启一个事务进行数据保护; 默认为true,如果设置为false,则不开启事务; 是否允许平台自动添加操作成功的消息; 默认为true。业务上有非事务型的操作,需要设置此参数为false bool SupportTransaction bool AllowSetOperationResult
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作插件示例代码(5)在线全文阅读。
相关推荐: