예제 #1
0
        protected void InsertRequest(WorkItemRequest request, WorkItemProgress progress)
        {
            WorkItemInsertResponse response = null;

            // Used for auditing purposes in the ShredHostService.
            if (string.IsNullOrEmpty(request.UserName))
            {
                request.UserName = GetUserName();
            }

            Request = request;

            Platform.GetService <IWorkItemService>(
                s => response = s.Insert(new WorkItemInsertRequest {
                Request = request, Progress = progress
            }));

            // TODO (CR Jun 2012): The passed-in WorkItem contract should not be updated;
            // it should be done by the service and a new instance returned, or something should be returned by this
            // method to let the caller decide what to do.

            if (response.Item == null)
            {
                WorkItem.Status = WorkItemStatusEnum.Deleted;
            }
            else
            {
                WorkItem = response.Item;
            }
        }
예제 #2
0
 public static string SerializeWorkItemProgress(WorkItemProgress data)
 {
     return(JsmlSerializer.Serialize(data, "data",
                                     new JsmlSerializer.SerializeOptions {
         Hook = _workItemProgressHook, DataContractTest = IsWorkItemProgressContract
     }));
 }
예제 #3
0
        public void Test_RefreshWorkItemStatus_UntilFail()
        {
            DummyLogger   mockedLogger = new DummyLogger();
            WorkItemQueue queue        = new WorkItemQueue(10, mockedLogger);

            WorkItemProgress progress = new WorkItemProgress();
            LookupWorkItem   workItem = new LookupWorkItem(progress);

            progress.Progress = Progress.NotStarted;

            queue.AddWorkItem(workItem);
            Assert.AreEqual(1, queue.PendingItemsNum);
            Assert.AreEqual(1, mockedLogger.AddLogged);

            queue.Refresh();
            Assert.AreEqual(Progress.Running, progress.Progress);
            Assert.AreEqual(0, queue.PendingItemsNum);
            Assert.AreEqual(1, queue.ActiveItemsNum);
            Assert.AreEqual(1, queue.RunningItemsNum);

            queue.Refresh();
            queue.Refresh();
            Assert.AreEqual(0, queue.PendingItemsNum);
            Assert.AreEqual(1, queue.ActiveItemsNum);
            Assert.AreEqual(1, queue.RunningItemsNum);
            Assert.AreEqual(0, mockedLogger.CompletedLogged);

            progress.Progress = Progress.Failed;
            queue.Refresh();
            Assert.AreEqual(0, queue.ActiveItemsNum);
            Assert.AreEqual(0, mockedLogger.CompletedLogged);
            Assert.AreEqual(1, mockedLogger.FailedLogged);
        }
        public ActionResult DeleteConfirmed(int id)
        {
            WorkItemProgress workItemProgress = db.WorkItemProgresses.Find(id);

            db.WorkItemProgresses.Remove(workItemProgress);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        private static IconSet GetProgressIcon(WorkItemProgress progress, WorkItemStatusEnum status)
        {
            if (progress == null)
            {
                return(null);
            }

            return(new ProgressBarIconSet("progress", new Size(80, 10), progress.PercentComplete * 100, ActivityMonitorProgressBar.GetColor(progress, status)));
        }
예제 #6
0
        /// <summary>
        /// Method for getting next <see cref="WorkItem"/> entry.
        /// </summary>
        /// <param name="count">The count.</param>
        /// <param name="priority">Search for stat items.</param>
        /// <remarks>
        /// </remarks>
        /// <returns>
        /// A <see cref="WorkItem"/> entry if found, or else null;
        /// </returns>
        private List <WorkItem> InternalGetWorkItems(int count, WorkItemPriorityEnum priority)
        {
            _nowRunningWorkItems.Clear();
            _postponedWorkItems.Clear();

            var itemsToPublish = new List <WorkItemData>();

            try
            {
                var             workItemBroker = _context.GetWorkItemBroker();
                List <WorkItem> workItems      = workItemBroker.GetWorkItemsForProcessing(count * 4, priority);
                foreach (var item in workItems)
                {
                    string reason;
                    if (CanStart(item, out reason))
                    {
                        item.Status = WorkItemStatusEnum.InProgress;
                        _nowRunningWorkItems.Add(item);
                    }
                    else
                    {
                        Postpone(item);
                        _postponedWorkItems.Add(item);
                        WorkItemProgress progress = item.Progress;
                        if (progress != null)
                        {
                            progress.StatusDetails = reason;
                            item.Progress          = progress;
                            itemsToPublish.Add(WorkItemDataHelper.FromWorkItem(item));
                        }
                    }

                    if (_nowRunningWorkItems.Count >= count)
                    {
                        break;
                    }
                }

                _context.Commit();

                return(new List <WorkItem>(_nowRunningWorkItems));
            }
            catch (Exception x)
            {
                Platform.Log(LogLevel.Warn, x, "Unexpected error querying for {0} {1} priority WorkItems", count, priority.GetDescription());
                return(null);
            }
            finally
            {
                if (itemsToPublish.Count > 0)
                {
                    WorkItemPublishSubscribeHelper.PublishWorkItemsChanged(WorkItemsChangedEventType.Update, itemsToPublish);
                }
            }
        }
        // GET: WorkItemProgresses/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            WorkItemProgress workItemProgress = db.WorkItemProgresses.Find(id);

            if (workItemProgress == null)
            {
                return(HttpNotFound());
            }
            return(View(workItemProgress));
        }
예제 #8
0
        public static string SerializeWorkItemProgress(WorkItemProgress data)
        {
            if (data == null)
            {
                return(null);
            }

            var sb = new StringBuilder();

            using (var sw = XmlWriter.Create(sb))
            {
                _workItemProgressSerializer.WriteObject(sw, data);
            }
            return(sb.ToString());
        }
 public ActionResult Edit([Bind(Include = "Id,CurrentDate,WorkItemId,WorkTeamId,WorkPrice,WorkUnitId,WorkQuantity,MixingStationId,OperatorId,Remark,CreateTime,UpdateTime")] WorkItemProgress workItemProgress)
 {
     if (ModelState.IsValid)
     {
         db.Entry(workItemProgress).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.MixingStationId = new SelectList(db.ConcreteMixingStations, "Id", "Name", workItemProgress.MixingStationId);
     ViewBag.OperatorId      = new SelectList(db.Users, "Id", "Name", workItemProgress.OperatorId);
     ViewBag.WorkItemId      = new SelectList(db.WorkItems, "Id", "Name", workItemProgress.WorkItemId);
     ViewBag.WorkTeamId      = new SelectList(db.WorkTeams, "Id", "Name", workItemProgress.WorkTeamId);
     ViewBag.WorkUnitId      = new SelectList(db.WorkUnits, "Id", "Name", workItemProgress.WorkUnitId);
     return(View(workItemProgress));
 }
        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
            };
        }
        // GET: WorkItemProgresses/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            WorkItemProgress workItemProgress = db.WorkItemProgresses.Find(id);

            if (workItemProgress == null)
            {
                return(HttpNotFound());
            }
            ViewBag.MixingStationId = new SelectList(db.ConcreteMixingStations, "Id", "Name", workItemProgress.MixingStationId);
            ViewBag.OperatorId      = new SelectList(db.Users, "Id", "Name", workItemProgress.OperatorId);
            ViewBag.WorkItemId      = new SelectList(db.WorkItems, "Id", "Name", workItemProgress.WorkItemId);
            ViewBag.WorkTeamId      = new SelectList(db.WorkTeams, "Id", "Name", workItemProgress.WorkTeamId);
            ViewBag.WorkUnitId      = new SelectList(db.WorkUnits, "Id", "Name", workItemProgress.WorkUnitId);
            return(View(workItemProgress));
        }
예제 #12
0
        public static ProgressBarColor GetColor(WorkItemProgress progress, WorkItemStatusEnum status)
        {
            var hasFailures = progress.PercentFailed > 0;

            return(_stateMap[status][hasFailures]);
        }