Share Point Foundation 2010 - не удалось запустить рабочий процесс - PullRequest
2 голосов
/ 25 июня 2010

Я использую SharePoint Foundation (Sharepoint 2010) для разработки рабочего процесса в Visual Studio с помощью формы инициализации рабочего процесса ASP.NET.

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

Error 

Failed%20to%20Start%20Workflow 

Troubleshoot issues with Microsoft SharePoint Foundation. 

Correlation ID: 0b8e0b67-f824-4aa5-8316-424ada134f8d 

Date and Time: 6/25/2010 10:59:17 AM 

Go back to site

Такое поведение кажется прерывистым.Что происходит?

Ответы [ 2 ]

2 голосов
/ 25 июня 2010

Проблема в том, что форма запуска рабочего процесса SharePoint кэширует элемент списка рабочего процесса в PageLoad, и когда вы вносите изменения в элемент между загрузкой страницы и вызовом HandleStartWorkflow (т. Е. Нажатием кнопки «Начать рабочий процесс»), SharePoint начинает волноваться, что элемент, о котором вы говорите, отличается (кэшированный элемент) от элемента, который существует в Share Point (который включает только что сделанные вами изменения).

Основные шаги по воспроизведению проблемы:

  1. Запустите рабочий процесс, чтобы появилась форма инициализации.
  2. Изменить некоторые свойства в WorkflowProperties.Item
  3. Вызовите WorkflowProperties.Item.Update, чтобы сохранить изменения в SharePoint
  4. Call HandleStartWorkflow.

Вы получите ошибку.

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

Но если вы используете событие ASP TextBox OnTextChanged, измените текст и затем нажмите кнопку «Начать рабочий процесс», событие OnChanged будет запущено ПОСЛЕ загрузки страницы старыми данными, данные будут изменены на новые данные и рабочий процесс запускается до повторной загрузки данных элемента из SharePoint.


Исправить несложно: перезагрузите данные элемента рабочего процесса ПРОСТО перед началом рабочего процесса. Это приведет к тому, что ваш кэшированный элемент рабочего процесса и версия элемента sharepoint будут одинаковыми, и точка обмена будет счастливой.

В области «Код инициирования рабочего процесса» изменить:

Private Sub StartListWorkflow()

    Dim association As SPWorkflowAssociation = workflowList.WorkflowAssociations.Item(New Guid(associationGuid))
    Web.Site.WorkflowManager.StartWorkflow(workflowListItem, association, GetInitiationData)
    SPUtility.Redirect(workflowList.DefaultViewUrl, SPRedirectFlags.UseSource, System.Web.HttpContext.Current)
End Sub

до

Private Sub StartListWorkflow()

    'Re-initialize the workflow parameters, particularly the workflowListItem, in case it has been changed since page load.'
     InitializeParams()

    Dim association As SPWorkflowAssociation = workflowList.WorkflowAssociations.Item(New Guid(associationGuid))
    Web.Site.WorkflowManager.StartWorkflow(workflowListItem, association, GetInitiationData)
    SPUtility.Redirect(workflowList.DefaultViewUrl, SPRedirectFlags.UseSource, System.Web.HttpContext.Current)
End Sub

И все должно снова заработать.

0 голосов
/ 05 сентября 2012

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

...