/// <summary> /// Routine for failing a work queue uid record. /// </summary> /// <param name="uid">The WorkItemUid entry to fail.</param> /// <param name="retry">A boolean value indicating whether a retry will be attempted later.</param> protected WorkItemUid FailWorkItemUid(WorkItemUid uid, bool retry) { using (var context = new DataAccessContext(DataAccessContext.WorkItemMutex)) { var broker = context.GetWorkItemUidBroker(); var sop = broker.GetWorkItemUid(uid.Oid); if (!sop.FailureCount.HasValue) { sop.FailureCount = 1; } else { sop.FailureCount = (byte)(sop.FailureCount.Value + 1); } if (sop.FailureCount > WorkItemServiceSettings.Default.RetryCount) { sop.Failed = true; } context.Commit(); return(sop); } }
protected override void OnExecute(CommandProcessor theProcessor) { var broker = DataAccessContext.GetWorkItemUidBroker(); _uid = broker.GetWorkItemUid(_uid.Oid); _uid.Complete = true; }
/// <summary> /// Process a specific DICOM file which may be related to a <see cref="WorkItem"/> request. /// </summary> /// <remarks> /// <para> /// On success and if <see cref="uid"/> is set, the <see cref="WorkItemUid"/> field is marked as complete. If processing fails, /// the FailureCount field is incremented for the <see cref="WorkItemUid"/>. /// </para> /// </remarks> /// <param name="studyXml">The <see cref="StudyXml"/> file to update with information from the file.</param> /// <param name="file">The file to process.</param> /// <param name="uid">An optional WorkQueueUid associated with the entry, that will be deleted upon success or failed on failure.</param> /// <exception cref="ApplicationException"/> /// <exception cref="DicomDataException"/> public void ProcessFile(DicomFile file, StudyXml studyXml, WorkItemUid uid) { Platform.CheckForNullReference(file, "file"); Platform.CheckForNullReference(studyXml, "studyXml"); var processFile = new ProcessorFile(file, uid); InsertBatch(new List <ProcessorFile> { processFile }, studyXml); }
public InsertWorkItemCommand(WorkItemRequest request, WorkItemProgress progress, string studyInstanceUid, string seriesInstanceUid, string sopInstanceUid) : base("Insert a WorkItem") { _request = request; _progress = progress; _studyInstanceUid = studyInstanceUid; ExpirationDelaySeconds = 60; WorkItemUid = new WorkItemUid { Complete = false, FailureCount = 0, SeriesInstanceUid = seriesInstanceUid, SopInstanceUid = sopInstanceUid, Failed = false }; }
public InsertWorkItemCommand(WorkItem item, string studyInstanceUid, string seriesInstanceUid, string sopInstanceUid) : base("Insert a WorkItem") { _request = item.Request; _studyInstanceUid = studyInstanceUid; ExpirationDelaySeconds = 60; WorkItem = item; WorkItemUid = new WorkItemUid { Complete = false, FailureCount = 0, WorkItemOid = WorkItem.Oid, SeriesInstanceUid = seriesInstanceUid, SopInstanceUid = sopInstanceUid, Failed = false }; }
private string GetFilePath(WorkItemUid sop) { return(String.IsNullOrEmpty(sop.File) ? Location.GetSopInstancePath(sop.SeriesInstanceUid, sop.SopInstanceUid) : Path.Combine(Location.StudyFolder, sop.File)); }
public CompleteWorkItemUidCommand(WorkItemUid uid) : base("Complete WorkItemUid") { _uid = uid; }
/// <summary> /// Delete WorkItemUid entity. /// </summary> /// <param name="entity"></param> public void Delete(WorkItemUid entity) { this.Context.WorkItemUids.DeleteOnSubmit(entity); }
/// <summary> /// Insert a WorkItemUid /// </summary> /// <param name="entity"></param> public void AddWorkItemUid(WorkItemUid entity) { Context.WorkItemUids.InsertOnSubmit(entity); }
public void Dispose() { File = null; ItemUid = null; }
public ProcessorFile(string path, WorkItemUid uid) { FilePath = path; ItemUid = uid; }
public ProcessorFile(DicomFile file, WorkItemUid uid) { File = file; ItemUid = uid; }