Nano Hash - криптовалюты, майнинг, программирование

Почему мой рабочий процесс SharePoint не работает, когда клиент работает под Vista или Windows 7?

У меня аналогичная ситуация с этим вопросом .

У меня есть настраиваемый последовательный рабочий процесс SharePoint, удаленный в Visual Studio 2008. Он связан с формой InfoPath, отправленной в библиотеку форм. Он настроен на автоматический запуск при создании элемента.

Иногда это срабатывает. Иногда просто не запускается.

Я проверил отладчик, как и вопрос, указанный выше, и проблема в том, что поля InfoPath, опубликованные в виде столбцов в библиотеке, пусты при запуске рабочего процесса. (Я обращаюсь к полям с помощью workflowProperties.Item["fieldName"].) Но, похоже, есть состояние гонки, поскольку эти поля фактически отображаются в представлении библиотеки, и если я завершу неудачный рабочий процесс и перезапущу его вручную, он будет работать нормально!

После долгих размышлений и тестирования я определил, что рабочий процесс запустится успешно, если пользователь запускает любую версию IE в Windows XP, но не удастся, если тот же пользователь отправит те же данные формы из Vista или Windows. 7 клиентская машина.

Кто-нибудь знает, почему это происходит?


Ответы:


1

Это происходит из-за того, что Vista / 7 сохраняет формы InfoPath через WebDAV, однако XP использует другой протокол (извините, не могу вспомнить в то время). SharePoint перехватывает событие «ItemAdded» перед фактической загрузкой файла (то есть элемент уже создан, но загрузка файла в настоящее время выполняется).

Что вы можете сделать для обходного пути, так это добавить действие сделки и подождать 10 секунд в качестве первого шага в вашем рабочем процессе (на самом деле это займет больше десяти секунд из-за того, как рабочие процессы построены в SPPS). Таким образом, загрузка уже будет завершена, когда вы выполните чтение элемента. Чтобы проинформировать пользователей о том, что происходит, вы можете добавить действие «logToHistoryList» перед задержкой.

11.01.2010
  • Спасибо за ответ. Я немного поработаю над этим. Я пробовал это безуспешно, но я снова поверну. 11.01.2010
  • Это определенно сработало. Думаю, раньше это не работало, потому что мне нужно было перезапустить службу таймера. 11.01.2010

  • 2

    Я использовал другое решение, которое будет только ждать, пока свойство InfoPath не станет доступным (или не более 60 секунд):

    public SPWorkflowActivationProperties workflowProperties =
       new SPWorkflowActivationProperties();
    
    private void onOrderFormWorkflowActivated_Invoked(object sender, ExternalDataEventArgs e)
    {
       SPListItem workflowItem;
       workflowItem = workflowProperties.List.GetItemById(workflowProperties.ItemId);
    
       int waited = 0;
       int maxWait = 60000; // Max wait time in ms
       while (workflowItem["fieldName"] == null && (waited < maxWait))
       {
          System.Threading.Thread.Sleep(1);
          waited ++;
          workflowItem = workflowProperties.List.GetItemById(workflowProperties.ItemId);
       }
    
       // For testing: Write delay time in Workflow History Event
       SPWorkflow.CreateHistoryEvent(
          workflowProperties.Web,
          workflowProperties.WorkflowId, 
          (int)SPWorkflowHistoryEventType.WorkflowComment,
          workflowProperties.OriginatorUser, TimeSpan.Zero, 
          waited.ToString() + " ms", "Waiting time", "");
    }
    

    workflowProperties.Item никогда не получит свойство InfoPath в приведенном выше коде. workflowProperties.List.GetItemById(workflowProperties.ItemId) будет после некоторой задержки.

    19.10.2012
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование