Рабочий процесс Sharepoint не работает при первом запуске, но завершается успешно при запуске вручную

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

this.workflowProperties.Item["Client Name"]

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

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

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

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


person sestocker    schedule 04.03.2009    source источник
comment
Просто чтобы все знали: мы используем WSS 3.0 на Windows Server 2003. Рабочий процесс был создан в VS 2005, но с тех пор решение было преобразовано в 2008.   -  person sestocker    schedule 04.03.2009
comment
Я столкнулся с той же проблемой с настраиваемым рабочим процессом. Проблема в том, что он не работает только тогда, когда форма InfoPath отправляется из Vista или Windows 7. Она отлично работает при отправке из XP. Ваши пользователи переключались на Vista или Windows 7 до того, как произошел сбой?   -  person Abs    schedule 11.01.2010
comment
Они были на Windows Vista, но рабочий процесс работал нормально более 6 месяцев, прежде чем начались сбои.   -  person sestocker    schedule 12.01.2010


Ответы (4)


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

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

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

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

person Jason    schedule 04.03.2009
comment
Я пытаюсь использовать приведенный выше код. Я вставил точный фрагмент кода выше - l_item не равно нулю, что, на мой взгляд, может быть хорошим знаком. Пожалуйста, потерпите меня - я новичок в sharepoint. - person sestocker; 04.03.2009
comment
Я добавил правку выше. Возможно ли, что разрешения могут сыграть свою роль в проблеме? После успешного запуска рабочего процесса я вхожу в систему как администратор семейства сайтов. - person sestocker; 04.03.2009
comment
было ли изменено разрешение в базовом списке? если у пользователя нет разрешения на создание нового элемента списка, возможно, он все еще запустил рабочий процесс, который затем проверяет несуществующее значение? Можете ли вы войти в систему с другой учетной записью и протестировать с разными разрешениями? - person Jason; 04.03.2009
comment
Я отправляю информационную форму как администратор коллекции. Я не понимаю, под какой учетной записью выполняется рабочий процесс. - person sestocker; 04.03.2009
comment
рабочий процесс запускается от имени пользователя, который его инициирует. создайте еще одну учетную запись и дайте ей разрешение на внесение в список. убедитесь, что рабочий процесс работает правильно, попробуйте с разрешениями на разработку. Надеюсь, это поможет вам сузить круг вопросов. - person Jason; 05.03.2009
comment
Джейсон, прошло много времени с тех пор, как у меня была возможность поработать над этим. Разрешения могут по-прежнему вызывать проблему, но кажется странным, что один из рабочих процессов работает отлично. - person sestocker; 12.03.2009

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

Для получения дополнительных сведений перейдите по этой ссылке: Почему мой рабочий процесс SharePoint не работает, когда клиент работает под Vista или Windows 7?

person jaku    schedule 25.05.2012

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

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

person Brian Jensen    schedule 13.03.2009

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

ВИДЕТЬ:

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

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

person sestocker    schedule 17.04.2009