如何让所有与sharepoint工作流程进行交互的用户获得

时间:2011-09-06 15:58:21

标签: sharepoint sharepoint-2010 sharepoint-workflow

我有一个用VS2010编写的自定义状态机工作流,当工作流被取消或完成时,我需要向所有使用给定工作流交互(完成/更改任务或文档)的用户发送电子邮件。我一直无法找到一个很好的方法来获取我需要发送电子邮件的用户列表。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

一种简单的方法是通过检查项目的工作流程任务并找出他们被分配到的人员来获取在工作流程过程中分配的任务的集合。循环执行这些任务并构建分配了每个任务的用户的列表。

然后,检查项目的版本以查看谁创建了每个版本,并将此用户添加到上述列表中:

    /// <summary>
    /// This helper method will return a List of strings representing users who modified an item
    /// or were assigned a workflow task for the item.
    /// </summary>
    /// <param name="item"></param>
    /// <returns></returns>
    private List<string> GetUsersForWorkflow(SPListItem item)
    {


        List<string> assignees = new List<string>();

        //Get task editors
        Microsoft.SharePoint.Workflow.SPWorkflowTaskCollection tasks = item.Workflows[0].Tasks; //Get the workflow by GUID alternatively 
        foreach (Microsoft.SharePoint.Workflow.SPWorkflowTask task in tasks)
        {
            string assignee = task["Assigned To"].ToString();
            assignees.Add(assignee);
        }

        //Get version creators
        SPListItemVersionCollection versions = item.Versions;
        foreach (SPListItemVersion version in versions)
        {
            string assignee = version.CreatedBy.ToString();
            assignees.Add(assignee);
        }

        return assignees;
    }

如果您只想向已完成任务的人发送电子邮件等,则可以使用这些任务。您可以获得工作流作者(item.Workflows [0] .Author)并通过电子邮件发送给他/她。< / p>