二开案例.服务插件.全事件演示

【案例演示】
演示操作服务插件所包含的全部事件及其触发顺序。
【实现步骤】
<1>编写操作服务插件,代码如下。
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.App.PlugIn
{
/// <summary>
/// 【服务插件】全事件
/// https://vip.kingdee.com/article/122724714954450688
/// </summary>
[Description("【服务插件】全事件"), HotUpdate]
public class AllEventOperationServicePlugIn : Kingdee.BOS.Core.DynamicForm.PlugIn.AbstractOperationServicePlugIn
{
#region event
/// <summary>
/// 选项设置
/// 1.在操作服务初始化是执行
/// 2.可以对操作的执行参数进行设置,比如是否是否启动事务,是否支持批量处理等
/// </summary>
/// <param name="e"></param>
public override void OnPrepareOperationServiceOption(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.OnPrepareOperationServiceEventArgs e)
{
PrintEventInfo("OnPrepareOperationServiceOption", e);
base.OnPrepareOperationServiceOption(e);
}
/// <summary>
/// 在执行保存操作前触发
/// 1.此时数据包没有填充主键数据
/// 2.只有继承了AbstractSave的保存服务才会触发此事件
/// </summary>
/// <param name="e"></param>
public override void BeforeDoSaveExecute(Kingdee.BOS.Core.DynamicForm.PlugIn.BeforeDoSaveExecuteEventArgs e)
{
PrintEventInfo("BeforeDoSaveExecute", e);
base.BeforeDoSaveExecute(e);
}
/// <summary>
/// 加载指定字段到实体数据包里
/// 1.在列表上执行操作时,单据的字段并没有被完全加载。 如果操作插件用到了未被加载的字段,一定会中断。
/// 2.本事件允许插件,强制要求加载某些字段,避免中断
/// </summary>
/// <param name="e"></param>
public override void OnPreparePropertys(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.PreparePropertysEventArgs e)
{
PrintEventInfo("OnPreparePropertys", e);
base.OnPreparePropertys(e);
}
/// <summary>
/// 初始化操作结果
/// </summary>
/// <param name="result"></param>
public override void InitializeOperationResult(Kingdee.BOS.Core.DynamicForm.IOperationResult result)
{
PrintEventInfo("InitializeOperationResult", result);
base.InitializeOperationResult(result);
}
/// <summary>
/// 添加自定义数据校验器
/// 在系统开始执行校验前,插件可以追加自己的校验器进入操作校验器集合
/// </summary>
/// <param name="e"></param>
public override void OnAddValidators(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AddValidatorsEventArgs e)
{
PrintEventInfo("OnAddValidators", e);
base.OnAddValidators(e);
}
/// <summary>
/// 执行操作事务前事件,通知插件对要处理的数据进行排序等预处理(事务外触发)
/// 1.此事件在操作校验之后、操作实现代码之前执行
/// 2.此事件在操作事务之前,即此事件中的数据库处理,不受操作的事务保护
/// 3.通常此事件,也可以用来进行数据校验
/// </summary>
/// <param name="e">e.SelectedRows 准备要处理的扩展实体 e.DataEntitys 处理后的实体</param>
public override void BeforeExecuteOperationTransaction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeExecuteOperationTransaction e)
{
PrintEventInfo("BeforeExecuteOperationTransaction", e);
base.BeforeExecuteOperationTransaction(e);
}
/// <summary>
/// 操作事物前事件(事务内触发)
/// </summary>
/// 1.此事件在操作校验之后
/// 2.此事件在操作事务开始之后
/// 3.此事件在操作执行代码之前
/// 4.此事件中的数据库处理,受操作的事务保护
/// 5.通常此事件,可以用来做数据准备,在操作之前,提前写数据到库
/// <param name="e"></param>
public override void BeginOperationTransaction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeginOperationTransactionArgs e)
{
PrintEventInfo("BeginOperationTransaction", e);
base.BeginOperationTransaction(e);
}
/// <summary>
/// 操作事物后事件(事务内触发)
/// 1.此事件在操作执行代码之后,操作的内部逻辑已经执行完毕
/// 2.此事件在操作事务提交之前
/// 3.此事件中的数据库处理,受操作的事务保护
/// 4.通常此事件,可以用来做同步数据,如同步生成其他单据,而且需要受事务保护
/// </summary>
/// <param name="e"></param>
public override void EndOperationTransaction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EndOperationTransactionArgs e)
{
PrintEventInfo("EndOperationTransa二开案例.服务插件.全事件演示
【案例演示】演示操作服务插件所包含的全部事件及其触发顺序。【实现步骤】<1>编写操作服务插件,代码如下。using Kingdee.BOS.Util;using ...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



