Как связать рабочий процесс SharePoint с помощью клиентской объектной модели?

Как с помощью объектной модели SharePoint (SP 2010) связать рабочий процесс с заданным списком?

Мне удалось связать рабочий процесс, но параметры конфигурации не сохраняются в SharePoint. Другими словами, базовыйWorkflowAssociationCreationInformation сохраняется обратно в SharePoint, но любые дополнительные параметры конфигурации с использованием WorkflowAssociation не сохраняются.

Вот код, над которым я работал:

var context = new ClientContext( url );
Web site = context.Web;

var query = context.LoadQuery( site.WorkflowTemplates.Where( x => x.Name == "My Template Name" ) );
context.ExecuteQuery();
WorkflowTemplate wfTemplate = query.Single();

var wfc = new WorkflowAssociationCreationInformation();
wfc.HistoryList = site.Lists.GetByTitle( "Workflow History" );
wfc.Name = "My Workflow Name";
wfc.TaskList = site.Lists.GetByTitle( "Tasks" );
wfc.Template = wfTemplate;

List list = site.Lists.GetByTitle( "List Name" );

WorkflowAssociation wf = list.WorkflowAssociations.Add( wfc );
wf.AllowManual = false; // is never updated
wf.AutoStartChange = false; // is never updated
wf.AutoStartCreate = true; // is never updated
wf.Enabled = true; // is never updated
string assocData = GetAssociationXml(); // internal method
wf.AssociationData = assocData; // is never updated

context.Load( wf );
context.ExecuteQuery(); // does not update the SP workflow with any of the new wf settings

person Metro Smurf    schedule 15.02.2011    source источник
comment
Вам не нужно перечислять.WorkflowAssociations.Update(wf) после установки элементов конфигурации?   -  person vinny    schedule 16.02.2011
comment
@винни, да, действительно. Выяснил это через час после публикации и забыл обновить вопрос. Очень хороший улов! Давай, добавь ответ, и я приму его.   -  person Metro Smurf    schedule 16.02.2011


Ответы (1)


list.WorkflowAssociations.Update(wf) после настройки ваших элементов конфигурации обновит элементы конфигурации на вашем WorkflowAssociation.

person vinny    schedule 16.02.2011
comment
Вы уверены, что list.WorkflowAssociations.Update() — это метод? Я вижу метод обновления только для отдельной ассоциации, и, похоже, в моем случае он не работает. - person ; 12.11.2015
comment
Да, это метод список набор ассоциаций рабочих процессов. - person vinny; 18.11.2015
comment
Это не использует объектную модель клиента, поэтому это не сработает. Немного вводит в заблуждение, что это помечено как ответ, особенно потому, что ближайший эквивалент на стороне клиента, похоже, не работает. - person ; 19.11.2015