二开案例.服务插件.获取工作流审核调用堆栈

【应用场景】
日志跟踪。
工作流偶发出现单据的流程实例尚未结束,但是单据已被审核,且不知道是何原因被审核,此时可通过挂载此插件进行追踪。
【案例演示】
采购订单,捕获审批时的调用堆栈。
【实现步骤】
<1>编写服务插件,代码如下。
using Kingdee.BOS;
using Kingdee.BOS.App.Core;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Transactions;
namespace Jac.XkDemo.BOS.App.PlugIn
{
/// <summary>
/// 【服务插件】获取工作流审核调用堆栈
/// </summary>
[Description("【服务插件】获取工作流审核调用堆栈"), HotUpdate]
public class WFAuditLogServicePlugInn : AbstractOperationServicePlugIn
{
public override void EndOperationTransaction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EndOperationTransactionArgs e)
{
var formId = this.BusinessInfo.GetForm().Id;
foreach (var obj in e.DataEntitys)
{
try
{
if (!obj.Contains("Id") || obj["Id"] == null) continue;
var log = GetCurrentStackInfo();
var keyValue = (obj["Id"] ?? "").ToString();
using (var tran = new KDTransactionScope(TransactionScopeOption.Suppress))
{
WriteActionEventLog(this.Context, formId, keyValue, log);
tran.Complete();
}
}
catch
{
}
}
}
/// <summary>
/// 获取堆栈信息
/// </summary>
/// <param name="topLevel"></param>
/// <returns></returns>
private string GetCurrentStackInfo(int topLevel = 100)
{
var logs = new List<string>();
logs.Add("堆栈信息:");
var stackFrames = new StackTrace().GetFrames();
foreach (var stackFrame in stackFrames)
{
try
{
topLevel--;
if (topLevel < 0)
{
break;
}
var method = stackFrame.GetMethod();
var log = string.Format("【{0}】=>{1}->{2}->{3}", method.Name, method.Module, method.DeclaringType == null ? "" : method.DeclaringType.FullName, method);
logs.Add(log);
}
catch
{
}
}
var logData = string.Join("\r\n", logs);
return logData;
}
/// <summary>
/// 添加工作流节点日志
/// </summary>
/// <param name="ctx"></param>
/// <param name="formId"></param>
/// <param name="keyValue"></param>
/// <param name="log"></param>
private voi二开案例.服务插件.获取工作流审核调用堆栈
【应用场景】日志跟踪。工作流偶发出现单据的流程实例尚未结束,但是单据已被审核,且不知道是何原因被审核,此时可通过挂载此插件进行追踪...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



