二开案例.服务插件.动态注册服务插件

【应用场景】假如要监控供应链模块下的所有单据的删除操作,正常操作是挨个扩展供应链模块下的单据,给删除操作注册服务插件,这个工程量浩大,不易维护。平台提供了动态注册操作服务插件的接口,可快速实现此类需求。

【案例演示】对采购订单、采购申请单从后台注册服务插件,实现单据删除后,记录删除日志的功能。
【实现步骤】
<1>编写服务插件,代码如下。
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Log;
using Kingdee.BOS.Util;
using System.Collections.Generic;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.App.PlugIn
{
/// <summary>
/// 【服务插件】动态注册服务插件
/// </summary>
[HotUpdate]
[Description("【服务插件】动态注册服务插件")]
public class DeleteDynamicOperationServicePlugIn : AbstractOperationServicePlugIn
{
/// <summary>
/// 执行操作事务后事件,通知插件对象执行其它事务无关的业务逻辑(事务外触发)
/// </summary>
/// <param name="e"></param>
/// <remarks>
/// 1. 此事件在操作执行后,操作的内部逻辑已经执行完毕;
/// 2. 此事件在操作事务提交之后;
/// 3. 此事件中的数据库处理,不受操作的事务保护
/// 4. 通常此事件,也可以做同步数据,但是此同步数据的成功与否,不需影响操作
/// </remarks>
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
{
base.AfterExecuteOperationTransaction(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.DataEntitys)
{
var log = new LogObject();
log.pkValue = dataEntity[0].ToString();
log.Description = string.Format("[{0}{1}]被{2}删掉啦!", billName, dataEntity[billNoField.PropertyName], Context.UserName);
log.OperateName = "动态服务插件保存
二开案例.服务插件.动态注册服务插件
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



