工作流流程管理中心和流程报表按组织隔离方案
1、流程管理按组织隔离
首先编写流程管理列表插件,参考如下:
using Kingdee.BOS.Core; using Kingdee.BOS.ServiceHelper; using System.Text; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Contracts; using Kingdee.BOS.Core.Bill; namespace DSF.Workflow.PlugIns { /// <summary> /// 流程管理_流程实例插件 /// </summary> public class ProcManageProcInstExt : AbstractListPlugIn { public override void PrepareFilterParameter(Core.List.PlugIn.Args.FilterArgs e) { List<long> lstOrgs = PermissionServiceHelper.GetPermissionOrg(this.Context, new Kingdee.BOS.Core.Permission.BusinessObject() { Id = "WF_ProcManager" }, Kingdee.BOS.Core.Permission.PermissionConst.View); if (lstOrgs.Count > 0) { string sql = string.Format(" FTmpId.FOrgId.Id in ({0})", string.Join(",", lstOrgs)); e.AppendQueryFilter(sql); } else { e.AppendQueryFilter("1<>1"); } } } }
上述插件代码主要是获取当前用户流程管理中心有权限的组织,然后将组织拼接到当前的查询条件中,用来控制流程实例列表仅显示自己有权的组织的流程。
然后打开设计器,打开流程管理实例表单,点查找按钮输入“WF_ProcInstBill”查找,双击打开流程实例表单,右键扩展修改表单属性,打开列表,注册上面编写的列表插件,然后保存元数据。
再打开流程管理界面看效果,应该就已经按组织进行隔离了。是不是很简单?【emoji】
2、流程报表按组织隔离
以流程时间耗费分析报表为例,思路如下,控制了过滤界面的组织字段,仅能查询有权限的组织,这样就能控制整个报表的组织权限了。
设计器打开报表过滤界面,先把组织字段设置为必录,然后编写过滤界面表单插件,针对组织字段添加组织过滤条件。报表过滤界面如下,扩展后先修改组织字段必录属性:
编写插件,代码参考如下:
using Kingdee.BOS.Core.Bill; using Kingdee.BOS.Core.CommonFilter.PlugIn; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Report.PlugIn; using Kingdee.BOS.Core.SqlBuilder; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DSF.Workflow.PlugIns.Report { public class WFReportFilterPlugInExt : AbstractCommonFilterPlugIn { public override void BeforeF7Select(BeforeF7SelectEventArgs e) { if (e.FieldKey.Equals("FOrgs", StringComparison.OrdinalIgnoreCase)) { List<long> lstOrgs = PermissionServiceHelper.GetPermissionOrg(this.Context, new Kingdee.BOS.Core.Permission.BusinessObject() { Id = this.View.BusinessInfo.GetForm().Id }, Kingdee.BOS.Core.Permission.PermissionConst.View); if (lstOrgs.Count > 0) { e.ListFilterParameter.Filter = string.Format(" FOrgId in ({0})", string.Join(",", lstOrgs)); } } } } } 插件开发完成后,注册到报表上,保存报表元数据。
然后在星空打开流程时间耗费分析报表,这个时候组织隔离就应该生效了。其他的工作流报表组织隔离都可以参考这个方法来,只要改下报表元数据配置就可以了,插件都不需要再开发,直接使用上面编写的过滤插件。
这样工作流的流程管理和报表分析就全面进行组织隔离控制了。
工作流流程管理中心和流程报表按组织隔离方案
1、流程管理按组织隔离 首先编写流程管理列表插件,参考如下:using Kingdee.BOS.Core;using Kingdee.BOS.ServiceHelper;using System.T...
点击下载文档
上一篇:星空消息队列服务异常诊断步骤下一篇:第三方系统集成星空工作流
本文2024-09-23 03:36:54发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-159979.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章