工作流流程管理中心和流程报表按组织隔离方案

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

工作流流程管理中心和流程报表按组织隔离方案

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...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息