2

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

4

1 回答 1

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) 并向他/她发送电子邮件。

于 2011-10-04T20:22:37.613 回答