Esempio n. 1
0
 public QueueItem(System.Activities.Activity element, TransactedReceiveScope parent, TransactedReceiveScope rootTransactedReceiveScope)
 {
     this.activity = element;
     this.parent   = parent;
     this.rootTransactedReceiveScope = rootTransactedReceiveScope;
 }
Esempio n. 2
0
 private void WalkActivityTree()
 {
     if (this.knownServiceActivities == null)
     {
         if (this.Body == null)
         {
             throw System.ServiceModel.Activities.FxTrace.Exception.AsError(new ValidationException(System.ServiceModel.Activities.SR.MissingBodyInWorkflowService));
         }
         WorkflowInspectionServices.CacheMetadata(this.Body);
         this.knownServiceActivities = new List <Receive>();
         this.receiveAndReplyPairs   = new HashSet <ReceiveAndReplyTuple>();
         Queue <QueueItem> queue = new Queue <QueueItem>();
         queue.Enqueue(new QueueItem(this.Body, null, null));
         while (queue.Count > 0)
         {
             QueueItem item     = queue.Dequeue();
             Activity  activity = item.Activity;
             TransactedReceiveScope parentTransactedReceiveScope = item.ParentTransactedReceiveScope;
             TransactedReceiveScope rootTransactedReceiveScope   = item.RootTransactedReceiveScope;
             if (activity is Receive)
             {
                 Receive receive = (Receive)activity;
                 if (rootTransactedReceiveScope != null)
                 {
                     receive.InternalReceive.AdditionalData.IsInsideTransactedReceiveScope = true;
                     if ((receive == parentTransactedReceiveScope.Request) && (parentTransactedReceiveScope == rootTransactedReceiveScope))
                     {
                         receive.InternalReceive.AdditionalData.IsFirstReceiveOfTransactedReceiveScopeTree = true;
                     }
                 }
                 this.knownServiceActivities.Add(receive);
             }
             else if (activity is SendReply)
             {
                 SendReply reply   = (SendReply)activity;
                 Receive   request = reply.Request;
                 if (reply.InternalContent.IsFault)
                 {
                     request.FollowingFaults.Add(reply);
                 }
                 else
                 {
                     if (request.HasReply)
                     {
                         SendReply reply2 = request.FollowingReplies[0];
                         ContractValidationHelper.ValidateSendReplyWithSendReply(reply2, reply);
                     }
                     request.FollowingReplies.Add(reply);
                 }
                 ReceiveAndReplyTuple tuple = new ReceiveAndReplyTuple(request, reply);
                 this.receiveAndReplyPairs.Add(tuple);
             }
             if (activity is TransactedReceiveScope)
             {
                 parentTransactedReceiveScope = activity as TransactedReceiveScope;
                 if (rootTransactedReceiveScope == null)
                 {
                     rootTransactedReceiveScope = parentTransactedReceiveScope;
                 }
             }
             foreach (Activity activity2 in WorkflowInspectionServices.GetActivities(activity))
             {
                 QueueItem item2 = new QueueItem(activity2, parentTransactedReceiveScope, rootTransactedReceiveScope);
                 queue.Enqueue(item2);
             }
         }
     }
 }