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; }
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; }