/// <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); }
protected virtual void UpdateTrackingQuery(TrackingQuery trackingQuery) { foreach (AnnotationElement element in this.Annotations) { trackingQuery.QueryAnnotations.Add(new KeyValuePair <string, string>(element.Name, element.Value)); } }
internal TrackingQuery CreateTrackingQuery() { TrackingQuery trackingQuery = this.NewTrackingQuery(); this.UpdateTrackingQuery(trackingQuery); return(trackingQuery); }
internal TrackingQuery CreateTrackingQuery() { TrackingQuery query = NewTrackingQuery(); UpdateTrackingQuery(query); return(query); }
/// <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); } }
/// <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); } }
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) { } }
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); }
/// <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>()); }