Как связать рабочий процесс SharePoint с помощью клиентской объектной модели? - PullRequest
3 голосов
/ 15 февраля 2011

Используя объектную модель 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

Ответы [ 2 ]

1 голос
/ 16 февраля 2011

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

0 голосов
/ 22 июля 2013
    ...
    wf.AssociationData = assocData;
    wf.Update();//Update association config
    list.Update();//Update the list

    context.Load(wf);
    context.ExecuteQuery();
...