Exemplo n.º 1
0
        /// <summary>
        /// Returns tracking data for the entire set of workflow instances that
        /// match the specified query criteria.
        /// </summary>
        /// <param name="query">
        /// A <see cref="TrackingQuery" /> containing query criteria.
        /// </param>
        /// <returns>
        /// A list containing <see cref="TrackingWorkflowInstance" /> objects
        /// that provide access to the tracking data associated with the set of
        /// workflow instances that match the specified query criteria.
        /// </returns>
        public IList <TrackingWorkflowInstance> GetWorkflows(TrackingQuery query)
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }

            List <TrackingWorkflowInstance> trackingWorkflowInstances = new List <TrackingWorkflowInstance>();

            using (DbCommand dbCommand = CreateCommand(_nameResolver.ResolveCommandName(TrackingCommandName.GetWorkflows), CommandType.StoredProcedure))
            {
                buildQueryParameters(dbCommand, query);

                AddParameter(dbCommand, _nameResolver.ResolveParameterName(
                                 TrackingCommandName.GetWorkflows,
                                 TrackingParameterName.TrackingWorkflowInstances),
                             AdoDbType.Cursor, ParameterDirection.Output);

                using (IDataReader dataReader = dbCommand.ExecuteReader())
                {
                    while (dataReader.Read())
                    {
                        trackingWorkflowInstances.Add(buildTrackingWorkflowInstance(
                                                          dataReader, TrackingCommandName.GetWorkflows));
                    }
                }
            }

            return(trackingWorkflowInstances);
        }
Exemplo n.º 2
0
 protected virtual void UpdateTrackingQuery(TrackingQuery trackingQuery)
 {
     foreach (AnnotationElement element in this.Annotations)
     {
         trackingQuery.QueryAnnotations.Add(new KeyValuePair <string, string>(element.Name, element.Value));
     }
 }
Exemplo n.º 3
0
        internal TrackingQuery CreateTrackingQuery()
        {
            TrackingQuery trackingQuery = this.NewTrackingQuery();

            this.UpdateTrackingQuery(trackingQuery);
            return(trackingQuery);
        }
        internal TrackingQuery CreateTrackingQuery()
        {
            TrackingQuery query = NewTrackingQuery();

            UpdateTrackingQuery(query);
            return(query);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Returns tracking data for a paged set of workflow instances that
        /// match the specified query criteria.
        /// </summary>
        /// <param name="query">
        /// A <see cref="TrackingQuery" /> containing query criteria.
        /// </param>
        /// <param name="startOffset">
        /// <see cref="Int32" /> indicating the start offset in the entire
        /// set of matching workflow instances to begin returning records.
        /// </param>
        /// <param name="maxResults">
        /// <see cref="Int32" /> indicating the maximum number of records
        /// to return from <paramref name="startOffset"/>.
        /// </param>
        /// <returns>
        /// A <see cref="SearchResults{T}" /> containing <see cref="TrackingWorkflowInstance" />
        /// objects that provide access to the tracking data associated with a paged set of
        /// workflow instances that match the specified query criteria.
        /// </returns>
        public SearchResults <TrackingWorkflowInstance> GetWorkflows(TrackingQuery query, Int32 startOffset, Int32 maxResults)
        {
            using (ITrackingQueryResourceAccessor resourceAccessor = CreateAccessor(resourceProvider))
            {
                SearchResults <TrackingWorkflowInstance> searchResults = resourceAccessor.GetWorkflows(query, startOffset, maxResults);
                foreach (TrackingWorkflowInstance trackingWorkflowInstance in searchResults.Results)
                {
                    trackingWorkflowInstance.QueryManager = this;
                }

                return(searchResults);
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Returns tracking data for the entire set of workflow instances that
        /// match the specified query criteria.
        /// </summary>
        /// <param name="query">
        /// A <see cref="TrackingQuery" /> containing query criteria.
        /// </param>
        /// <returns>
        /// A list containing <see cref="TrackingWorkflowInstance" /> objects
        /// that provide access to the tracking data associated with the set of
        /// workflow instances that match the specified query criteria.
        /// </returns>
        public IList <TrackingWorkflowInstance> GetWorkflows(TrackingQuery query)
        {
            using (ITrackingQueryResourceAccessor resourceAccessor = CreateAccessor(resourceProvider))
            {
                IList <TrackingWorkflowInstance> trackingWorkflowInstances = resourceAccessor.GetWorkflows(query);
                foreach (TrackingWorkflowInstance trackingWorkflowInstance in trackingWorkflowInstances)
                {
                    trackingWorkflowInstance.QueryManager = this;
                }

                return(trackingWorkflowInstances);
            }
        }
Exemplo n.º 7
0
        private void buildQueryParameters(DbCommand dbCommand, TrackingQuery query)
        {
            // inspect the query passed to us and add any populated
            // parameters to the passed database command
            if (query.StatusDateRange != null)
            {
                if (query.StatusDateRange.StartDate.HasValue)
                {
                    AddParameter(dbCommand, _nameResolver.ResolveParameterName(
                                     TrackingCommandName.GetWorkflows, TrackingParameterName.StartDate),
                                 query.StatusDateRange.StartDate.Value, AdoDbType.DateTime);
                }

                if (query.StatusDateRange.EndDate.HasValue)
                {
                    AddParameter(dbCommand, _nameResolver.ResolveParameterName(
                                     TrackingCommandName.GetWorkflows, TrackingParameterName.EndDate),
                                 query.StatusDateRange.EndDate.Value, AdoDbType.DateTime);
                }
            }

            if (query.Statuses.Count > 0)
            {
                // create a comma-delimited representation of the specified query statuses
                String [] statusArray = new String [query.Statuses.Count];
                for (Int32 i = 0; i < query.Statuses.Count; i++)
                {
                    statusArray [i] = ((Int32)query.Statuses [i]).ToString();
                }

                AddParameter(dbCommand, _nameResolver.ResolveParameterName(
                                 TrackingCommandName.GetWorkflows, TrackingParameterName.WorkflowInstanceStatusId),
                             String.Join(",", statusArray), AdoDbType.String);
            }

            //TODO implement this
            if (query.Types.Count > 0)
            {
            }
        }
Exemplo n.º 8
0
        public static TrackingQuery GetTrackingQuery(string queryName, string json)
        {
            TrackingQuery r = null;

            if (string.Compare(queryName, "WorkflowInstanceQuery", true) == 0)
            {
                r = JsonHelper
                    .DeserializeByJTokenPath <WorkflowInstanceQuery>
                    (
                    json
                    );
            }
            else if (string.Compare(queryName, "ActivityStateQuery", true) == 0)
            {
                r = JsonHelper
                    .DeserializeByJTokenPath <ActivityStateQuery>
                    (
                    json
                    );
            }
            else if (string.Compare(queryName, "CustomTrackingQuery", true) == 0)
            {
                r = JsonHelper
                    .DeserializeByJTokenPath <CustomTrackingQuery>
                    (
                    json
                    );
            }
            else if (string.Compare(queryName, "FaultPropagationQuery", true) == 0)
            {
                r = JsonHelper
                    .DeserializeByJTokenPath <FaultPropagationQuery>
                    (
                    json
                    );
            }
            else if (string.Compare(queryName, "BookmarkResumptionQuery", true) == 0)
            {
                r = JsonHelper
                    .DeserializeByJTokenPath <BookmarkResumptionQuery>
                    (
                    json
                    );
            }
            else if (string.Compare(queryName, "ActivityScheduledQuery", true) == 0)
            {
                r = JsonHelper
                    .DeserializeByJTokenPath <ActivityScheduledQuery>
                    (
                    json
                    );
            }
            else if (string.Compare(queryName, "CancelRequestedQuery", true) == 0)
            {
                r = JsonHelper
                    .DeserializeByJTokenPath <CancelRequestedQuery>
                    (
                    json
                    );
            }
            return(r);
        }
Exemplo n.º 9
0
 /// <summary>
 /// Returns tracking data for a paged set of workflow instances that
 /// match the specified query criteria.
 /// </summary>
 /// <param name="query">
 /// A <see cref="TrackingQuery" /> containing query criteria.
 /// </param>
 /// <param name="startOffset">
 /// <see cref="Int32" /> indicating the start offset in the entire
 /// set of matching workflow instances to begin returning records.
 /// </param>
 /// <param name="maxResults">
 /// <see cref="Int32" /> indicating the maximum number of records
 /// to return from <paramref name="startOffset"/>.
 /// </param>
 /// <returns>
 /// A <see cref="SearchResults{T}" /> containing <see cref="TrackingWorkflowInstance" />
 /// objects that provide access to the tracking data associated with a paged set of
 /// workflow instances that match the specified query criteria.
 /// </returns>
 public SearchResults <TrackingWorkflowInstance> GetWorkflows(TrackingQuery query, Int32 startOffset, Int32 maxResults)
 {
     return(new SearchResults <TrackingWorkflowInstance>());
 }