导航

  最近在做状态机工作流,刚好碰到关于任务的权限的问题。

  看过听风且呤的文章 我的任务不给你看

  发现在createTask1_MethodInvoking 里写代码 specialPermissions.Add(assignee.LoginName, SPRoleType.Contributor);

确实不行。经过一天时间的研究,找到了方法。其实是可以的,可能在循环工作流里也行。方法如下:

1. 关键代码:

     在工作流代码里加入属性TaskPermissions。我的任务用户是动态的,所以用taskProperties.AssignedTo,这个taskProperties.AssignedTo可以在createTask1_MethodInvoking里进行设置。当然如果你希望是静态的,用域登录名替换即可,如taskPermissions[“domain\user1”] = SPRoleType.Contributor;

     public HybridDictionary TaskPermissions
        {
            get
            {
                HybridDictionary taskPermissions = new HybridDictionary();
                taskPermissions[taskProperties.AssignedTo] = SPRoleType.Contributor;
                return taskPermissions;
            }

        }

2.关键操作:

   其实上面的代码大家都看得明白,和听风且呤的写法基本是一样的,关键是以下操作。

   a.在流程设计界面选择createtask 活动图标,在属性框选择SpecialPermissions为焦点(不要选择右边的“...“按钮,其实那里也没什么可以选的)。

   b.点createtask 活动图标右键,选择“绑定属性‘SpecialPermissions’” (出现这个选项和步骤a有关)。

   c.选择在关键代码中写好的属性“TaskPermissions”。

 (不用在createTask1_MethodInvoking方法中写有关SpecialPermissions的任何代码。)

 完成了。

经过测试 SpecialPermissions属性的设置是在createTask1_MethodInvoking之后,所以在createTask1_MethodInvoking中可对属性TaskPermissions中用到的变量等进行初始设置,例如动态用户。

 


posted on 2008-09-27 15:39 tonyjun 阅读(...) 评论(...) 编辑 收藏