二开案例.单据插件.终止流程且反审核

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.单据插件.终止流程且反审核

【应用场景】

通过插件的方式,对已启动流程的单据,执行终止流程且反审核操作。



【案例演示】

采购订单,启动工作流后,执行终止流程且反审核操作。

上传图片



【实现步骤】

<1>编写单据插件,代码如下。

using Kingdee.BOS;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.FormElement;
using Kingdee.BOS.Orm;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using Kingdee.BOS.Workflow.Models.EnumStatus;
using Kingdee.BOS.Workflow.ServiceHelper;
using System.ComponentModel;
using System.Linq;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
    /// <summary>
    /// 【单据插件】终止流程且反审核
    /// </summary>
    [Description("【单据插件】终止流程且反审核"), HotUpdate]
    public class AbortProcInstWithUnAuditBillPlugIn : AbstractBillPlugIn
    {
        public override void BarItemClick(BarItemClickEventArgs e)
        {
            base.BarItemClick(e);
            if (e.BarItemKey == "test")
            {
                var result = AbortProcInstWithUnAudit(this.Context, this.View.BillBusinessInfo.GetForm().Id, new object[] { this.Model.DataObject[0].ToString() });
                this.View.ShowOperateResult(result.OperateResult);
            }
        }
        /// <summary>
        /// 终止流程且反审核
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="formId"></param>
        /// <param name="pkids"></param>
        /// <returns></returns>
        private static IOperationResult AbortProcInstWithUnAudit(Context ctx, string formId, object[] pkids)
        {
            var formMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, formId);
            var abortOp = formMetadata.BusinessInfo.GetForm().FormOperations.FirstOrDefault(p => p.OperationId == FormOperation.Operation_AbortWithUnAuditProcInst);
            var operationNumber = abortOp == null ? string.Empty : abortOp.Operation;
            // 获取单据上尚未完成的流程实例的内码
            var dic = ProcManageServiceHelper.GetUnCompletedProcInstIds(ctx, formId, pkids);
            var existIds = dic.Where(m => !string.IsNullOrWhiteSpace(m.Value)).ToList();
            if (existIds.Count == 0)
            {
                var resultError = new OperationResult();
                resultError.IsSuccess = false;
                resultError.OperateResult.Add(new OperateResult
                {
                    SuccessStatus = false,
                    MessageType = MessageType.FatalError,
                    Message = "单据没有关联工作流实例,不需要终止!"
                });
                return resultError;
            }
            var option = OperateOption.Create();
            option.SetVariableValue("abortDisposition", "");
            option.SetVariableValue("procOperationType", ProcOperationType.Abort);
            option.SetVariableValue("ProcInstIds", existIds.Select(m => m.Value).ToArray());// 必填
            var result = BusinessDataServiceHelper.AbortWithUnAudit(ctx, formMetadata.BusinessInfo, pkids, operationNumber, option);
            return result;
        }
    }
}

<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。

上传图片


<3>BOSIDE扩展采购订单,注册表单插件,保存元数据,开发完毕。

上传图片



【功能验证】

<1>登录业务站点,打开采购订单编辑界面,先提交流程,再点击test菜单,流程被结束,单据被反审核,效果如下图。

上传图片

---------------------------------------------------------------------------------------------------------













【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.单据插件.终止流程且反审核

【应用场景】通过插件的方式,对已启动流程的单据,执行终止流程且反审核操作。【案例演示】采购订单,启动工作流后,执行终止流程且反审核...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息