无法使用CSOM启动List Sharepoint 2010 Platform工作流程

时间:2014-10-14 18:05:33

标签: sharepoint sharepoint-workflow csom

我正在使用CSOM启动与List关联的SharePoint 2010 Platform工作流程。由于这是在SharePoint 2013 Online中创建的SharePoint 2010工作流,因此我使用的是工作流InteropService StartWorkflow方法。

Web web = clientContext.Web;
WorkflowServicesManager manager = new WorkflowServicesManager(clientContext, web);
InteropService workflowInteropService = manager.GetWorkflowInteropService();
clientContext.Load(workflowInteropService);
clientContext.ExecuteQuery();

List sharePointList = web.Lists.GetByTitle("Ronak");
ListItem sharePointListItem = sharePointList.GetItemById(1);
clientContext.Load(sharePointList);
clientContext.Load(sharePointListItem);
clientContext.ExecuteQuery();

Guid itemGuid = Guid.Empty;
if (sharePointListItem.FieldValues.ContainsKey("UniqueId"))
{
      object temp = sharePointListItem.FieldValues["UniqueId"];
      if (temp != null)
            itemGuid = (Guid)temp;
}


var initiationData = new Dictionary<string, object>();

//Start the Workflow
 ClientResult<Guid> resultGuid = workflowInteropService.StartWorkflow("MYWFD", new Guid(), sharePointList.Id, itemGuid, initiationData);

clientContext.ExecuteQuery();

出于某种原因,它正在把我这个例外,就像我的ItemGuid不正确一样。

Microsoft.SharePoint.Client.ServerException was unhandled
  HResult=-2146233088
  Message=itemGuid
  Source=Microsoft.SharePoint.Client.Runtime
  ServerErrorCode=-2147024809
  ServerErrorTraceCorrelationId=80d8c19c-b093-1000-8fbc-c2919fdf4284
  ServerErrorTypeName=System.ArgumentException
  ServerStackTrace=""
  StackTrace:
       at Microsoft.SharePoint.Client.ClientRequest.ProcessResponseStream(Stream responseStream)
       at Microsoft.SharePoint.Client.ClientRequest.ProcessResponse()
       at Microsoft.SharePoint.Client.ClientRequest.ExecuteQueryToServer(ChunkStringBuilder sb)
       at Microsoft.SharePoint.Client.ClientRequest.ExecuteQuery()
       at Microsoft.SharePoint.Client.ClientRuntimeContext.ExecuteQuery()
       at Microsoft.SharePoint.Client.ClientContext.ExecuteQuery()
       at SPCSOMTest.Program.StartListWorkflowAssociation(ClientContext clientContext) in c:\Program Files\nsoftware\SharePoint Integrator V4 .NET Edition\demos - winform\SPCSOMTest\SPCSOMTest\Program.cs:line 243
       at SPCSOMTest.Program.Main(String[] args) in c:\Program Files\nsoftware\SharePoint Integrator V4 .NET Edition\demos - winform\SPCSOMTest\SPCSOMTest\Program.cs:line 63
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

1 个答案:

答案 0 :(得分:1)

我最近遇到了同样的问题。您使用了错误的ID,而不是

object temp = sharePointListItem.FieldValues["UniqueId"];

你应该使用:

object temp = sharePointListItem.FieldValues["GUID"];