protected override void Execute(CodeActivityContext context)
        {
            // Create a Lead class and populate it with the input arguments
            Lead l = new Lead();
            l.ContactName = ContactName.Get(context);
            l.ContactPhone = ContactPhone.Get(context);
            l.Interests = Interests.Get(context);
            l.Comments = Notes.Get(context);
            l.WorkflowID = context.WorkflowInstanceId;
            l.Status = "Open";

            // Add this to the work queue to be persisted later
            PersistLead persist = context.GetExtension<PersistLead>();
            persist.AddLead(l, "Insert");

            // Store the request in the OutArgument
            Lead.Set(context, l);

            // Add a custom track record
            CustomTrackingRecord userRecord = new CustomTrackingRecord("New Lead")
            {
                Data = 
                {
                    {"Name", l.ContactName},
                    {"Phone", l.ContactPhone}
                }
            };

            // Emit the custom tracking record
            context.Track(userRecord);
        }
 protected override void OnCustomTracking(CustomTrackingRecord record, TimeSpan timeout)
 {
     StringBuilder data = new StringBuilder();                            
     foreach (var key in record.Data.Keys)
     {
         data.AppendFormat("\"{0}\"={{{1}}}", key, record.Data[key]);
     }
     
     Log.InfoWrite("Tracking::CustomTracking - InstanceId:{0}, Name:{1}, EventTime:{2}, Record#:{3}, Level:{4}, Activity:{5}, Data:[{6}]", record.InstanceId, record.Name, record.EventTime, record.RecordNumber, record.Level, record.Activity.Name, data.ToString());
 }
		private void ProcessCustomTrackingRecord(CustomTrackingRecord record)
		{
			this.Tracer.WriteMessage(string.Format(CultureInfo.InvariantCulture, "\n\tUser Data:", new object[0]));
			foreach (string key in record.Data.Keys)
			{
				object[] item = new object[2];
				item[0] = key;
				item[1] = record.Data[key];
				this.Tracer.WriteMessage(string.Format(CultureInfo.InvariantCulture, " \t\t {0} : {1}", item));
			}
		}
 protected CustomTrackingRecord(CustomTrackingRecord record) : base(record)
 {
     this.Name = record.Name;
     this.Activity = record.Activity;
     if ((record.data != null) && (record.data.Count > 0))
     {
         foreach (KeyValuePair<string, object> pair in record.data)
         {
             this.Data.Add(pair);
         }
     }
 }
Example #5
0
        protected override void Execute(CodeActivityContext context)
        {
            DateTime startLookup = DateTime.Now;

            string symbol = StockSymbol.Get(context);
            double price = knownSymbols[symbol];
            Value.Set(context, price);

            DateTime endLookup = DateTime.Now;

            TimeSpan lookupTime = endLookup - startLookup;
            CustomTrackingRecord userRecord = new CustomTrackingRecord("QuoteLookupEvent");
            userRecord.Data.Add("LookupTime", lookupTime.TotalMilliseconds);
            userRecord.Data.Add("Units", "Milliseconds");
            context.Track(userRecord);
        }
        protected override void Execute(CodeActivityContext context)
        {
            // create and set the record data
            CustomTrackingRecord customRecord = new CustomTrackingRecord("ActionExecuted");
            customRecord.Data.Add("HiringRequestId", this.HiringRequestId.Get(context));
            customRecord.Data.Add("State", this.State.Get(context));
            customRecord.Data.Add("Date", DateTime.Now);
            customRecord.Data.Add("Action", this.Action.Get(context));
            customRecord.Data.Add("Comment", this.Comment.Get(context));
            if (this.Employee.Get(context) != null)
            {
                customRecord.Data.Add("EmployeeId", this.Employee.Get(context).Id);
                customRecord.Data.Add("EmployeeName", this.Employee.Get(context).Name);
            }

            // emit the record
            context.Track(customRecord);
        }
 /// <summary>
 /// When implemented in a derived class, used to synchronously process the tracking record.
 /// </summary>
 /// <param name="record">
 /// The generated tracking record. 
 /// </param>
 /// <param name="timeout">
 /// The time period after which the provider aborts the attempt. 
 /// </param>
 protected virtual void Track(CustomTrackingRecord record, TimeSpan timeout)
 {
     // Do nothing
 }
        private void TrackCustomRecord(CustomTrackingRecord record)
        {
            switch (record.Level)
            {
                case TraceLevel.Error:
                    if (!EtwTrackingParticipantTrackRecords.CustomTrackingRecordErrorIsEnabled(this.diagnosticTrace) || EtwTrackingParticipantTrackRecords.CustomTrackingRecordError(this.diagnosticTrace, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, this.PrepareDictionary(record.Data), record.HasAnnotations ? PrepareAnnotations(record.Annotations) : "<items />", (this.TrackingProfile == null) ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference))
                    {
                        break;
                    }
                    if (!EtwTrackingParticipantTrackRecords.CustomTrackingRecordError(this.diagnosticTrace, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, "<items>...</items>", "<items>...</items>", (this.TrackingProfile == null) ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference))
                    {
                        this.TraceTrackingRecordDropped(record.RecordNumber);
                        return;
                    }
                    this.TraceTrackingRecordTruncated(record.RecordNumber);
                    return;

                case TraceLevel.Warning:
                    if (!EtwTrackingParticipantTrackRecords.CustomTrackingRecordWarningIsEnabled(this.diagnosticTrace) || EtwTrackingParticipantTrackRecords.CustomTrackingRecordWarning(this.diagnosticTrace, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, this.PrepareDictionary(record.Data), record.HasAnnotations ? PrepareAnnotations(record.Annotations) : "<items />", (this.TrackingProfile == null) ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference))
                    {
                        break;
                    }
                    if (!EtwTrackingParticipantTrackRecords.CustomTrackingRecordWarning(this.diagnosticTrace, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, "<items>...</items>", "<items>...</items>", (this.TrackingProfile == null) ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference))
                    {
                        this.TraceTrackingRecordDropped(record.RecordNumber);
                        return;
                    }
                    this.TraceTrackingRecordTruncated(record.RecordNumber);
                    return;

                default:
                    if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordInfoIsEnabled(this.diagnosticTrace) && !EtwTrackingParticipantTrackRecords.CustomTrackingRecordInfo(this.diagnosticTrace, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, this.PrepareDictionary(record.Data), record.HasAnnotations ? PrepareAnnotations(record.Annotations) : "<items />", (this.TrackingProfile == null) ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference))
                    {
                        if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordInfo(this.diagnosticTrace, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, "<items>...</items>", "<items>...</items>", (this.TrackingProfile == null) ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference))
                        {
                            this.TraceTrackingRecordTruncated(record.RecordNumber);
                            return;
                        }
                        this.TraceTrackingRecordDropped(record.RecordNumber);
                    }
                    break;
            }
        }
Example #9
0
		protected CustomTrackingRecord (CustomTrackingRecord record)
			: base (record)
		{
			Data = new Dictionary<string, Object> ();
		}
 /// <summary>
 /// Initializes a new instance of the <see cref="TestCustomTrackingRecord"/> class.
 /// </summary>
 /// <param name="record">
 /// The record. 
 /// </param>
 protected TestCustomTrackingRecord(CustomTrackingRecord record)
     : base(record)
 {
 }
        CustomTrackingQuery Match(CustomTrackingRecord customRecord)
        {
            CustomTrackingQuery query = null;

            if (this.customTrackingQuerySubscriptions != null)
            {
                for (int i = 0; i < this.customTrackingQuerySubscriptions.Count; i++)
                {
                    //check specific and then generic
                    if (string.CompareOrdinal(this.customTrackingQuerySubscriptions[i].Name, customRecord.Name) == 0)
                    {
                        if (CheckSubscription(this.customTrackingQuerySubscriptions[i].ActivityName, customRecord.Activity.Name))
                        {
                            query = this.customTrackingQuerySubscriptions[i];
                            break;
                        }
                    }
                    else if (string.CompareOrdinal(this.customTrackingQuerySubscriptions[i].Name, "*") == 0)
                    {
                        if (CheckSubscription(this.customTrackingQuerySubscriptions[i].ActivityName, customRecord.Activity.Name))
                        {
                            query = this.customTrackingQuerySubscriptions[i];
                            break;
                        }
                    }
                }
            }
            return query;
        }
 private CustomTrackingQuery Match(CustomTrackingRecord customRecord)
 {
     if (this.customTrackingQuerySubscriptions != null)
     {
         for (int i = 0; i < this.customTrackingQuerySubscriptions.Count; i++)
         {
             if (string.CompareOrdinal(this.customTrackingQuerySubscriptions[i].Name, customRecord.Name) == 0)
             {
                 if (CheckSubscription(this.customTrackingQuerySubscriptions[i].ActivityName, customRecord.Activity.Name))
                 {
                     return this.customTrackingQuerySubscriptions[i];
                 }
             }
             else if ((string.CompareOrdinal(this.customTrackingQuerySubscriptions[i].Name, "*") == 0) && CheckSubscription(this.customTrackingQuerySubscriptions[i].ActivityName, customRecord.Activity.Name))
             {
                 return this.customTrackingQuerySubscriptions[i];
             }
         }
     }
     return null;
 }
        void TrackCustomRecord(CustomTrackingRecord record)
        {
            switch (record.Level)
            {
                case TraceLevel.Error:
                    if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordErrorIsEnabled(this.diagnosticTrace))
                    {
                        if (!EtwTrackingParticipantTrackRecords.CustomTrackingRecordError(this.diagnosticTrace, record.EventTraceActivity, record.InstanceId,
                                            record.RecordNumber, record.EventTime.ToFileTime(), record.Name,
                                            record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName,
                                            PrepareDictionary(record.Data),
                                            record.HasAnnotations ? PrepareAnnotations(record.Annotations) : emptyItemsTag,
                                            this.TrackingProfile == null ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference))
                        {
                            if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordError(this.diagnosticTrace, record.EventTraceActivity, record.InstanceId,
                                record.RecordNumber, record.EventTime.ToFileTime(), record.Name,
                                record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName,
                                truncatedItemsTag, truncatedItemsTag, this.TrackingProfile == null ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference))
                            {
                                TraceTrackingRecordTruncated(record.RecordNumber);
                            }
                            else
                            {
                                TraceTrackingRecordDropped(record.RecordNumber);
                            }
                        }
                    }
                    break;
                case TraceLevel.Warning:
                    if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordWarningIsEnabled(this.diagnosticTrace))
                    {
                        if (!EtwTrackingParticipantTrackRecords.CustomTrackingRecordWarning(this.diagnosticTrace, record.EventTraceActivity, record.InstanceId,
                                             record.RecordNumber, record.EventTime.ToFileTime(), record.Name,
                                             record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName,
                                             PrepareDictionary(record.Data),
                                             record.HasAnnotations ? PrepareAnnotations(record.Annotations) : emptyItemsTag,
                                             this.TrackingProfile == null ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference))
                        {
                            if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordWarning(this.diagnosticTrace, record.EventTraceActivity, record.InstanceId,
                                record.RecordNumber, record.EventTime.ToFileTime(), record.Name,
                                record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName,
                                truncatedItemsTag, truncatedItemsTag, this.TrackingProfile == null ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference))
                            {
                                TraceTrackingRecordTruncated(record.RecordNumber);
                            }
                            else
                            {
                                TraceTrackingRecordDropped(record.RecordNumber);
                            }
                        }
                    }
                    break;

                default:
                    if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordInfoIsEnabled(this.diagnosticTrace))
                    {
                        if (!EtwTrackingParticipantTrackRecords.CustomTrackingRecordInfo(this.diagnosticTrace, record.EventTraceActivity, record.InstanceId,
                                        record.RecordNumber, record.EventTime.ToFileTime(), record.Name,
                                             record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName,
                                        PrepareDictionary(record.Data),
                                        record.HasAnnotations ? PrepareAnnotations(record.Annotations) : emptyItemsTag,
                                        this.TrackingProfile == null ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference))
                        {
                            if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordInfo(this.diagnosticTrace, record.EventTraceActivity, record.InstanceId,
                                record.RecordNumber, record.EventTime.ToFileTime(), record.Name,
                                record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName,
                                truncatedItemsTag, truncatedItemsTag, this.TrackingProfile == null ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference))
                            {
                                TraceTrackingRecordTruncated(record.RecordNumber);
                            }
                            else
                            {
                                TraceTrackingRecordDropped(record.RecordNumber);
                            }
                        }
                    }
                    break;
            }
        }
Example #14
0
        protected override void Execute(CodeActivityContext context)
        {
            string text = context.GetValue(this.Text);

            switch (Level)
            {
                case System.Diagnostics.TraceLevel.Error:
                    Trace.TraceError(text);
                    break;
                case System.Diagnostics.TraceLevel.Info:
                    Trace.TraceInformation(text);
                    break;
                case System.Diagnostics.TraceLevel.Verbose:
                    Trace.WriteLine(text, Category);
                    break;
                case System.Diagnostics.TraceLevel.Warning:
                    Trace.TraceWarning(text);
                    break;
            }

            if (Level != System.Diagnostics.TraceLevel.Off)
            {
                var trackRecord = new CustomTrackingRecord(Category, Level);
                trackRecord.Data.Add("Text", text);
                trackRecord.Data.Add("Category", Category);

                context.Track(trackRecord);
            }
        }
 protected virtual void OnCustomTracking(CustomTrackingRecord record, TimeSpan timeout) { }
Example #16
0
        /// <summary>
        /// The execute.
        /// </summary>
        /// <param name="context">
        /// The context.
        /// </param>
        protected override void Execute(CodeActivityContext context)
        {
            var text = context.GetValue(this.Text);

            // Debug.WriteLine(text);
            switch (this.Level)
            {
                case TraceLevel.Error:
                    Trace.TraceError(text);
                    break;
                case TraceLevel.Info:
                    Trace.TraceInformation(text);
                    break;
                case TraceLevel.Verbose:
                    WorkflowTrace.Information(text, this.Category);
                    break;
                case TraceLevel.Warning:
                    Trace.TraceWarning(text);
                    break;
            }

            if (this.Level != TraceLevel.Off)
            {
                var trackRecord = new CustomTrackingRecord(this.Category, this.Level);
                trackRecord.Data.Add("Text", text);
                trackRecord.Data.Add("Category", this.Category);

                context.Track(trackRecord);
            }
        }
Example #17
0
            protected override void Execute(CodeActivityContext context)
            {
                Console.WriteLine("In CustomActivity.Execute");
                CustomTrackingRecord customRecord = new CustomTrackingRecord("OrderIn")
                {
                    Data =
                            {
                                {"OrderId", 200},
                                {"OrderDate", "20 Aug 2001"}
                            }
                };

                // Emit CustomTrackingRecord
                context.Track(customRecord);
            }
        /// <summary>
        /// Process the custom tracking record. This record will contain the persistence detail.
        /// </summary>
        /// <param name="record">Record representing custom tracking record.</param>
        private void ProcessCustomTrackingRecord(CustomTrackingRecord record)
        {
            Tracer.WriteMessage(String.Format(CultureInfo.InvariantCulture, "\n\tUser Data:"));

            if (_debugger != null &&
                record.Data != null)
            {
                // Get breakpoint info if available.
                object value;
                string bp = null;
                if (record.Data.TryGetValue("DebugSequencePoint", out value))
                {
                    bp = value as string;
                    record.Data.Remove("DebugSequencePoint");
                }

                // Update debugger variables.
                _debugger.UpdateVariables(record.Data);

                // Pass breakpoint info to debugger, which will optionally stop WF activity execution here.
                if (!string.IsNullOrEmpty(bp))
                {
                    try
                    {
                        string[] symbols = bp.Trim('\'', '\"').Split(':');
                        ActivityPosition debuggerBP = new ActivityPosition(
                            symbols[2],                                                 // WF Name
                            Convert.ToInt32(symbols[0], CultureInfo.InvariantCulture),  // Line number
                            Convert.ToInt32(symbols[1], CultureInfo.InvariantCulture)); // Col number

                        // Debugger blocking call if breakpoint hit or debugger stepping is active.
                        _debugger.DebuggerCheck(debuggerBP);
                    }
                    catch (FormatException)
                    { }
                    catch (OverflowException)
                    { }
                }
            }

            foreach (string data in record.Data.Keys)
            {
                Tracer.WriteMessage(String.Format(CultureInfo.InvariantCulture, " \t\t {0} : {1}", data, record.Data[data]));
            }
        }