none
Workflow, VS. Рабочий процесс создает задачу. А как вызвать OnTaskChanged из другого приложения? RRS feed

  • Вопрос

  • Есть рабочий процесс, который создает задачу и обрабатывает событие OnTaskChanged, после чего задача и рабочий процесс завершаются.

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

    Пробывал:

    1) В списке задач найти нужную задачу и изменить ее. Результат: задача изменяется, но OnTaskChanged в рабочем процессе не срабатывает.

    2) В списке рабочих процессов выйти на список задач процесса и там изменить задачу. Результат: список рабочих процессов пуст, хотя есть запущенные.

    11 июля 2011 г. 7:07

Ответы

Все ответы

  • Первый вариант (простое изменение задачи) должен быть корректен.  Если вы меняете задачу не из кода, а из интерфейса, OnTaskChanged тоже не срабатывает?

    Надо искать причины, по которым не срабатывает OnTaskChanged. среди них может быть свойство CorellationToken у activities. У CreateTask и OnTaskChanged должны быть одиннаковые corellationtoken, отличающиеся от workflow token.


    Ivan Gorbadey. Sharepoint 2010 MCPD & MCITP.
    11 июля 2011 г. 8:32
  • Первый вариант (простое изменение задачи) должен быть корректен.  Если вы меняете задачу не из кода, а из интерфейса, OnTaskChanged тоже не срабатывает?

    Надо искать причины, по которым не срабатывает OnTaskChanged. среди них может быть свойство CorellationToken у activities. У CreateTask и OnTaskChanged должны быть одиннаковые corellationtoken, отличающиеся от workflow token.


    Ivan Gorbadey. Sharepoint 2010 MCPD & MCITP.

    Еще раз проверил. Не работает. WorkflowToken <> TaskToken.

    Код изменения задачи:

            item = myWeb.Lists["Task1"].GetItemById(TaskId);       
            item["% завершения"] = 1;
            item.Update();
    

    Может задачу меняю не правильно? Хотя значение "% завершения" изменяется, а "Состояние" = Не начата. И в контрольную точку OnTaskChanged робочего процесса не попадаю. После изменения задачи другим приложением (т.е. этим кодом), задачу в "ручном" режиме изменить нельзя "Эта задача сейчас заблокирована выполняющимся рабочим процессом и не может быть изменена.". Но, если изначально изменять задачу "ручками", то все работает.

    11 июля 2011 г. 10:17
  • gfifdos, я тож что-то такое пробовал, но не получилось((( Выходил из ситуации следующим образом:
    брал ListenActivity и добавлял в одну ветку ченджеТаск  в другую еще активити которая реагирует на изменение какого либо элемента. И соответственно могло выполнится только одно действие которое завершит задачу и прейдет на КомплитТаск (посмотри схему) В твоем случае скорей всего придтся вместо DelayAct использовать OnWorkflowItemChan..

    12 июля 2011 г. 8:41
  • gfifdos, я тож что-то такое пробовал, но не получилось((( Выходил из ситуации следующим образом:
    брал ListenActivity и добавлял в одну ветку ченджеТаск  в другую еще активити которая реагирует на изменение какого либо элемента. И соответственно могло выполнится только одно действие которое завершит задачу и прейдет на КомплитТаск (посмотри схему) В твоем случае скорей всего придтся вместо DelayAct использовать OnWorkflowItemChan..


    ListenActivity не помог. На одну ветку ставил OnTaskChanged, на другую OnWorkflowItemChanged. Менял значение элемента в задаче и в списке рабочего процесса. Обработка событий не срабатывает. Еще варианты есть?

    13 июля 2011 г. 10:18
  • gfifdos попробуй вместо OnWorkflowItemChanged поставить handleExternalEventActivity (я его использовал в таком случае). Ну если не получится давай подробней: для чего изменяешь внешним процессом (может там вообще логика другая подойдет)? каким приложением ты изменяешь?

    • Помечено в качестве ответа gfifdos 14 июля 2011 г. 8:54
    14 июля 2011 г. 6:14
  • Добрый день!

    Для изменения задачи в коде используйте AlterTask http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowtask.altertask.aspx


    Don't forget to vote for useful replies and/or mark answers for your questions - that helps other guys to find the answer faster.
    • Помечено в качестве ответа gfifdos 14 июля 2011 г. 8:54
    14 июля 2011 г. 7:13
  • Благодарю за ответы.

    Два последних ответа рабочие:)

    14 июля 2011 г. 8:54