protected static KeyStateMapping LoadWorkflowStateShortcut(XPathNavigator shortcutNav) { string key = null; string workflowState = null; XPathNavigator attrNav = shortcutNav.Clone(); if (attrNav.MoveToFirstAttribute()) { do { switch (attrNav.Name) { case "Key": key = attrNav.Value; break; case "WorkflowState": workflowState = attrNav.Value; break; default: throw new ArgumentException("'" + shortcutNav.Name + "' element doesn't support an attribute '" + attrNav.Name + "'"); } } while (attrNav.MoveToNextAttribute()); } if (string.IsNullOrEmpty(key)) { throw new ArgumentException(string.Format("{0}: 'Key' attribute is missing", shortcutNav.Name)); } if (string.IsNullOrEmpty(workflowState)) { throw new ArgumentException(string.Format("{0}: 'WorkflowState' attribute missing", shortcutNav.Name)); } IWorkflowManager workflowManager = ServiceRegistration.Get <IWorkflowManager>(); WorkflowState state; // We can only create shortcuts for workflow states that have been defined before if (!workflowManager.States.TryGetValue(new Guid(workflowState), out state)) { throw new ArgumentException(string.Format("{0} WorkflowState with ID {1} does not exists, skipping shortcut!", shortcutNav.Name, workflowState)); } KeyStateMapping mapping = new KeyStateMapping(); mapping.Keys.AddRange(ParseKeys(key)); mapping.State = state; return(mapping); }
protected static KeyStateMapping LoadWorkflowStateShortcut(XPathNavigator shortcutNav) { string key = null; string workflowState = null; XPathNavigator attrNav = shortcutNav.Clone(); if (attrNav.MoveToFirstAttribute()) do { switch (attrNav.Name) { case "Key": key = attrNav.Value; break; case "WorkflowState": workflowState = attrNav.Value; break; default: throw new ArgumentException("'" + shortcutNav.Name + "' element doesn't support an attribute '" + attrNav.Name + "'"); } } while (attrNav.MoveToNextAttribute()); if (string.IsNullOrEmpty(key)) throw new ArgumentException(string.Format("{0}: 'Key' attribute is missing", shortcutNav.Name)); if (string.IsNullOrEmpty(workflowState)) throw new ArgumentException(string.Format("{0}: 'WorkflowState' attribute missing", shortcutNav.Name)); IWorkflowManager workflowManager = ServiceRegistration.Get<IWorkflowManager>(); WorkflowState state; // We can only create shortcuts for workflow states that have been defined before if (!workflowManager.States.TryGetValue(new Guid(workflowState), out state)) throw new ArgumentException(string.Format("{0} WorkflowState with ID {1} does not exists, skipping shortcut!", shortcutNav.Name, workflowState)); KeyStateMapping mapping = new KeyStateMapping(); mapping.Keys.AddRange(ParseKeys(key)); mapping.State = state; return mapping; }