Example #1
0
        public void TwoFullyAndEquallyDefinedWorkStepInstancesShouldEqual()
        {
            var ws1 = WorkStep.New("/path").UpdateOrdinal(1).UpdateType(WorkStepType.Normal).UpdateWorkItemClass("class").UpdateTitle("title").UpdateWipLimit(2);
            var ws2 = WorkStep.New("/path").UpdateOrdinal(1).UpdateType(WorkStepType.Normal).UpdateWorkItemClass("class").UpdateTitle("title").UpdateWipLimit(2);

            AssertAreEqual(ws1, ws2);
        }
Example #2
0
        public void ShouldEqualHaveSameHashCodeAndToStringIfPathMatch()
        {
            var ws1 = WorkStep.New("/path");
            var ws2 = WorkStep.New("/path");

            AssertAreEqual(ws1, ws2);
        }
Example #3
0
        public void ShouldUpdateTitle()
        {
            var workStep = WorkStep.New("/analysis");

            Assert.AreEqual(null, workStep.Title);
            Assert.AreEqual("title", workStep.UpdateTitle("title").Title);
        }
Example #4
0
        public void ShouldUpdateType()
        {
            var workStep = WorkStep.New("/analysis");

            Assert.AreEqual(WorkStepType.Normal, workStep.Type);
            Assert.AreEqual(WorkStepType.Begin, workStep.UpdateType(WorkStepType.Begin).Type);
        }
Example #5
0
        public void ShouldUpdateOrdinal()
        {
            var workStep = WorkStep.New("/analysis");

            Assert.AreEqual(null, workStep.Ordinal);
            Assert.AreEqual(1, workStep.UpdateOrdinal(1).Ordinal);
        }
Example #6
0
        public void ShouldNotEqualNotHaveSameHashCodeOrToStringIfPathVary()
        {
            var ws1 = WorkStep.New("/path1");
            var ws2 = WorkStep.New("/path2");

            AssertAreNotEqual(ws1, ws2);
        }
    /// <summary>
    /// Setzt den Letzten WorkStep zurück.
    /// Aufruf über Button
    /// </summary>
    public void UndoLast()
    {
        foreach (Task t in currentWorkStep.tasks)
        {
            if (t.TaskDone)
            {
                currentWorkStep.ActivateWorkStep();
                return;
            }
        }

        int targetIdx = 0;

        while (workSteps[targetIdx] != currentWorkStep)
        {
            targetIdx++;
        }
        targetIdx--;
        currentWorkStep = workSteps[0];
        foreach (WorkStep ws in workSteps)
        {
            ws.InitWorkStep();
        }
        ActivateNextWorkStep();
        while (targetIdx > 0 && currentWorkStep != workSteps[targetIdx])
        {
            SkipWorkStep();
            ActivateNextWorkStep();
        }
    }
        public void ShouldUpdateWorkItemIfTimeStampIsSetAndEqualToLastTimeStamp()
        {
            var mocks      = new MockRepository();
            var createTime = DateTime.Now;

            _workflow.MockTime(mocks, createTime);

            using (mocks.Playback())
            {
                _workStepRepository.Add(WorkStep.New("/analysis").UpdateOrdinal(1).UpdateType(WorkStepType.Begin).UpdateWorkItemClass("cr"));
                _workflow.CreateWorkItem(WorkItem.New("cr1", "/analysis"));
            }

            var updateTime = createTime.AddMilliseconds(1);

            _workflow.MockTime(mocks, updateTime);

            using (mocks.Playback())
            {
                _workflow.UpdateWorkItem(WorkItem.New("cr1", "/analysis").UpdateTimestamp(createTime));
            }

            var workItem = _workflow.GetWorkItem("cr1");

            Assert.AreEqual(updateTime, workItem.Timestamp);
        }
Example #9
0
        public object Deserialize(WorkStep step)
        {
            if (step.Type != OperationConstants.CHANGE_TEXT)
            {
                //TODO throw exception
                return(null);
            }

            var desc = new ChangeTextDescription();

            desc.Content = step.Params["content"];
            desc.Units   = step.Params["units"];

            int count;

            if (!int.TryParse(step.Params["variables._count"], out count))
            {
                //TODO throw Exception
                return(null);
            }

            for (int i = 0; i < count; i++)
            {
                var kvp = new KeyValuePair <string, string>(step.Params["variables." + i + ".code"], step.Params["variables." + i + ".name"]);
                desc.Variables.Add(kvp);
            }

            return(desc);
        }
Example #10
0
        public object Deserialize(WorkStep step)
        {
            if (step.Type != OperationConstants.PIVOT)
            {
                //TODO throw exception
                return(null);
            }

            var desc = new List <PivotDescription>();

            int count;

            if (!int.TryParse(step.Params["_count"], out count))
            {
                //TODO throw Exception
                return(null);
            }

            for (int i = 0; i < count; i++)
            {
                var d = new PivotDescription();
                d.VariableName      = step.Params[i + ".name"];
                d.VariablePlacement = (PlacementType)Enum.Parse(typeof(PlacementType), step.Params[i + ".placement"], true);
                desc.Add(d);
            }

            return(desc.ToArray());
        }
Example #11
0
        private void RenderTransientListItem(HtmlTextWriter writer, WorkStep transientStep, WorkItem expandedWorkItem)
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "transient");
            writer.RenderBeginTag(HtmlTextWriterTag.Li);

            writer.RenderBeginTag(HtmlTextWriterTag.Ol);

            writer.AddAttribute(HtmlTextWriterAttribute.Id, GenerateWorkStepId(transientStep));
            writer.AddAttribute(HtmlTextWriterAttribute.Class, GetLeafStepClasses(transientStep).Join(' '));
            writer.RenderBeginTag(HtmlTextWriterTag.Li);

            writer.RenderBeginTag(HtmlTextWriterTag.Ol);
            RenderWorkItem(writer, expandedWorkItem);
            writer.RenderEndTag(); //ol

            writer.RenderEndTag(); //li

            var childSteps = _workflowRepository.GetChildWorkSteps(transientStep.Path);

            RenderWorkStepListItems(writer, childSteps);

            writer.RenderEndTag(); //ol

            writer.RenderEndTag(); //li
        }
Example #12
0
 private void DGVAddRow(WorkStep keyname, string[] aydata)
 {
     BeginInvoke((Action)(() =>
     {
         DGVMenus[keyname].AddGridrow(aydata);
     }));
 }
Example #13
0
        public WorkStep Serialize(object obj)
        {
            if (!(obj is ChangeValueOrderDescription))
            {
                //TODO throw exception
                return(null);
            }

            var desc = obj as ChangeValueOrderDescription;
            var step = new WorkStep()
            {
                Id = Guid.NewGuid().ToString()
            };

            step.Type = OperationConstants.CHANGE_VALUE_ORDER;

            step.Params.Add("variableCode", desc.VariableCode);

            step.Params.Add("indexies._count", desc.ModifiedVariableValueWeight.Length.ToString());

            for (int i = 0; i < desc.ModifiedVariableValueWeight.Length; i++)
            {
                step.Params.Add("indexies." + i, desc.ModifiedVariableValueWeight[i].ToString());
            }

            return(step);
        }
Example #14
0
        public static WorkStep CreateWorkStep(this IWriteableWorkStepRepository repository, string path, int wipLimit)
        {
            var step = WorkStep.New(path).UpdateWipLimit(wipLimit);

            repository.CreateWorkStep(step);
            return(step);
        }
Example #15
0
        public static WorkStep CreateWorkStep(this IWriteableWorkStepRepository repository, string path, WorkStepType type)
        {
            var step = WorkStep.New(path).UpdateType(type);

            repository.CreateWorkStep(step);
            return(step);
        }
Example #16
0
        public WorkStep GetWorkStep(string parentPath)
        {
            var workStep = WorkStep.New(WorkflowPath.CombinePath(parentPath, Step));

            if (Ordinal.HasValue)
            {
                workStep = workStep.UpdateOrdinal(Ordinal.Value);
            }

            if (Type.HasValue)
            {
                workStep = workStep.UpdateType(Type.Value);
            }

            if (WorkItemClass != null)
            {
                workStep = workStep.UpdateWorkItemClass(WorkItemClass);
            }

            if (Title != null)
            {
                workStep = workStep.UpdateTitle(Title);
            }

            return(workStep);
        }
Example #17
0
        public WorkStep Serialize(object obj)
        {
            if (!(obj is CalculatePerPartDescription))
            {
                //TODO throw exception
                return(null);
            }

            var desc = obj as CalculatePerPartDescription;
            var step = new WorkStep()
            {
                Id = Guid.NewGuid().ToString()
            };

            step.Type = OperationConstants.PER_PART;

            step.Params.Add("calculationVariant", desc.CalculationVariant.ToString());
            step.Params.Add("operationType", desc.OperationType.ToString());
            step.Params.Add("valueName", desc.ValueName);
            step.Params.Add("keepValue", desc.KeepValue.ToString());

            desc.ValueSelection.Serialize(step, "selection.");

            return(step);
        }
Example #18
0
        /// <summary>
        /// </summary>
        /// <param name="wstep"/>
        /// <param name="handled"/>
        /// <param name="prevReturnValue"/>
        /// <returns/>
        public IEnumerable <AoEquipment> GET_LOADABLE_EQPS0(WorkStep wstep, ref bool handled, IEnumerable <AoEquipment> prevReturnValue)
        {
            try
            {
                List <AoEquipment> equipList = new List <AoEquipment>();

                if (wstep.Steps.Count == 0)
                {
                    return(equipList);
                }

                List <string> list = SimulationHelper.GetLoadableList(wstep.Steps[0] as MicronBEAssyBEStep);

                foreach (string eqp in list)
                {
                    AoEquipment aeqp = AoFactory.Current.GetEquipment(eqp);
                    if (aeqp == null)
                    {
                        continue;
                    }

                    equipList.Add(aeqp);
                }

                return(equipList);
            }
            catch (Exception e)
            {
                WriteHelper.WriteErrorHistory(ErrorLevel.FATAL, string.Format("ErrorMessage : {0}   MethodName : {1}", e.Message, System.Reflection.MethodInfo.GetCurrentMethod().Name));
                return(default(IEnumerable <AoEquipment>));
            }
        }
Example #19
0
        public WorkStep Serialize(object obj)
        {
            if (!(obj is PivotDescription[]))
            {
                //TODO throw exception
                return(null);
            }

            var desc = obj as PivotDescription[];

            var step = new WorkStep();

            step.Id   = Guid.NewGuid().ToString();
            step.Type = OperationConstants.PIVOT;

            step.Params.Add("_count", desc.Length.ToString());

            for (int i = 0; i < desc.Length; i++)
            {
                step.Params.Add(i + ".name", desc[i].VariableName);
                step.Params.Add(i + ".placement", desc[i].VariablePlacement.ToString());
            }

            return(step);
        }
        private static WorkStep GenerateWorkStep(string path, IEnumerable <Attribute> attributes)
        {
            var step = WorkStep.New(path);

            foreach (var attribute in attributes)
            {
                switch (attribute.Name)
                {
                case "Type":
                    step = step.UpdateType((WorkStepType)Enum.Parse(typeof(WorkStepType), attribute.Value));
                    break;

                case "Ordinal":
                    step = step.UpdateOrdinal(XmlConvert.ToInt32(attribute.Value));
                    break;

                case "WorkItemClass":
                    step = step.UpdateWorkItemClass(attribute.Value);
                    break;

                case "Title":
                    step = step.UpdateTitle(attribute.Value);
                    break;
                }
            }

            return(step);
        }
        private void SendUpdateRequest(WorkStep workStep)
        {
            var putAttributeRequest = new PutAttributesRequest {
                DomainName = _domain, ItemName = workStep.Path
            };

            putAttributeRequest.Attribute.Add(new ReplaceableAttribute {
                Name = "Type", Value = workStep.Type.ToString(), Replace = true
            });
            putAttributeRequest.Attribute.Add(new ReplaceableAttribute {
                Name = "Ordinal", Value = workStep.Ordinal.ToString(), Replace = true
            });
            putAttributeRequest.Attribute.Add(new ReplaceableAttribute {
                Name = "WorkItemClass", Value = workStep.WorkItemClass, Replace = true
            });

            if (!string.IsNullOrEmpty(workStep.Title))
            {
                putAttributeRequest.Attribute.Add(new ReplaceableAttribute {
                    Name = "Title", Value = workStep.Title, Replace = true
                });
            }

            _client.PutAttributes(putAttributeRequest);
        }
        public WorkStep Serialize(object obj)
        {
            if (!(obj is ChangeTextCodePresentationDescription))
            {
                //TODO throw exception
                return(null);
            }

            var desc = obj as ChangeTextCodePresentationDescription;
            var step = new WorkStep();

            step.Id   = Guid.NewGuid().ToString();
            step.Type = OperationConstants.CHANGE_TEXT_CODE_PRESENTATION;

            step.Params.Add("variables._count", desc.PresentationDictionary.Count.ToString());

            int i = 0;

            foreach (KeyValuePair <String, HeaderPresentationType> kvp in desc.PresentationDictionary)
            {
                step.Params.Add("variables." + i + ".code", kvp.Key);
                step.Params.Add("variables." + i + ".presentationType", kvp.Value.ToString());
                i++;
            }
            return(step);
        }
        public object Deserialize(WorkStep step)
        {
            if (step.Type != OperationConstants.CHANGE_TEXT_CODE_PRESENTATION)
            {
                //TODO throw exception
                return(null);
            }

            var desc = new ChangeTextCodePresentationDescription();

            int count;

            if (!int.TryParse(step.Params["variables._count"], out count))
            {
                //TODO throw Exception
                return(null);
            }

            for (int i = 0; i < count; i++)
            {
                string code = step.Params["variables." + i + ".code"];
                HeaderPresentationType presType = (HeaderPresentationType)Enum.Parse(typeof(HeaderPresentationType), step.Params["variables." + i + ".presentationType"], true);
                desc.PresentationDictionary.Add(code, presType);
            }

            return(desc);
        }
Example #24
0
        public void ShouldCreateWorkStepWithSameWorkItemClassAsPrecedingSibilingIfMissingWorkItemClassAndNoParent()
        {
            _creator.CreateWorkStep(WorkStep.New("/analysis").UpdateWorkItemClass("class1"));
            _creator.CreateWorkStep(WorkStep.New("/development"));

            Assert.AreEqual("class1", _workStepRepository.GetWorkStep("/development").WorkItemClass);
        }
Example #25
0
 public void ShouldCreateChildrenOfParallelStepWithDifferentWorkItemClass()
 {
     _creator.CreateWorkStep(
         WorkStep.New("/feedback").UpdateType(WorkStepType.Parallel).UpdateWorkItemClass("cr"));
     _creator.CreateWorkStep(WorkStep.New("/feedback/review").UpdateWorkItemClass("cr-review"));
     _creator.CreateWorkStep(WorkStep.New("/feedback/test").UpdateWorkItemClass("cr-test"));
 }
Example #26
0
 public void ShouldAppendWhenCreatingWorkStepWithoutOrdinal()
 {
     _creator.CreateWorkStep(WorkStep.New("/analysis").UpdateWorkItemClass("cr"));
     _creator.CreateWorkStep(WorkStep.New("/analysis/inprocess"));
     _creator.CreateWorkStep(WorkStep.New("/analysis/done"));
     Assert.AreEqual(1, _workStepRepository.GetWorkStep("/analysis/done").Ordinal);
 }
Example #27
0
 public void ShouldThrowExceptionIfSiblingHasSameOrdinalWhenCreatingWorkStep()
 {
     _creator.CreateWorkStep(WorkStep.New("/analysis").UpdateWorkItemClass("cr").UpdateOrdinal(1));
     AssertUtils.AssertThrows <InvalidOperationException>(
         () => _creator.CreateWorkStep(WorkStep.New("/development").UpdateOrdinal(1))
         );
 }
Example #28
0
        public static WorkStep CreateWorkStep(this IWriteableWorkStepRepository repository, string path)
        {
            var step = WorkStep.New(path);

            repository.CreateWorkStep(step);
            return(step);
        }
        public void CreateWorkStep(WorkStep workStep)
        {
            var entry = WorkStepLogEntry.CreateEntry(workStep);

            _workflow.CreateWorkStep(workStep);
            _log.AddLogEntry(entry);
        }
Example #30
0
        public WorkStep Serialize(object obj)
        {
            if (!(obj is ChangeTextDescription))
            {
                //TODO throw exception
                return(null);
            }

            var desc = obj as ChangeTextDescription;
            var step = new WorkStep();

            step.Id = Guid.NewGuid().ToString();

            step.Type = OperationConstants.CHANGE_TEXT;
            step.Params.Add("content", desc.Content);
            step.Params.Add("units", desc.Units);
            step.Params.Add("variables._count", desc.Variables.Count.ToString());
            for (int i = 0; i < desc.Variables.Count; i++)
            {
                step.Params.Add("variables." + i + ".code", desc.Variables[i].Key);
                step.Params.Add("variables." + i + ".name", desc.Variables[i].Value);
            }

            return(step);
        }
 public WorkItemTransition(WorkItem workItem, WorkStep workStep)
 {
     WorkItem = workItem;
     WorkStep = workStep;
 }
 private bool CanAcceptWip(WorkStep workStep, string workItemId)
 {
     return _wipLimit.CanAcceptWorkItem(WorkItem.New(workItemId, workStep.Path));
 }
 public void LogCreateWorkStep(WorkStep workStep)
 {
     _writer.WriteLine("{0},{1},{2}", "CREATE STEP", DateTime.Now, workStep.Path);
     _writer.Flush();
 }
 private static void AssertAreNotEqual(WorkStep ws1, WorkStep ws2)
 {
     Assert.IsFalse(ws1.Equals(ws2));
     Assert.AreNotEqual(ws1.GetHashCode(), ws2.GetHashCode());
     Assert.AreNotEqual(ws1.ToString(), ws2.ToString());
 }
 public WipLimitViolationException(WorkItem workItem, WorkStep toWorkStep)
     : base(string.Format("WIP limit violated. Cannot move work item '{0}' to work step '{1}'", 
             workItem.Id, toWorkStep.Path))
 {
 }
 public static WorkStepLogEntry CreateEntry(WorkStep workStep)
 {
     return new WorkStepLogEntry {WorkStep = workStep};
 }
 private void AssertBelowWipLimitAndCreateWorkItem(WorkStep workStep, params string[] ids)
 {
     foreach (var id in ids)
     {
         Assert.IsTrue(CanAcceptWip(workStep, id));
         _workItemRepository.CreateWorkItem(workStep, id);
     }
 }