从SharePoint工作流调用控制台应用程序
我需要从SharePoint工作流打开Word文档,并将其打印到特定的打印机托盘。我首先尝试使用Word.Interop创建Word应用程序实例,但是我的doc对象始终返回null。我已经读到,这不是WordInterop的一个受支持的用法。所以现在我在寻找替代方案 我编写了一个简单的控制台应用程序,它接受word文档、打印机名称和托盘号作为参数。console应用程序在命令提示符下运行良好,但我无法将其称为SharePoint工作流代码活动从SharePoint工作流调用控制台应用程序,sharepoint,sharepoint-2010,ms-word,workflow,Sharepoint,Sharepoint 2010,Ms Word,Workflow,我需要从SharePoint工作流打开Word文档,并将其打印到特定的打印机托盘。我首先尝试使用Word.Interop创建Word应用程序实例,但是我的doc对象始终返回null。我已经读到,这不是WordInterop的一个受支持的用法。所以现在我在寻找替代方案 我编写了一个简单的控制台应用程序,它接受word文档、打印机名称和托盘号作为参数。console应用程序在命令提示符下运行良好,但我无法将其称为SharePoint工作流代码活动 string urlWord = GetwordDo
string urlWord = GetwordDocument(printType);
System.Diagnostics.Process prcs = new System.Diagnostics.Process();
prcs.StartInfo.FileName = @"c:\DocxPrint2Tray.exe";
prcs.StartInfo.Arguments = String.Format(" \"{0}\" \"{1}\" \"{2}\" ",urlWord, printerName, printerTray);
prcs.StartInfo.UseShellExecute = false;
prcs.StartInfo.RedirectStandardOutput = true;
prcs.Start();
string prcsOut = prcs.StandardOutput.ReadToEnd();
prcs.WaitForExit();
代码似乎挂起在prcs.StandardOutput.ReadToEnd()行。SharePoint工作流是否支持调用外部流程?欢迎任何代码建议和替代解决方案
提前谢谢我作弊了。。。。最后,我将文件复制到一个文件夹中,并编写了一个Windows服务来监视文件夹并打印文件。这不是我喜欢的解决方案,但事与愿违,你只需要完成工作。这里的关键是PowerShell。遗憾的是,SharePoint没有将PS集成到工作流中,但是有第三方工具可以这样做。(我们创建了一个自主开发的应用程序来避免许可。)一旦你拥有了可供使用的PS,你就可以通过工作流程(包括调用控制台应用程序)完成一些无法完成的事情 下面是我们集成PS的方法。创建一个名为系统任务的任务列表。当工作流启动时,将条目写入此列表;该条目实际上是一个事件。条目应包含对PS有用的足够信息。安排PS作业以一定间隔运行,并读取/处理系统任务列表。它应该将条目视为要处理的消息。不同的条目将携带不同的数据:
EVENT-X Y Z
lead节点EVENT-X
是您的事件消息Y
和Z
您的参数、参数等等。显然,您可以传递任意多的信息。计划的PS作业将向不同的PS脚本发送不同的事件以进行处理,然后在完成后检查系统任务