Рабочий процесс Sharepoint завершается ошибкой при первом запуске, но успешно при запуске вручную - PullRequest
2 голосов
/ 04 марта 2009

Мы используем форму infopath, которая при отправке должна запускать пользовательский рабочий процесс .NET. По сути, информация в форме используется для создания нового сайта sharepoint. Я вижу, что при первом запуске рабочего процесса (который выполняется автоматически после отправки формы) рабочий процесс выдает ошибки. Когда я запускаю рабочий процесс вручную сразу после его сбоя, рабочий процесс работает нормально.

this.workflowProperties.Item["Client Name"]

Я отладил проблему до строки выше, где workflowProperties имеет тип Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties. При первом запуске рабочего процесса указанное выше свойство (и все остальные) имеют значение null. Второй раз, когда он запускается, свойство name клиента должно быть (заполняется из формы infopath).

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

Еще одна интересная складка для всей ситуации: в общей сложности 3 пользовательских рабочих процесса используются приложением. 2 были сделаны в визуальной студии - одна из этих работ отлично, а другая показывает поведение, описанное выше. Последнее было сделано в конструкторе sharepoint и не работает.

Я готов попробовать что угодно на данный момент. Я нахожусь на сервере разработчиков (который отображает точные симптомы как производственные), поэтому я могу попробовать что угодно.

Ответы [ 4 ]

1 голос
/ 26 мая 2012

Если формы InfoPath отправляются с компьютера с ОС Vista или Win 7, вы можете столкнуться с проблемой получения значения NULL для полей в форме InfoPath. Попробуйте добавить задержку в 10 секунд и посмотрите, сможете ли вы получить значения полей из InfoPath.

См. Эту ссылку для получения более подробной информации: Почему мой рабочий процесс SharePoint не работает, когда клиент работает под управлением Vista или Windows 7?

1 голос
/ 04 марта 2009

Я предполагаю, что это связано с тем, что рабочий процесс запускается асинхронно из операции фиксации, которая устанавливает значения полей. Можете ли вы попытаться получить элемент явным образом из списка вместо использования элемента из свойств рабочего процесса. что-то вроде следующего:

SPListItem l_item = 
      workflowProperties.Item.List.Items.GetItemById(
                 workflowProperties.Item.Id
      );

Я не уверен, но, возможно, стоит попробовать.

Еще одна вещь, которую нужно иметь в виду, это то, что объект SPContext.Current будет нулевым при вызове из EventReceiver, но будет действительным при вызове вручную. Не похоже, что это проблема, но, тем не менее, об этом нужно знать.

0 голосов
/ 17 апреля 2009

«Решением» было сделать экспорт и перенести на новый сервер. В основном просто используйте STSADM для выполнения операции экспорта, а затем импортируйте тот же файл на новый сервер.

СМ:

http://sharepointdogs.wordpress.com/2008/07/30/content-migration-or-backuprestore-in-moss-2007/

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

0 голосов
/ 13 марта 2009

Попробуйте поискать в своих журналах SharePoint.

Они расположены под 12-Hive в папке LOGS - откройте последнюю версию и найдите что-то с «инфраструктурой рабочего процесса», возможно, это может указать вам правильное направление.

...