как я могу получить всех пользователей, которые взаимодействовали с рабочим процессом sharepoint - PullRequest
2 голосов
/ 06 сентября 2011

У меня есть собственный рабочий процесс конечного автомата, написанный на VS2010, когда рабочий процесс отменяется или завершается, мне нужно отправить электронное письмо всем пользователям, которые взаимодействовали (завершили / изменили задачу или документ) с данным рабочим процессом , Мне не удалось найти хороший способ получить список пользователей, которым я должен отправить свое электронное письмо. Есть предложения?

1 Ответ

0 голосов
/ 05 октября 2011

Простой способ - получить коллекцию задач, назначенных в процессе рабочего процесса, проверив задачи рабочего элемента и выяснив, кому они были назначены.Выполните циклическое выполнение этих задач и создайте список пользователей, которым был назначен каждый из них.

Затем проверьте версии элемента, чтобы увидеть, кто создал каждую версию, и добавьте этого пользователя в вышеупомянутый список:

    /// <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) и отправить его по электронной почте.

...