操作插件示例代码(5)

2019-02-21 00:46

} } }

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(\, out tranId); if (string.IsNullOrWhiteSpace(tranId)) {

//throw new KDException(\未知事务ID,该服务需要配置在库存更新服务后,不能被独立调用!\ //为了减少负库存检查空跑的概率,更新库存服务里到有实际更新SQL时才设置该Id,如果抛错会造成误判 //也就是说如果该操作没有执行任何库存更新的SQL,那么这个Id就为空,也就没必要检查负库存了 return; }

CommonService comService = newCommonService();

bool usePLNReserve = comService.IsUsePLNReserve(e.Context);

StringBuilder sBuilder = newStringBuilder(); List sList = newList();

DataTable dataTb = GetMinusInvDataSet(e.Context, tranId, usePLNReserve, e.BusinessInfo,

e.FormBusinessService.PreCondition);

if (dataTb == null) { return; }

//拼接错误消息并返回错误类型

DynamicObject errObj = GetMinusCheckErrInfo(e.Context, dataTb.Rows.ToArray(), true,

usePLNReserve);

//构造操作结果 if (errObj != null) {

BuildOperationResult(e.Context, errObj); }

//打包处理弱预留提示信息

string sql = \; List paras = newList();

paras.Add(newSqlParam(\, DbType.AnsiString, tranId));

if (DBUtils.ExecuteScalar(e.Context, sql, 0, paras.ToArray()) > 0) {

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(\, false); if ( !isFromBill) {

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


操作插件示例代码(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:软件科技有限责任公司企业计划书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: