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, "只会有两条记录.在一个资源下同一个人只会有一条记录存在。但是如果存在委托时,则个数就不定"); }
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); } }
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); }
/// <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); }
/// <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); }
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; }