2012-08-08 3 views
0

Мне нужно открыть документ Word из рабочего процесса SharePoint и распечатать его на определенном лотке принтера. Сначала я попытался создать экземпляр приложения Word, используя Word.Interop, однако мой объект doc всегда возвращал null. Я прочитал, что это не поддерживается WordInterop. Итак, теперь я ищу альтернативыПриложение Calling Console из рабочего процесса SharePoint

Я написал простое консольное приложение, которое принимает в качестве параметров документ слова, имя принтера и номер лотка. Приложение консоли отлично работает в командной строке, но у меня возникает проблемы, назвав его сформировать рабочий процесс 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 Workflow вызов внешнего процесса? Открыта для любых предложений кода и альтернативных решений.

Заранее спасибо

ответ

0

я обманул .... Я, наконец, просто скопировал файлы в папку, и написал службу Windows для мониторинга папки и печати файлов. Не мое предпочтительное решение, но затем толчок приходит, чтобы засунуть вас, просто нужно выполнить эту работу.

0

Ключ здесь PowerShell. SharePoint, к сожалению, не интегрирует PS в рабочие процессы, но есть сторонние инструменты, которые это делают. (Мы создали домашнюю страницу, чтобы избежать лицензирования.) После того, как у вас есть PS, мало что можно сделать из рабочего процесса, включая вызов консольного приложения.

Вот как мы интегрировали PS. Создайте список задач под названием «Системные задачи». Когда рабочий процесс инициирует запись записи в этот список; эта запись является фактически событием. Запись должна содержать достаточно информации, чтобы быть полезной для PS. Запланируйте задание PS на некоторый интервал и прочитайте/обработайте список Системные задачи. Он должен обрабатывать записи как обрабатываемые сообщения. Различные записи будут выполнять различные данные:

EVENT-X Y Z 

Головного узел EVENT-X ваше сообщение о событии. Y и Z ваши аргументы, параметры, что угодно. Очевидно, вы можете передавать столько информации, сколько хотите. Запланированное задание PS будет отправлять разные события в разные сценарии PS для обработки, а затем после завершения проверки системной задачи.

Смежные вопросы