Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从SharePoint工作流调用控制台应用程序_Sharepoint_Sharepoint 2010_Ms Word_Workflow - Fatal编程技术网

从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

我需要从SharePoint工作流打开Word文档,并将其打印到特定的打印机托盘。我首先尝试使用Word.Interop创建Word应用程序实例,但是我的doc对象始终返回null。我已经读到,这不是WordInterop的一个受支持的用法。所以现在我在寻找替代方案

我编写了一个简单的控制台应用程序,它接受word文档、打印机名称和托盘号作为参数。console应用程序在命令提示符下运行良好,但我无法将其称为SharePoint工作流代码活动

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脚本发送不同的事件以进行处理,然后在完成后检查系统任务