二开案例.表单插件.工作流任务处理界面的提交事件
【应用场景】
工作流任务处理界面,希望能通过插件捕获到提交事件。
注意:此案例仅适应于工作流,审批流实现有差异,请勿生搬硬套。
【案例演示】
采购订单工作流任务处理界面,通过插件捕获提交事件。
【实现步骤】
<1>编写表单插件,代码如下。
using Kingdee.BOS.Core.Bill; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Util; using System; using System.ComponentModel; using System.Linq; namespace Jac.XkDemo.BOS.Business.PlugIn { /// <summary> /// 【表单插件】工作流任务处理界面的提交事件 /// </summary> [Description("【表单插件】工作流任务处理界面的提交事件"), HotUpdate] public class WfApprovalHandleFormPlugIn : AbstractDynamicFormPlugIn { public override void BarItemClick(BarItemClickEventArgs e) { base.BarItemClick(e); if (e.BarItemKey.EqualsIgnoreCase("tbWFSubmit")) { // 提交事件 // 获取提交状态 object successObj; if (!this.View.Session.TryGetValue("SubmitSuccess", out successObj) || successObj == null || !Convert.ToBoolean(successObj)) { // 提交失败,不处理 return; } var childPageIds = this.View.GetChildenPageIds(); if (childPageIds == null || childPageIds.Count == 0) { return; } var billView = this.View.GetView(childPageIds[0]) as IBillView; if (billView == null) { return; } if (!billView.BillBusinessInfo.GetForm().Id.EqualsIgnoreCase("PUR_PurchaseOrder")) { // TODO } // 通过工作流任务处理视图,获取工作流相关的数据 // 获取审核状态 #region 工作流 // TODO:此处判断终止流程的逻辑,可根据实际情况进行调整 var dissentValue = new[] {"Dissent", "03"}; // Consent审核通过 Reject驳回发起人 Dissent终止流程 或者是 01审核通过 02驳回发起人 03终止流程 var approvalTypeField = this.View.BillBusinessInfo.GetField("FRadioGroup"); if (approvalTypeField != null) { var approvalType = this.Model.GetValue(approvalTypeField.Key); if (approvalType == null || !dissentValue.Contains(approvalType.ToString())) { return; } } #endregion #region 审批流 else { approvalTypeField = this.View.BillBusinessInfo.GetField("FRApprovalGroup"); if (approvalTypeField != null) { var approvalType = this.Model.GetValue(approvalTypeField.Key); if (approvalType == null || !dissentValue.Contains(approvalType.ToString())) { return; } } } #endregion // 通过单据视图,获取单据相关的数据 var pkId = billView.Model.GetPKValue(); var billNo = billView.Model.GetValue(billView.BillBusinessInfo.GetBillNoField().Key); // TODO } } } }
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展工作流任务处理表单,注册表单插件,保存元数据,开发完毕。
工作流任务处理表单有很多个,需要每个都扩展挂插件。
下面仅以【信息中心_任务处理[WF_AssignmentApproval]】为例进行介绍:
可通过http数据监控,来判断当前任务处理界面是用的哪一个(任务处理界面是个多层嵌套结构,注意第二个GetFormMetaData请求才是我们要扩展的那个表单),如下图:
目前已知的任务处理界面有:
AF_ApprovalAssignBatchDeal AF_BillAssignment WF_BillAssignApproval WF_AssignmentApprovalH5 AP_ApprovalAssignHandleH5 AP_ApprovalAssignHandle INFO_IndexApproval WF_AssignmentApproval
历史设计的原因,导致工作流任务处理界面的二开非常复杂繁琐,请谨慎参考。
---------------------------------------------------------------------------------------------------------
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.表单插件.工作流任务处理界面的提交事件
【应用场景】工作流任务处理界面,希望能通过插件捕获到提交事件。注意:此案例仅适应于工作流,审批流实现有差异,请勿生搬硬套。【案例演...
点击下载文档
本文2024-09-23 03:58:39发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-162312.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章