我将尝试从 SharePoint 外部启动 Nintex Workflow 2010。我似乎找不到任何关于如何从控制台应用程序调用它的示例。是否有人有代码示例或知道实际显示此内容的博客。
谢谢,金博
我将尝试从 SharePoint 外部启动 Nintex Workflow 2010。我似乎找不到任何关于如何从控制台应用程序调用它的示例。是否有人有代码示例或知道实际显示此内容的博客。
谢谢,金博
SharePoint 2010 不支持 CSOM 工作流 API,但您可以为此目的 使用SharePoint 工作流 Web 服务 (SOAP) 。
使用Workflow.StartWorkflow 方法为客户端的项目启动工作流。
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));