操作插件示例代码(2)

2019-02-21 00:46

操作插件概览

如下是一个典型的操作插件定义代码:

C#

using System;

using System.Collections.Generic; using System.Linq; using System.Text;

using Kingdee.BOS; using Kingdee.BOS.Util;

using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

namespace SamplePlugIn.ServicePlugIn {

///

///操作服务端插件示例 ///

///

/// 1. 示例如何强制要求加载某字段

/// 2. 示例如何注入校验器,校验器可以通用,为避免在各操作中重复编码,剥离出来,然后各操作注入剥离出的校验器

/// 3. 说明一些关键事件的用途 ///

[System.ComponentModel.Description(\操作服务端插件示例\)] publicclassOperationPlugSample : AbstractOperationServicePlugIn {

///

///操作初始化时,确认操作执行参数 ///

///

publicoverridevoid OnPrepareOperationServiceOption(

OnPrepareOperationServiceEventArgs e)

{

base.OnPrepareOperationServiceOption(e); }

///

///数据加载前,确保需要的属性被加载 ///

///

///在列表上执行操作时,单据的字段并没有被完全加载。 ///如果操作插件用到了未被加载的字段,一定会中断; ///本事件允许插件,强制要求加载某些字段,避免中断 ///

publicoverridevoid OnPreparePropertys(PreparePropertysEventArgs e) {

// 如下代码行,指定字段xxxxx的Key,强制要求加载字段 e.FieldKeys.Add(\); }

///

///操作执行前,加载操作校验器 ///

///

///在系统开始执行校验前,插件可以追加自己的校验器进入操作校验器集合 ///

publicoverridevoid OnAddValidators(AddValidatorsEventArgs e) {

// 如下代码行,示例加入自定义的校验器

// 自定义的校验器,必须从基类 Kingdee.BOS.Core.Validation.AbstractValidator 派生 e.Validators.Add(newOperationSampleValidator()); }

#region接下来按照事件的执行事件顺序,由前向后逐一介绍各事件

///

///操作执行前,事务开始前事件 ///

///

/// 1. 此事件在操作校验之后、操作实现代码之前执行

/// 2. 此事件在操作事务之前,即此事件中的数据库处理,不受操作的事务保护 /// 3. 通常此事件,也可以用来进行数据校验 ///

publicoverridevoid BeforeExecuteOperationTransaction(

BeforeExecuteOperationTransaction e)

{ // TODO: ....

// 如下代码,示意校验不通过时,终止操作的执行 e.CancelMessage = \测试终止操作执行\; e.Cancel = true; }

///

///操作执行前,事务开始后事件 ///

///

/// 1. 此事件在操作校验之后 /// 2. 此事件在操作事务开始之后 /// 3. 此事件在操作执行代码之前

/// 4. 此事件中的数据库处理,受操作的事务保护

/// 5. 通常此事件,可以用来做数据准备,在操作之前,提前写数据到库 ///

publicoverridevoid BeginOperationTransaction(BeginOperationTransactionArgs e) {

// TODO: 进行数据准备,甚至写预处理数据到数据库 }

///

///操作执行后,事务结束前 ///

///

/// 1. 此事件在操作执行代码之后,操作的内部逻辑已经执行完毕 /// 2. 此事件在操作事务提交之前

/// 3. 此事件中的数据库处理,受操作的事务保护

/// 4. 通常此事件,可以用来做同步数据,如同步生成其他单据,而且需要受事务保护 ///

publicoverridevoid EndOperationTransaction(EndOperationTransactionArgs e) {

// TODO:进行同步数据处理 }

///

///操作执行后,事务结束后 ///

///

/// 1. 此事件在操作执行后,操作的内部逻辑已经执行完毕; /// 2. 此事件在操作事务提交之后;

/// 3. 此事件中的数据库处理,不受操作的事务保护

/// 4. 通常此事件,也可以做同步数据,但是此同步数据的成功与否,不需影响操作 ///

publicoverridevoid AfterExecuteOperationTransaction(

AfterExecuteOperationTransaction e)

{

// TODO:对操作结果进行修订,使提示更加人性化 }

#endregion }

///

///操作校验器(示例) ///

[System.ComponentModel.Description(\操作校验器(示例)\)]

classOperationSampleValidator : Kingdee.BOS.Core.Validation.AbstractValidator {

#region重载函数

///

///校验主实体,以此实体数据包进行循环,逐行校验 ///

publicoverridestring EntityKey { get

{

// 根据实际校验要求,返回单据头或者单据体Key return\; } }

///

///执行校验,把校验结果注入到validateContext中 ///

///

Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities,

Kingdee.BOS.Core.Validation.ValidateContext validateContext, Kingdee.BOS.Context ctx) {

foreach (var dataEntity in dataEntities) {

// TODO: 逐个数据包执行校验代码

// 如下代码,示意如何注入校验提示,后续操作,会自动避开校验没通过的数据包

validateContext.AddError(dataEntity.DataEntity, new Kingdee.BOS.Core.Validation.ValidationErrorInfo( \出错字段.Key\, // 出错的字段Key,可以空

Convert.ToString(dataEntity.DataEntity[0]), // 数据包内码,必填,后续操作会据此内码避开此数据包 dataEntity.DataEntityIndex, // 出错的数据包在全部数据包中的顺序 dataEntity.RowIndex, // 出错的数据行在全部数据行中的顺序,如果

校验基于单据头,此为0

\, // 错误编码,可以任意设定一个字符,主要用于追查错误来源 \错误的详细提示信息\, // 错误的详细提示信息 \错误摘要\, // 错误的简明提示信息

Kingdee.BOS.Core.Validation.ErrorLevel.Error)); // 错误级别:警告、

错误...

} }

#endregion重载函数 } }

如何启用操作插件

插件编写完毕,类库编译通过后,把类库文件复制到K/3 Cloud站点目录的\\Bin子目录;

然后进入BOS设计器,打开单据操作配置界面,配置服务插件:


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

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

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

马上注册会员

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