protected sealed override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) { Console.WriteLine("***ourCodeActivity.Execute thread:{0}", Thread.CurrentThread.ManagedThreadId); ActivityExecutionStatus status; //ActivityExecutionContextManager manager = executionContext.ExecutionContextManager; //ReadOnlyCollection <ActivityExecutionContext> contexts = manager.ExecutionContexts; //Console.WriteLine ("***ourCodeActivity.Execute {0}", contexts.Count); object data = workflowQueue.Peek(); Console.WriteLine("OnQueueItemAvailable! {0}", data); status = base.Execute(executionContext); return(status); }
void IActivityEventListener <QueueEventArgs> .OnEvent(object sender, QueueEventArgs args) { lock (this.sync) { WorkflowQueue queue = (WorkflowQueue)sender; EventQueueName queueName = (EventQueueName)queue.QueueName; WorkflowActivityTrace.Activity.TraceEvent(TraceEventType.Information, 0, "FollowerQueueCreator: initialized on operation {0} for follower {1}", new object[] { queueName.InterfaceType.Name + queueName.MethodName, this.followerOperation }); IMethodMessage message = queue.Peek() as IMethodMessage; ICollection <CorrelationProperty> propertyValues = CorrelationResolver.ResolveCorrelationValues(queueName.InterfaceType, queueName.MethodName, message.Args, false); EventQueueName name2 = new EventQueueName(queueName.InterfaceType, this.followerOperation, propertyValues); if (!queue.QueuingService.Exists(name2)) { WorkflowActivityTrace.Activity.TraceEvent(TraceEventType.Information, 0, "FollowerQueueCreator::CreateQueue creating q {0}", new object[] { name2.GetHashCode() }); queue.QueuingService.CreateWorkflowQueue(name2, true); } } }
void IActivityEventListener <QueueEventArgs> .OnEvent(object sender, QueueEventArgs args) { lock (sync) { WorkflowQueue queue = (WorkflowQueue)sender; // create the queue after extracting the correlation values from the message EventQueueName staticId = (EventQueueName)queue.QueueName; WorkflowActivityTrace.Activity.TraceEvent(TraceEventType.Information, 0, "FollowerQueueCreator: initialized on operation {0} for follower {1}", staticId.InterfaceType.Name + staticId.MethodName, this.followerOperation); IMethodMessage message = queue.Peek() as IMethodMessage; ICollection <CorrelationProperty> corrValues = CorrelationResolver.ResolveCorrelationValues(staticId.InterfaceType, staticId.MethodName, message.Args, false); EventQueueName queueName = new EventQueueName(staticId.InterfaceType, this.followerOperation, corrValues); if (!queue.QueuingService.Exists(queueName)) { WorkflowActivityTrace.Activity.TraceEvent(TraceEventType.Information, 0, "FollowerQueueCreator::CreateQueue creating q {0}", queueName.GetHashCode()); queue.QueuingService.CreateWorkflowQueue(queueName, true); } } }