2010-02-17 1 views
0

Я мониторинг либоOnTaskChanged событие увольняют в ListenActivity, но не OnWorkflowItemChanged

  • Workflow Задача Изменение
  • Workflow Пункт Изменить

OnApprovalTaskChanged стреляют, но не onWorkflowItemChanged. Это известная проблема и что может быть обходным путем?

Если я удалю ListenActivity, onWorkflowItemChanged активируется!

Вот часть моей работы: Workflow diagram http://img28.imageshack.us/img28/8397/ss20100217113727.png

ответ

1

решаемой этот вопрос. This article helped me.

Что нужно сделать, это установить действие InitializeWorkflow и создать новый токен корреляции для этого действия. Родитель для этого токена соответствия должен быть установлен родительской последовательностью. Затем используйте этот новый токен в событии OnWorkflowItemChanged.

Все для меня работает, как ожидалось, если деятельность положить в следующем порядке:

-Replicator (i have to create multiple tasks) 
--Sequence 
--some stuff 
---InitializeWorkflow (this activity is for bugfix, create new token, parent=Sequence) 
---While (in my case: while task changed or wf item changed) 
----ListenActivity 
-----EventDriven (OnTaskChanged) 
-----EventDriven (OnWorkflowItemChanged, use newly created token) 

Ввод другой последовательности и initializeworkflow в цикле WHILE привело к OnWorkflowItemChanged вызывается только первый раз элемент изменяется.

+0

выглядит многообещающим, позвольте мне попробовать – Wint

+0

Неожиданно \t System.InvalidOperationException: эта операция не может выполняться во время выполнения. в System.Workflow.ComponentModel.DependencyObject.SetValueCommon (DependencyProperty dependencyProperty, значение Object, метаданные PropertyMetadata, Boolean shouldCallSetValueOverrideIfExists) в System.Workflow.ComponentModel.DependencyObject.SetValue (DependencyProperty dependencyProperty, значение объекта) в System.Workflow.Activities.CallExternalMethodActivity.set_CorrelationToken (CorrelationToken value), я получил эту ошибку, когда вручную установил токен, как вы это сделали? – Wint

+0

@Wint Я не могу найти конкретный код, я использовал эту вещь, или, может быть, я сделал это по-другому ... Вы уверены, что сделали это, как указано ссылкой [article] (http: //blogs.msdn. ком/yvan_duhamel/Архив/2009/11/25/Workflow-замки, потому-из-onworkflowitemchanged-событийного handler.aspx)? Похоже, вы назначаете токен корреляции во время выполнения, пытаетесь сделать его с конструктором и привязать к свойству CorrelationToken для действия InitializeWorkflow. (Не забудьте указать свойство OwnerActivityName для родительской последовательности). Затем свяжите это CorrelationToken с дизайнером для события onWorkflowItemChanged. –

Смежные вопросы