-1

我将尝试从 SharePoint 外部启动 Nintex Workflow 2010。我似乎找不到任何关于如何从控制台应用程序调用它的示例。是否有人有代码示例或知道实际显示此内容的博客。

谢谢,金博

4

1 回答 1

0

SharePoint 2010 不支持 CSOM 工作流 API,但您可以为此目的 使用SharePoint 工作流 Web 服务 (SOAP) 。

使用Workflow.StartWorkflow 方法为客户端的项目启动工作流。

如何在 Visual Studio 中使用 SharePoint 工作流 Web 服务

  • 在 Visual Studio 中创建一个新的控制台应用程序项目
  • 右键单击引用并添加服务引用
  • workflow.asmx输入服务器上服务的 URL示例:<web url>/_vti_bin/workflow.asmx并指定命名空间名称,例如WorkflowSvc

为了使 Sharepoint Web 服务与 NTLM 身份验证一起使用,请进行以下更改 app.config文件。

替换security部分:

<security mode="None">
    <transport clientCredentialType="None" proxyCredentialType="None"
        realm="" />
    <message clientCredentialType="UserName" algorithmSuite="Default" />
</security>

至:

<security mode="TransportCredentialOnly">
  <transport clientCredentialType="Ntlm"/>
</security>

以下代码示例演示了如何在项目上启动工作流:

var workflowClient = new WorkflowSvc.WorkflowSoapClient();
workflowClient.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
workflowClient.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;

var workflowParameters = "<my:myFields " +
                                 "xml:lang=\"en-us\" " +
                                 "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
                                 "xmlns:my=\"http://schemas.microsoft.com/office/infopath/2003/myXSD\">" +
                                 "</my:myFields>";
var listItemUrl = "http://contoso.intranet.com/Documents/Order.docx";
var wfTemplateId = new Guid("{0fd3e822-a3b1-45c1-990c-20cb9731e74f}");
var result = workflowClient.StartWorkflow(listItemUrl, wfTemplateId, XElement.Parse(workflowParameters));
于 2014-08-18T11:30:14.460 回答