private void CreateExtracts(XmlReader reader, ExtractCollection extracts)
        {
            if (null == reader)
                throw new ArgumentNullException("reader");

            if (null == extracts)
                throw new ArgumentNullException("extracts");

            if (0 != string.Compare("Extracts", reader.Name, StringComparison.Ordinal))
                throw new TrackingProfileDeserializationException(ExecutionStringManager.TrackingDeserializationInvalidPosition + "Extracts");

            if (reader.IsEmptyElement)
                return;

            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                    case XmlNodeType.Element:
                        if (0 == string.Compare(reader.Name, "ActivityDataTrackingExtract", StringComparison.Ordinal))
                        {
                            ActivityDataTrackingExtract e = new ActivityDataTrackingExtract();
                            CreateExtract(reader, e);
                            extracts.Add(e);
                        }
                        else if (0 == string.Compare(reader.Name, "WorkflowDataTrackingExtract", StringComparison.Ordinal))
                        {
                            WorkflowDataTrackingExtract e = new WorkflowDataTrackingExtract();
                            CreateExtract(reader, e);
                            extracts.Add(e);
                        }
                        //
                        // Xsd validation will catch unknown elements

                        break;
                    case XmlNodeType.EndElement:
                        if (0 == string.Compare(reader.Name, "Extracts", StringComparison.Ordinal))
                            return;
                        break;
                }
            }
            //
            // Only valid exit is on an EndElement that matches the element that is passed in.
            throw new TrackingProfileDeserializationException(ExecutionStringManager.TrackingDeserializationCloseElementNotFound + "Extracts.");
        }
Ejemplo n.º 2
0
        private static void CreateAndInsertTrackingProfile()
        {
            TrackingProfile profile = new TrackingProfile();

            // Create an activity track point, used for tracking data from Code Activities.
            ActivityTrackPoint codeActivityTrackPoint = new ActivityTrackPoint();

            // Create an ActivityTrackingLocation to be added to the track point.
            ActivityTrackingLocation codeActivityTrackingLocation = new ActivityTrackingLocation("CodeActivity");
            codeActivityTrackingLocation.MatchDerivedTypes = true;
            // Add the location "Closed" event to track.
            codeActivityTrackingLocation.ExecutionStatusEvents.Add(ActivityExecutionStatus.Closed);
            codeActivityTrackPoint.MatchingLocations.Add(codeActivityTrackingLocation);

            // Create a WorkflowDataTrackingExtract for extracting data from the Balance property. 
            WorkflowDataTrackingExtract balanceWorkflowTrackingExtract = new WorkflowDataTrackingExtract();
            balanceWorkflowTrackingExtract.Member = "Balance";

            // Create an activity track point, used for tracking data in the custom activity "ServiceCharge".
            ActivityTrackPoint customActivityTrackPoint = new ActivityTrackPoint();
            ActivityTrackingLocation customActivityTrackingLocation = new ActivityTrackingLocation("ServiceCharge");
            // Create an ActivityTrackingLocation to be added to the track point
            customActivityTrackingLocation.ExecutionStatusEvents.Add(ActivityExecutionStatus.Closed);
            customActivityTrackPoint.MatchingLocations.Add(customActivityTrackingLocation);

            // Create an ActivityDataTrackingExtract for extracting Fee property data from the ServiceCharge activity.
            ActivityDataTrackingExtract feeActivityTrackingExtract = new ActivityDataTrackingExtract();
            feeActivityTrackingExtract.Member = "Fee";
            
            // Add extracts to the activity tracking points.
            codeActivityTrackPoint.Extracts.Add(balanceWorkflowTrackingExtract);
            customActivityTrackPoint.Extracts.Add(feeActivityTrackingExtract);

            profile.ActivityTrackPoints.Add(codeActivityTrackPoint);
            profile.ActivityTrackPoints.Add(customActivityTrackPoint);
            profile.Version = new Version("3.0.0.0");

            // Serialize the profile.
            TrackingProfileSerializer serializer = new TrackingProfileSerializer();
            StringWriter writer = new StringWriter(new StringBuilder(), CultureInfo.InvariantCulture);
            serializer.Serialize(writer, profile);
            String trackingprofile = writer.ToString();
            InsertTrackingProfile(trackingprofile);
        }
Ejemplo n.º 3
0
        private void cmdUpdateTrackingProfile_Click(Object sender, EventArgs e)
        {
            ConnectionStringSettings trackingConnectionString = cboTrackingService.SelectedItem as ConnectionStringSettings;

            // update the default tracking profile
            GenericTrackingProfileManager profileManager = new AdoTrackingProfileManager(trackingConnectionString);
            TrackingProfile trackingProfile = profileManager.GetDefaultTrackingProfile();
            foreach (ActivityTrackPoint trackPoint in trackingProfile.ActivityTrackPoints)
            {
                trackPoint.Annotations.Add("Annotation added on " + DateTime.UtcNow);
                TrackingExtract trackingExtract = new ActivityDataTrackingExtract("Name");
                trackingExtract.Annotations.Add("Tracking Data Item added on " + DateTime.UtcNow);
                trackPoint.Extracts.Add(trackingExtract);
            }

            trackingProfile.Version = new Version(
                trackingProfile.Version.Major,
                trackingProfile.Version.Minor + 1, 0, 0);

            if (profileManager.GetTrackingProfile(typeof(SequentialWorkFlow)) != null)
                profileManager.UpdateTrackingProfile(typeof(SequentialWorkFlow), trackingProfile);

            profileManager.UpdateDefaultTrackingProfile(trackingProfile);
        }
        private void CreateExtracts(XmlReader reader, ExtractCollection extracts)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }
            if (extracts == null)
            {
                throw new ArgumentNullException("extracts");
            }
            if (string.Compare("Extracts", reader.Name, StringComparison.Ordinal) != 0)
            {
                throw new TrackingProfileDeserializationException(ExecutionStringManager.TrackingDeserializationInvalidPosition + "Extracts");
            }
            if (!reader.IsEmptyElement)
            {
                while (true)
                {
                    if (!reader.Read())
                    {
                        throw new TrackingProfileDeserializationException(ExecutionStringManager.TrackingDeserializationCloseElementNotFound + "Extracts.");
                    }
                    switch (reader.NodeType)
                    {
                        case XmlNodeType.Element:
                            if (string.Compare(reader.Name, "ActivityDataTrackingExtract", StringComparison.Ordinal) == 0)
                            {
                                ActivityDataTrackingExtract extract = new ActivityDataTrackingExtract();
                                this.CreateExtract(reader, extract);
                                extracts.Add(extract);
                            }
                            else if (string.Compare(reader.Name, "WorkflowDataTrackingExtract", StringComparison.Ordinal) == 0)
                            {
                                WorkflowDataTrackingExtract extract2 = new WorkflowDataTrackingExtract();
                                this.CreateExtract(reader, extract2);
                                extracts.Add(extract2);
                            }
                            break;

                        case XmlNodeType.EndElement:
                            if (string.Compare(reader.Name, "Extracts", StringComparison.Ordinal) == 0)
                            {
                                return;
                            }
                            break;
                    }
                }
            }
        }