protected sealed override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
        {
            if (executionContext == null)
            {
                throw new ArgumentNullException("executionContext");
            }

            ActivityExecutionStatus status = ExecuteForActivity(executionContext, this.InterfaceType, this.MethodName);

            if (status == ActivityExecutionStatus.Closed)
            {
                UnsubscribeForActivity(executionContext);
                executionContext.CloseActivity();
                return(status);
            }

            // cannot resolve queue name or message not available
            // hence subscribe for message arrival
            if (!this.ActivitySubscribed)
            {
                this.ActivitySubscribed = CorrelationService.Subscribe(executionContext, this, this.InterfaceType, this.MethodName, this, this.WorkflowInstanceId);
            }

            return(ActivityExecutionStatus.Executing);
        }
 void IEventActivity.Subscribe(ActivityExecutionContext parentContext, IActivityEventListener <QueueEventArgs> parentEventHandler)
 {
     if (parentContext == null)
     {
         throw new ArgumentNullException("parentContext");
     }
     if (parentEventHandler == null)
     {
         throw new ArgumentNullException("parentEventHandler");
     }
     CorrelationService.Subscribe(parentContext, this, this.InterfaceType, this.EventName, parentEventHandler, base.WorkflowInstanceId);
 }
Exemple #3
0
        protected sealed override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
        {
            if (executionContext == null)
            {
                throw new ArgumentNullException("executionContext");
            }
            ActivityExecutionStatus status = this.ExecuteForActivity(executionContext, this.InterfaceType, this.MethodName);

            if (status == ActivityExecutionStatus.Closed)
            {
                this.UnsubscribeForActivity(executionContext);
                executionContext.CloseActivity();
                return(status);
            }
            if (!this.ActivitySubscribed)
            {
                this.ActivitySubscribed = CorrelationService.Subscribe(executionContext, this, this.InterfaceType, this.MethodName, this, base.WorkflowInstanceId);
            }
            return(ActivityExecutionStatus.Executing);
        }
        protected sealed override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
        {
            if (executionContext == null)
            {
                throw new ArgumentNullException("executionContext");
            }
            object[] args = null;
            ActivityExecutionStatus status = InboundActivityHelper.ExecuteForActivity(this, executionContext, this.InterfaceType, this.EventName, out args);

            if (status == ActivityExecutionStatus.Closed)
            {
                this.RaiseEvent(args);
                this.UnsubscribeForActivity(executionContext);
                executionContext.CloseActivity();
                return(status);
            }
            if (!this.ActivitySubscribed)
            {
                this.ActivitySubscribed = CorrelationService.Subscribe(executionContext, this, this.InterfaceType, this.EventName, this, base.WorkflowInstanceId);
            }
            return(ActivityExecutionStatus.Executing);
        }