none
Как реализовать рабочий процесс в MS Share Point RRS feed

  • Вопрос

  • Добрый день!

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

    Рабочий процесс без пересчета поля реализован, подскажите какие действия использовать. Процесс разрабатывается с помощью Visual Studio 2008, MS Share Point 2007. Вот его схема. (P.S. Прошу не судить строго, это моя первая работа с программированием для MS Share Point)

    11 августа 2011 г. 7:29

Ответы

  • Рабочий процесс не даст вам возможность пересчитывать раз в сутки поле "длительность". Как вариант: написать TimerJob, который будет обходить ваш список с элементами и проверять состояние определенного поля (допустим поле состояния рабочего процесса или какое-то другое поле состояния) и  если это поле равно "Выполнение", тогда к длительности +1 день... Что-то типа того... Вот ссылка на ток как написать простенький TimerJob (http://www.techdays.in.ua/videos/2557.html)


    • Предложено в качестве ответа Aleksandr Shramko 11 августа 2011 г. 14:36
    • Помечено в качестве ответа ElDgy 15 августа 2011 г. 2:30
    11 августа 2011 г. 14:35
  • ApplyActivation + UpdateItemActivity


    Но в схеме "при изменении элемента" это не будет происходить по расписанию

    С другой стороны, если вас устраивает пересчитывать поле при изменении элемента, вам будет достаточно Calculated поля, в котором из даты модификации вычитается дата запуска задачи (создания?)

    • Помечено в качестве ответа ElDgy 15 августа 2011 г. 2:30
    11 августа 2011 г. 22:55

Все ответы

  • Привет!

     

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

    11 августа 2011 г. 8:23
    Модератор
  • Добрый день!

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

    Есть несколько вопросов для уточнения. Что вым необходимо сделать с элементом (изменить, переместить и что-то еще)? Если вам необходимо выполнять действие по определенно задонному веремени ("по расписанию пересчитывает другое поле") или через промежуток времени то лучше посмотреть в сторону TimerJob. Если кто-то или что-то изменяет то конечно можно использовать workflow установив в его настройках "запуск при изменеии элемента" и ваша схема будет работать.  Если вам необходимо выполнить действие над элементом по истечению времени то используйте ListenActivity и DelayActivity(примерно так)

    P.S. Для того чтобы вам дали дельный совет по решению вопроса пишите пожалуйста в такой форме: цель/задача/что используете/проблема. так будет эффективней :))

    11 августа 2011 г. 9:05
  • В том-то и дело что поле длительность должно пересчитываться, каждый день пока рабочий процесс не завершен, а не по истечении определенного времени.

    11 августа 2011 г. 9:22
  • Рабочий процесс не даст вам возможность пересчитывать раз в сутки поле "длительность". Как вариант: написать TimerJob, который будет обходить ваш список с элементами и проверять состояние определенного поля (допустим поле состояния рабочего процесса или какое-то другое поле состояния) и  если это поле равно "Выполнение", тогда к длительности +1 день... Что-то типа того... Вот ссылка на ток как написать простенький TimerJob (http://www.techdays.in.ua/videos/2557.html)


    • Предложено в качестве ответа Aleksandr Shramko 11 августа 2011 г. 14:36
    • Помечено в качестве ответа ElDgy 15 августа 2011 г. 2:30
    11 августа 2011 г. 14:35
  • ApplyActivation + UpdateItemActivity


    Но в схеме "при изменении элемента" это не будет происходить по расписанию

    С другой стороны, если вас устраивает пересчитывать поле при изменении элемента, вам будет достаточно Calculated поля, в котором из даты модификации вычитается дата запуска задачи (создания?)

    • Помечено в качестве ответа ElDgy 15 августа 2011 г. 2:30
    11 августа 2011 г. 22:55