MOSS - 以编程方式设置SpecialPermissions

时间:2009-10-20 18:59:39

标签: permissions moss workflow

我有一个MOSS工作流程,在第一个表单上,用户可以选择一位同事来评估他。假设用户A选择用户B.

提交表单后,将为用户B创建一个新任务,以评估用户的A.

我的问题是我需要确保该任务只能由用户A访问,而不是用户B,也不能用于系统中的任何其他用户。

我尝试设置SpecialPermissions属性,但是在实例化工作流时可以绑定属性,所以我仍然不知道用户A将选择哪个用户(在这种情况下是用户B),并且然后无法设置权限。

我还尝试更改SpecialPermissions方法的MethodInvoking属性,但MOSS不会关注新权限。

在工作流任务上设置权限的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

以下是我的工作方式......这是我分散在多个函数中的一小部分代码。

spListItem.BreakRoleInheritance(false);
foreach (SPRoleAssignment spRoleAssignment in spListItem.RoleAssignments)
{
    if (!spRoleAssignment.RoleDefinitionBindings.Contains(this.workflowProperties.Web.RoleDefinitions.GetByType(SPRoleType.Administrator)))
    { // don't remove administrators
                spRoleAssignment.RoleDefinitionBindings.RemoveAll();
                spRoleAssignment.Update();
    }
}
SPRoleDefinition roledefinition = web.RoleDefinitions.GetByType(SPRoleType.Contribute);
SPRoleAssignment myRoleAssignment = new SPRoleAssignment(accountName, "", "", "");
myRoleAssignment.RoleDefinitionBindings.Add(roledefinition);
spListItem.RoleAssignments.Add(myRoleAssignment);