public List <AsyncQueueStep> GetActiveAsyncQueueRequests(int partitionId, string processInstanceName, TimeSpan failoverWaitThreshold, AsyncQueuePriority?priority = null, bool haRequestOnly = false, int batchSize = 10) { if (partitionId >= this.PartitionCount) { throw new ArgumentOutOfRangeException(string.Format("Invalid Parition Id {0} passed. Valid partition values are 0 to {1}", partitionId, this.PartitionCount - 1)); } AsyncQueueSession.ValidateProcessInstanceName(processInstanceName); object propertyValue = this.GetAllPhysicalPartitions()[partitionId]; MultiValuedProperty <AsyncQueueOwnerInfo> propertyValue2 = new MultiValuedProperty <AsyncQueueOwnerInfo>(); QueryFilter queryFilter = QueryFilter.AndTogether(new QueryFilter[] { AsyncQueueSession.NewComparisonFilter(DalHelper.PhysicalInstanceKeyProp, propertyValue), AsyncQueueSession.NewComparisonFilter(AsyncQueueCommonSchema.ProcessInstanceNameProperty, processInstanceName), AsyncQueueSession.NewComparisonFilter(AsyncQueueCommonSchema.OwnerListQueryProperty, propertyValue2), AsyncQueueSession.NewComparisonFilter(AsyncQueueCommonSchema.BatchSizeQueryProperty, batchSize), AsyncQueueSession.NewComparisonFilter(AsyncQueueCommonSchema.FailoverWaitInSecondsQueryProperty, failoverWaitThreshold.TotalSeconds) }); if (haRequestOnly) { AsyncQueueFlags asyncQueueFlags = AsyncQueueFlags.HARequest; queryFilter = QueryFilter.AndTogether(new QueryFilter[] { queryFilter, AsyncQueueSession.NewComparisonFilter(AsyncQueueCommonSchema.FlagsProperty, asyncQueueFlags) }); } if (priority != null) { queryFilter = QueryFilter.AndTogether(new QueryFilter[] { queryFilter, AsyncQueueSession.NewComparisonFilter(AsyncQueueCommonSchema.PriorityProperty, (byte)priority.Value) }); } return(this.dataProviderDirectory.Find <AsyncQueueStep>(queryFilter, null, true, null).Cast <AsyncQueueStep>().ToList <AsyncQueueStep>()); }
public void UpdateStepStatus(string processInstanceName, Guid requestId, Guid organizationalUnitRoot, Guid stepId, AsyncQueueStatus currentStatus, AsyncQueueStatus newStatus, out AsyncQueueRequestStatusInfo requestStatusInfo, TimeSpan?retryWaitInterval = null, string cookie = null) { requestStatusInfo = null; AsyncQueueSession.ValidateProcessInstanceName(processInstanceName); AsyncQueueRequestStatusUpdate asyncQueueRequestStatusUpdate = new AsyncQueueRequestStatusUpdate(organizationalUnitRoot, requestId, stepId); asyncQueueRequestStatusUpdate.ProcessInstanceName = processInstanceName; asyncQueueRequestStatusUpdate.CurrentStatus = currentStatus; asyncQueueRequestStatusUpdate.Status = newStatus; asyncQueueRequestStatusUpdate.Cookie = cookie; if (retryWaitInterval != null) { asyncQueueRequestStatusUpdate.RetryInterval = (int)retryWaitInterval.Value.TotalSeconds; } asyncQueueRequestStatusUpdate[AsyncQueueRequestStatusUpdateSchema.RequestCompleteProperty] = false; asyncQueueRequestStatusUpdate[AsyncQueueRequestStatusUpdateSchema.RequestStatusProperty] = AsyncQueueStatus.None; asyncQueueRequestStatusUpdate[AsyncQueueRequestStatusUpdateSchema.RequestStartDatetimeProperty] = null; asyncQueueRequestStatusUpdate[AsyncQueueRequestStatusUpdateSchema.RequestEndDatetimeProperty] = null; this.Save(this.dataProviderDirectory, asyncQueueRequestStatusUpdate); requestStatusInfo = new AsyncQueueRequestStatusInfo(); requestStatusInfo.Status = asyncQueueRequestStatusUpdate.RequestStatus; requestStatusInfo.StartDatetime = asyncQueueRequestStatusUpdate.RequestStartDatetime; requestStatusInfo.EndDatetime = asyncQueueRequestStatusUpdate.RequestEndDatetime; }