private void StartActivityExecutionTracking(Activity activity) 
 { 
     lock (s_activitiesStackSync) 
     { 
         _executingActivitiesStack.Push(activity.Name); 
     } 
     var eventArgs = new WorkflowExecutionContextEventArgs(this, activity); 
     ActivityExecutionStarting.RaiseEvent(this, eventArgs); 
     if (!Tracking) 
         return; 
     if (_restoring) 
     { 
         if (_trackingActivitiesStack[_restoredActivitiesCount] != activity.Name) 
         { 
             var msg = string.Format( 
                 "Ошибка при восстановлении выполнения потока работ: " + 
                 "действие {0}, которое начинает выполнение, отличается от действия {1}, " + 
                 "которое, согласно информации в контексте, должно начать выполнение", 
                 activity.Name, _trackingActivitiesStack[_restoredActivitiesCount]); 
             throw new ActivityExecutionException(msg, activity, this); 
         } 
         _restoredActivitiesCount++; 
         if (_restoredActivitiesCount == _trackingActivitiesStack.Count) 
             _restoring = false; 
         return; 
     } 
     _trackingActivitiesStack.Push(activity.Name); 
     ExecutionContextChanged.RaiseEvent(this, eventArgs); 
 } 
Beispiel #2
0
 private void ExecutionContext_ActivityExecutionFinished(object sender, WorkflowExecutionContextEventArgs e)
 {
     if (_pressedKeys.Count > 0)
     {
         LogActivityKeys();
     }
     Logger.LogVerbose(Message.WorkflowActivityExecutionFinished, e.Activity.Name);
 }
Beispiel #3
0
 private void ExecutionContext_ActivityExecutionStarting(object sender, WorkflowExecutionContextEventArgs e)
 {
     Logger.LogVerbose(Message.WorkflowActivityExecutionStarting, e.Activity.Name);
     if (// это главный сканер
         _syncManager.ScannerRole == ScannerRole.Master &&
         e.Context.Tracking)
     {
         _stateActivityName = e.Activity.Name;
         RaiseStateChanged();
     }
 }
 private void EndActivityExecutionTracking(Activity activity) 
 { 
     lock (s_activitiesStackSync) 
     { 
         SafePopFromStack(_executingActivitiesStack, activity); 
     } 
     var eventArgs = new WorkflowExecutionContextEventArgs(this, activity); 
     ActivityExecutionFinished.RaiseEvent(this, eventArgs); 
     if (!Tracking) 
         return; 
     if (_restoring) 
         return; 
     SafePopFromStack(_trackingActivitiesStack, activity); 
     ExecutionContextChanged.RaiseEvent(this, eventArgs); 
 }