2012-08-08 33 views
0

我需要從SharePoint工作流打開一個Word文檔,並將其打印到特定的打印機托盤。我首先嚐試使用Word.Interop創建Word應用程序實例,但是我的doc對象始終返回null。我讀過這不是WordInterop的支持使用。所以,現在我正在尋找替代品從SharePoint工作流調用Console應用程序

我寫了一個簡單的控制檯應用程序,接受單詞文檔,打印機名稱和托盤編號作爲參數。控制檯應用程序在命令提示符下的偉大工程,但我無法調用它形成一個SharePoint工作流CodeActivity

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工作流程是否支持調用外部進程?打開任何代碼建議和替代解決方案。

在此先感謝

回答

0

我被騙了....我終於只需將文件複製到文件夾,並寫了一個Windows服務來監視文件夾和打印文件。不是我的首選解決方案,但是後來推動你就必須完成工作。

0

這裏的關鍵是PowerShell。不幸的是,SharePoint不會將PS集成到工作流程中,但是有第三方工具可以實現。 (我們創建了一個本地發行版,以避免授權。)一旦您擁有了PS,您就無法從包括調用控制檯應用程序的工作流程中完成這項任務。

下面是我們如何整合PS。創建一個名爲「系統任務」的任務列表。當工作流程啓動時,將條目寫入此列表;該條目實際上是一個事件。該條目應該有足夠的信息對PS有用。在某個時間間隔內運行預定的PS作業並閱讀/處理「系統任務」列表。它應該將條目視爲待處理的消息。不同的條目會攜帶不同的數據:

EVENT-X Y Z 

鉛節點EVENT-X是你的事件消息。 YZ你的論點,參數,不管。顯然,你可以傳達儘可能多的信息,只要你想。計劃的PS作業將分派不同的事件到不同的PS腳本進行處理,然後在完成後檢查系統任務。