二开案例.表单服务.操作监控服务

【应用场景】将某种通用的业务逻辑封装成一种服务,使得操作通过配置即可获得该服务能力,实现代码重用,降低系统复杂度。

【案例演示】以菜单订单的删除操作为例,封装一个操作监控的服务,监控采购订单的删除动作。
【实现步骤】
<1>编写表单服务,代码如下。
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.Enums;
using Kingdee.BOS.Core.Log;
using Kingdee.BOS.Util;
using System.Collections.Generic;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.App.PlugIn.Service
{
/// <summary>
/// 【表单服务】操作监控服务
/// </summary>
[Description("【表单服务】操作监控服务"), HotUpdate]
public class OperationMonitorAppBusinessService : AbstractAppBusinessService
{
#region 重载函数
/// <summary>
/// 重载是否允许在IDE中设定执行时机:本服务不允许在IDE设定时间点,服务要求必须在操作后执行
/// </summary>
public override bool SupportActionPoint
{
get { return false; }
}
/// <summary>
/// 重载执行时间点:设定本服务仅在操作后执行
/// </summary>
public override int ActionPoint
{
get { return (int)BOSEnums.Enu_ServiceActionPoint.AfterOperation; }
}
/// <summary>
/// 是否允许批量执行?本服务允许批量执行;
/// </summary>
public override bool RequestBatchProcess
{
get { return true; }
}
/// <summary>
/// 添加本服务必须加载的字段
/// </summary>
/// <param name="fieldKeys"></param>
public override void PreparePropertys(List<string> fieldKeys)
{
// TODO:fieldKeys.Add("???")
}
/// <summary>
/// 服务执行函数:在允许批量执行时,本函数不会被调用
/// </summary>
/// <param name="e"></param>
public override void DoAction(AppBusinessServiceArgs e)
{
// TODO: 本服务允许批量执行,本函数不会被调用,无需实现
}
/// <summary>
/// 服务执行函数:在允许批量执行时,本函数被调用
/// </summary>
/// <param name="e"></param>
public override void DoActionBatch(AppBusinessServiceArgs e)
{
// TODO
if (this.FormOperation.Operation.EqualsIgnoreCase("Delete"))
{
// 执行删除操作后写入上机日志
var logs = new List<LogObject>();
var billName = this.BusinessInfo.GetForm().Name;
var billNoField = this.BusinessInfo.GetBillNoField();
foreach (var dataEntity in e.DataEntities)
{
var log = new LogObject();
log.pkValue = dataEntity.DataEntity[0].ToString();
log.Description = string.Format("[{0}{1}]被{2}删掉啦!", billName, dataEntity[billNoField.PropertyName], Context.UserName);
log.OperateName = "表单服务保存上机日志";
log.ObjectTypeId = this.BusinessInfo.GetForm().Id;
log.SubSystemId = this.BusinessInfo.GetForm().SubsysId;
lo
二开案例.表单服务.操作监控服务
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



