Example #1
0
        public void ProcessAclTest()
        {
            WfAclAdapter.Instance.ClearAll();

            IWfProcess process = ProcessHelper.CreateFreeStepsProcessDescriptor(
                OguObjectSettings.GetConfig().Objects["approver1"].User,
                OguObjectSettings.GetConfig().Objects["ceo"].User,
                OguObjectSettings.GetConfig().Objects["ceo"].User).StartupProcess();

            ((WfProcess)process).ResourceID = "resource2";

            process = process.MoveToDefaultActivityByExecutor();

            process = process.MoveToDefaultActivityByExecutor();

            process = process.MoveToDefaultActivityByExecutor();

            string userID = process.CurrentActivity.Assignees[0].User.ID;

            WfAclItemCollection currentItems = WfAclAdapter.Instance.Load(builder =>
            {
                builder.AppendItem("RESOURCE_ID", "resource2");
                builder.AppendItem("OBJECT_ID", userID);
            });

            Assert.AreEqual(1, currentItems.Count, "相同的人只保留一条记录");

            WfAclItemCollection allItems = WfAclAdapter.Instance.LoadByResourceID("resource2");

            Assert.AreEqual(2, allItems.Count, "只会有两条记录.在一个资源下同一个人只会有一条记录存在。但是如果存在委托时,则个数就不定");
        }
Example #2
0
        public void WfAclAdapterDataTest()
        {
            IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee();

            ((WfProcess)process).ResourceID = "resource2";

            ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.approver2, process);

            process = WfRuntime.GetProcessByProcessID(process.ID);
            ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.requestor, process);

            process = WfRuntime.GetProcessByProcessID(process.ID);
            ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.approver2, process);

            string userId = process.CurrentActivity.Assignees[0].User.ID;

            WfAclItemCollection itemColl = WfAclAdapter.Instance.Load(builder =>
            {
                builder.AppendItem("RESOURCE_ID", "resource2");
                builder.AppendItem("OBJECT_ID", userId);
            });

            Assert.AreEqual(1, itemColl.Count, "相同的人只保留一条记录");

            WfAclItemCollection coll = WfAclAdapter.Instance.LoadByResourceID("resource2");

            Assert.AreEqual(2, coll.Count, "只会有两条记录.在一个资源下同一个人只会有一条记录存在.但是如果存在委托时,则个数就不定");

            foreach (WfAclItem data in coll)
            {
                WfAclAdapter.Instance.Delete(data);
            }
        }
Example #3
0
        public void CheckUserInAcl(IUser user, IWfProcess process, ref bool continueCheck)
        {
            InSqlClauseBuilder inBuilder = new InSqlClauseBuilder("RESOURCE_ID");

            inBuilder.AppendItem(process.ResourceID, process.ID);

            WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder();

            whereBuilder.AppendItem("OBJECT_TYPE", "Users");
            whereBuilder.AppendItem("OBJECT_ID", user.ID);

            ConnectiveSqlClauseCollection connective = new ConnectiveSqlClauseCollection(inBuilder, whereBuilder);

            WfAclItemCollection aclItems = WfAclAdapter.Instance.LoadByBuilder(connective);

            (aclItems.Count > 0).FalseThrow(
                Translator.Translate(Define.DefaultCulture, "用户没有权限打开此文件"));
        }
        private static WfAclItemCollection CreateNewAcl(IWfActivity activity, IEnumerable <IUser> targetUsers)
        {
            WfAclItemCollection result = new WfAclItemCollection();

            foreach (IUser user in targetUsers)
            {
                WfAclItem acl = new WfAclItem();

                acl.ObjectID   = user.ID;
                acl.ObjectName = user.DisplayName;
                acl.ObjectType = "Users";
                acl.ResourceID = activity.Process.ResourceID;
                acl.Source     = activity.ID;

                result.Add(acl);
            }

            return(result);
        }
        public WfAclItemCollection ToAcl(string resourceID, string source)
        {
            WfAclItemCollection result = new WfAclItemCollection();

            foreach (WfAssignee assignee in this)
            {
                WfAclItem item = new WfAclItem();

                item.ObjectID   = assignee.User.ID;
                item.ObjectName = assignee.User.DisplayName;
                item.ObjectType = SchemaType.Users.ToString();
                item.ResourceID = resourceID;
                item.Source     = source;

                result.Add(item);
            }

            return(result);
        }
Example #6
0
        /// <summary>
        /// 将Task的收件人,转换成AclItemCollection
        /// </summary>
        /// <returns></returns>
        public WfAclItemCollection ToAcl()
        {
            WfAclItemCollection result = new WfAclItemCollection();

            foreach (UserTask task in this)
            {
                WfAclItem item = new WfAclItem();

                item.ObjectID   = task.SendToUserID;
                item.ObjectName = task.SendToUserName;
                item.ObjectType = SchemaType.Users.ToString();
                //item.ResourceID = task.ResourceID;
                item.ResourceID = WfRuntime.GetProcessByProcessID(task.ProcessID).SearchID;
                item.Source     = task.ActivityID;

                result.Add(item);
            }

            return(result);
        }
Example #7
0
        /// <summary>
        /// 用户是否在Acl中
        /// </summary>
        /// <param name="process"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public static bool IsUserInAcl(this IWfProcess process, IUser user)
        {
            bool result = false;

            if (OguUser.IsNotNullOrEmpty(user))
            {
                InSqlClauseBuilder inBuilder = new InSqlClauseBuilder("RESOURCE_ID");

                inBuilder.AppendItem(process.ResourceID, process.ID);

                WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder();

                whereBuilder.AppendItem("OBJECT_TYPE", "Users");
                whereBuilder.AppendItem("OBJECT_ID", user.ID);

                ConnectiveSqlClauseCollection connective = new ConnectiveSqlClauseCollection(inBuilder, whereBuilder);

                WfAclItemCollection aclItems = WfAclAdapter.Instance.LoadByBuilder(connective);

                result = aclItems.Count > 0;
            }

            return(result);
        }
Example #8
0
        public void AclAdapterTest()
        {
            WfAclAdapter.Instance.ClearAll();

            WfAclItem item = new WfAclItem();

            item.ResourceID = "resource1";
            item.ObjectID   = "object1";
            item.ObjectType = "dept";
            item.Source     = "workfolw";

            WfAclAdapter.Instance.Update(item);

            WfAclItemCollection coll = WfAclAdapter.Instance.Load(builder => builder.AppendItem("RESOURCE_ID", "resource1"));

            Assert.IsTrue(coll.Count > 0);

            WfAclItemCollection itemColl = WfAclAdapter.Instance.LoadByResourceID("resource1");

            Assert.IsTrue(coll.Count > 0);

            Assert.AreEqual(coll[0].ResourceID, itemColl[0].ResourceID);
            Assert.AreEqual(coll[0].ObjectID, itemColl[0].ObjectID);
        }
        private static WfAclItemCollection CreateNewAcl(IWfActivity activity, IEnumerable<IUser> targetUsers)
        {
            WfAclItemCollection result = new WfAclItemCollection();

            foreach (IUser user in targetUsers)
            {
                WfAclItem acl = new WfAclItem();

                acl.ObjectID = user.ID;
                acl.ObjectName = user.DisplayName;
                acl.ObjectType = "Users";
                acl.ResourceID = activity.Process.ResourceID;
                acl.Source = activity.ID;

                result.Add(acl);
            }

            return result;
        }