2014-09-09 2 views
0

Я хочу обновить элемент задачи программно в CSOM. Элемент обновляется, но рабочий процесс не запускается. Мне нужно просто открыть элемент в sharepoint и сохранить его. Затем запускается рабочий процесс.Обновление задачи задачи в Sharepoint с помощью CSOM

    List requestTasksList = MyWeb.Lists.GetByTitle("TestRequest Tasks"); 

        List<TestRequestModel> testRequestList = new List<TestRequestModel>(); 

        ListItemCollection ColListItems = requestTasksList.GetItems(Spqur); 

        ctx.Load(ColListItems); 
        ctx.ExecuteQuery(); 

        foreach (ListItem task in ColListItems) 
        { 
         task["Status"] = "Completed"; 
         task["TaskOutcome"] = "Approved"; 
         task["PercentComplete"] = 1.0; 
         task["Checkmark"] = 1; 
         task.Update(); 
         requestTasksList.Update(); 
        } 
        ctx.ExecuteQuery(); 

This is the updated task item

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

ответ

0

Я не уверен, если его опечатка, но это должно быть

List requestTasksList = MyWeb.Lists.GetByTitle("TestRequest Tasks"); 
 

 
List<TestRequestModel> testRequestList = new List<TestRequestModel>(); 
 

 
ListItemCollection ColListItems = requestTasksList.GetItems(Spqur); 
 

 
foreach (ListItem task in ColListItems) 
 
{ 
 
    task["Status"] = "Completed"; 
 
    task["TaskOutcome"] = "Approved"; 
 
    task["PercentComplete"] = 1.0; 
 
    task["Checkmark"] = 1; 
 
    task.Update(); 
 
} 
 
ctx.ExecuteQuery();

0

Нам нужно сделать то же самое, и обнаружили, что нет обработчиков событий в списке задач рабочего процесса в SharePoint 2013. Я знаю, что есть SPWorkflowAutostartEventReceiver в списках, которые автоматически запускают рабочие процессы при добавлении или обновлении, поэтому я предположил, что этот же подход будет выполняться и для задач рабочего процесса, но это не так. Поскольку в списке задач рабочего процесса нет обработчиков событий, я предполагаю, что все триггеры рабочего процесса инициируются из кода пользовательского интерфейса на стороне сервера в списке задач (ужасный дизайн).

Для нас нам необходимо полностью работать на стороне клиента без решения фермы или изолированного кода. Таким образом, наше единственное решение - это очистить URL-адреса, а затем открывать страницы или диалоги для того, чтобы пользователь мог делать такие вещи, как отменить все задачи для рабочего процесса утверждения. Конечно, этот подход по-прежнему требует ввода пользователем. Полагаю, вы могли бы очистить всю страницу и воспроизвести действие кнопок удара на странице задачи или отменить страницу задачи, если вам нужно, чтобы избежать ввода пользователя. Это было бы болью.