Простой способ - получить коллекцию задач, назначенных в процессе рабочего процесса, проверив задачи рабочего элемента и выяснив, кому они были назначены.Выполните циклическое выполнение этих задач и создайте список пользователей, которым был назначен каждый из них.
Затем проверьте версии элемента, чтобы увидеть, кто создал каждую версию, и добавьте этого пользователя в вышеупомянутый список:
/// <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) и отправить его по электронной почте.