a
This commit is contained in:
191
01.扩展/K3CExttensionMethods/Class1.cs
Normal file
191
01.扩展/K3CExttensionMethods/Class1.cs
Normal file
@@ -0,0 +1,191 @@
|
||||
using Kingdee.BOS.Core.DynamicForm.PlugIn;
|
||||
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
|
||||
using Kingdee.BOS.Log;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace K3CExttensionMethods
|
||||
{
|
||||
internal class Class1 : AbstractOperationServicePlugIn
|
||||
{
|
||||
#region event
|
||||
|
||||
/// <summary>
|
||||
/// 选项设置
|
||||
/// 1.在操作服务初始化是执行
|
||||
/// 2.可以对操作的执行参数进行设置,比如是否是否启动事务,是否支持批量处理等
|
||||
/// </summary>
|
||||
/// <param name="e"></param>
|
||||
public override void OnPrepareOperationServiceOption(OnPrepareOperationServiceEventArgs e)
|
||||
{
|
||||
PrintEventInfo("OnPrepareOperationServiceOption", e);
|
||||
base.OnPrepareOperationServiceOption(e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 在执行保存操作前触发
|
||||
/// 1.此时数据包没有填充主键数据
|
||||
/// 2.只有继承了AbstractSave的保存服务才会触发此事件
|
||||
/// </summary>
|
||||
/// <param name="e"></param>
|
||||
public override void BeforeDoSaveExecute(BeforeDoSaveExecuteEventArgs e)
|
||||
{
|
||||
PrintEventInfo("BeforeDoSaveExecute", e);
|
||||
base.BeforeDoSaveExecute(e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载指定字段到实体数据包里
|
||||
/// 1.在列表上执行操作时,单据的字段并没有被完全加载。 如果操作插件用到了未被加载的字段,一定会中断。
|
||||
/// 2.本事件允许插件,强制要求加载某些字段,避免中断
|
||||
/// </summary>
|
||||
/// <param name="e"></param>
|
||||
public override void OnPreparePropertys(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(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(BeforeExecuteOperationTransaction e)
|
||||
{
|
||||
PrintEventInfo("BeforeExecuteOperationTransaction", e);
|
||||
base.BeforeExecuteOperationTransaction(e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 操作事物前事件(事务内触发)
|
||||
/// </summary>
|
||||
/// 1.此事件在操作校验之后
|
||||
/// 2.此事件在操作事务开始之后
|
||||
/// 3.此事件在操作执行代码之前
|
||||
/// 4.此事件中的数据库处理,受操作的事务保护
|
||||
/// 5.通常此事件,可以用来做数据准备,在操作之前,提前写数据到库
|
||||
/// <param name="e"></param>
|
||||
public override void BeginOperationTransaction(BeginOperationTransactionArgs e)
|
||||
{
|
||||
PrintEventInfo("BeginOperationTransaction", e);
|
||||
base.BeginOperationTransaction(e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 操作事物后事件(事务内触发)
|
||||
/// 1.此事件在操作执行代码之后,操作的内部逻辑已经执行完毕
|
||||
/// 2.此事件在操作事务提交之前
|
||||
/// 3.此事件中的数据库处理,受操作的事务保护
|
||||
/// 4.通常此事件,可以用来做同步数据,如同步生成其他单据,而且需要受事务保护
|
||||
/// </summary>
|
||||
/// <param name="e"></param>
|
||||
public override void EndOperationTransaction(EndOperationTransactionArgs e)
|
||||
{
|
||||
PrintEventInfo("EndOperationTransaction", e);
|
||||
base.EndOperationTransaction(e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 内部事务执行失败后,调用回滚数据事件(事务外触发)
|
||||
/// 1.此事件只有在操作执行过程中发生异常时才触发
|
||||
/// 2.操作异常时,回滚内存中的数据
|
||||
/// 3.避免访问数据库造成事务状态无效的错误
|
||||
/// </summary>
|
||||
/// <param name="e"></param>
|
||||
public override void RollbackData(OperationRollbackDataArgs e)
|
||||
{
|
||||
PrintEventInfo("RollbackData", e);
|
||||
base.RollbackData(e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 执行操作事务后事件,通知插件对象执行其它事务无关的业务逻辑(事务外触发)
|
||||
/// 1.此事件在操作执行后,操作的内部逻辑已经执行完毕;
|
||||
/// 2.此事件在操作事务提交之后;
|
||||
/// 3.此事件中的数据库处理,不受操作的事务保护
|
||||
/// 4.通常此事件,也可以做同步数据,但是此同步数据的成功与否,不需影响操作
|
||||
/// </summary>
|
||||
/// <param name="e"></param>
|
||||
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
|
||||
{
|
||||
PrintEventInfo("AfterExecuteOperationTransaction", e);
|
||||
base.AfterExecuteOperationTransaction(e);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region private method
|
||||
|
||||
/// <summary>
|
||||
/// 事件执行次数计数器
|
||||
/// </summary>
|
||||
private int counter;
|
||||
|
||||
/// <summary>
|
||||
/// 事件执行次数计数器
|
||||
/// </summary>
|
||||
private int Counter
|
||||
{
|
||||
get { return ++counter; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 输出事件执行日志
|
||||
/// </summary>
|
||||
/// <param name="eventName">事件名称</param>
|
||||
/// <param name="args">事件参数</param>
|
||||
private void PrintEventInfo(string eventName, params object[] args)
|
||||
{
|
||||
var formId = GetFormId();
|
||||
var parameters = string.Empty;
|
||||
try
|
||||
{
|
||||
parameters = JsonConvert.SerializeObject(args);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
var log = string.Format("序号:{0},执行时间:{1},表单Id:{2},事件名称:{3},事件参数:{4}", Counter, DateTime.Now.ToString("yyyy -MM-dd HH:mm:ss.fff"), formId, eventName, parameters);
|
||||
Debug.Print(log);
|
||||
Logger.Error("EVENT", log, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取业务对象标识
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private string GetFormId()
|
||||
{
|
||||
return this.BusinessInfo.GetForm().Id;
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
@@ -62,6 +62,7 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Class1.cs" />
|
||||
<Compile Include="HttpClient.cs" />
|
||||
<Compile Include="ListHeaderExtension.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
|
||||
Reference in New Issue
Block a user