How to link a SharePoint workflow using a client object model?

Using the SharePoint object model (SP 2010), how can you associate a workflow with this list?

I managed to bind the workflow, but the configuration settings do not return to SharePoint. In other words, the base is WorkflowAssociationCreationInformationsaved back to SharePoint, but no additional configuration settings WorkflowAssociationare saved using .

Here is the code I was working on:

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
+3
source share
2 answers

list.WorkflowAssociations.Update(wf)After setting up your configuration items, the configuration items will be updated to WorkflowAssociation.

+1
source
    ...
    wf.AssociationData = assocData;
    wf.Update();//Update association config
    list.Update();//Update the list

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

Source: https://habr.com/ru/post/1792302/


All Articles