예제 #1
0
        internal void DynamicUpdateCommit(object sender, WorkflowExecutor.DynamicUpdateEventArgs e)
        {
            if (sender == null)
            {
                throw new ArgumentNullException("sender");
            }
            if (!typeof(WorkflowExecutor).IsInstanceOfType(sender))
            {
                throw new ArgumentException("sender");
            }
            WorkflowExecutor skedExec = (WorkflowExecutor)sender;
            DateTime         utcNow   = DateTime.UtcNow;

            foreach (TrackingChannelWrapper wrapper in this._channels)
            {
                wrapper.GetTrackingProfile(skedExec).WorkflowChangeCommit();
            }
            int nextEventOrderId = this._broker.GetNextEventOrderId();

            foreach (TrackingChannelWrapper wrapper2 in this._channels)
            {
                WorkflowTrackingRecord record = new WorkflowTrackingRecord(TrackingWorkflowEvent.Changed, utcNow, nextEventOrderId, new TrackingWorkflowChangedEventArgs(e.ChangeActions, skedExec.WorkflowDefinition));
                if (wrapper2.GetTrackingProfile(skedExec).TryTrackInstanceEvent(TrackingWorkflowEvent.Changed, record))
                {
                    wrapper2.TrackingChannel.Send(record);
                }
            }
        }
예제 #2
0
        internal void DynamicUpdateRollback(object sender, WorkflowExecutor.DynamicUpdateEventArgs e)
        {
            if (sender == null)
            {
                throw new ArgumentNullException("sender");
            }
            if (!typeof(WorkflowExecutor).IsInstanceOfType(sender))
            {
                throw new ArgumentException("sender");
            }
            WorkflowExecutor skedExec = (WorkflowExecutor)sender;

            foreach (TrackingChannelWrapper wrapper in this._channels)
            {
                wrapper.GetTrackingProfile(skedExec).WorkflowChangeRollback();
            }
        }
예제 #3
0
        internal void DynamicUpdateBegin(object sender, WorkflowExecutor.DynamicUpdateEventArgs e)
        {
            if (sender == null)
            {
                throw new ArgumentNullException("sender");
            }
            if (!typeof(WorkflowExecutor).IsInstanceOfType(sender))
            {
                throw new ArgumentException("sender");
            }
            WorkflowExecutor exec = (WorkflowExecutor)sender;

            if (e.ChangeActions != null)
            {
                this.MakeProfilesPrivate(exec);
                foreach (TrackingChannelWrapper wrapper in this._channels)
                {
                    wrapper.GetTrackingProfile(exec).WorkflowChangeBegin(e.ChangeActions);
                }
            }
        }