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); }
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); }