2009-10-20 5 views
0

У меня есть рабочий процесс MOSS, где на первой форме пользователь может выбрать коллегу, чтобы оценить его. Скажем, пользователь А выбирает пользователя B.MOSS - Программный набор SpecialPermissions

После отправки формы, новая задача создается для пользователя B для оценки A. пользователя

Моя проблема заключается в том, что мне нужно, чтобы убедиться, что задача доступна только для пользователей A, а не пользователю B, ни любому другому пользователю в системе.

Я попытался установить свойство SpecialPermissions, но свойство может быть привязано при создании экземпляра рабочего процесса, поэтому я до сих пор не знаю, какой пользователь будет выбран пользователем A (в данном случае пользователем B), а затем может " t установите разрешения.

Я также попытался изменить свойство SpecialPermissions на метод MethodInvoking, но MOSS не обратит внимание на новые разрешения.

Каков правильный способ установки разрешений для задачи рабочего процесса?

+0

Эта задача создана как элемент списка? –

+0

Да, он создается как элемент списка в списке задач. – pgb

ответ

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); 
+0

Спасибо за код. Где я должен его использовать? У меня есть createTaskActivity, и если я добавлю onTaskCreated, рабочий процесс начнет сбой (это описано в MSDN). Если я вместо этого использую блок кода, у меня еще нет идентификатора taskID, поэтому я не могу установить разрешения. – pgb

+0

OnTaskCreated - это подходящее место. Если ваш onTaskChange не запускается, проверьте свои маркеры и идентификаторы задач и убедитесь, что они совпадают между объектами onTaskCreated/CreateTask/CompleteTask. –

Смежные вопросы