public static ProcessTemplateMap ConvertScrum2ToAgile6()
        {
            var map = new ProcessTemplateMap();

            CurrentToGoalMap<string> stateMap;

            // Scrum type => Agile type
            map._workItemTypeMap.Add("Product Backlog Item", "User Story");

            // Scrum Task => Agile Task
            stateMap = new CurrentToGoalMap<string>(StringComparer.OrdinalIgnoreCase);
            stateMap.Add("To Do", "New");
            stateMap.Add("In Progress", "Active");
            stateMap.Add("Done", "Closed");
            map._workItemStateMaps.Add("Task", stateMap);

            // Scrum Bug => Agile Bug
            stateMap = new CurrentToGoalMap<string>(StringComparer.OrdinalIgnoreCase);
            stateMap.Add("New", "Active");
            stateMap.Add("Approved", "Active");
            stateMap.Add("Committed", "Active");
            stateMap.Add("Done", "Resolved");
            stateMap.Add("Removed", "Closed");
            map._workItemStateMaps.Add("Bug", stateMap);

            // Scrum Product Backlog Item => Agile User Story
            stateMap = new CurrentToGoalMap<string>(StringComparer.OrdinalIgnoreCase);
            stateMap.Add("Approved", "Active");
            stateMap.Add("Committed", "Active");
            stateMap.Add("Done", "Resolved");
            map._workItemStateMaps.Add("Product Backlog Item", stateMap);

            // Scrum field => Agile field
            map._workItemFieldMap.Add("Microsoft.VSTS.Common.BacklogPriority", "Microsoft.VSTS.Common.StackRank");
            map._workItemFieldMap.Add("Microsoft.VSTS.Scheduling.Effort", "Microsoft.VSTS.Scheduling.StoryPoints");
            //TODO consider appending Microsoft.VSTS.Common.AcceptanceCriteria content to System.Description

            return map;
        }
Example #2
0
 public DiffEngine(ProcessTemplateMap processTemplateMap)
 {
     _processTemplateMap = processTemplateMap;
 }
        public static ProcessTemplateMap Read(Stream stream)
        {
            var map = new ProcessTemplateMap();

            var settings = new XmlReaderSettings {CloseInput = false};
            using (var reader = XmlReader.Create(stream, settings))
            {
                reader.ReadStartElement("processtemplatemap");
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                        case XmlNodeType.Element:
                            switch (reader.LocalName)
                            {
                                case "workitemtype":
                                    map._workItemTypeMap.Add(reader.GetAttribute("from"), reader.GetAttribute("to"));
                                    break;
                                case "workitemfield":
                                    map._workItemFieldMap.Add(reader.GetAttribute("from"), reader.GetAttribute("to"));
                                    break;
                                case "workitemstate":
                                    var typeName = reader.GetAttribute("type");
                                    if (string.IsNullOrWhiteSpace(typeName))
                                    {
                                        throw new InvalidOperationException("workitemstate element is missing type attribute.");
                                    }
                                    var stateMap = map.GetWorkItemStateMap(typeName);
                                    if (!map._workItemStateMaps.ContainsKey(typeName))
                                    {
                                        map._workItemStateMaps.Add(typeName, stateMap);
                                    }
                                    stateMap.Add(reader.GetAttribute("from"), reader.GetAttribute("to"));
                                    break;
                            }
                            break;
                    }
                }
            }

            return map;
        }