private static void ReadTransitions(GraphFsm graphFsm, XPathNavigator navigator) { var nodosEstado = navigator.Select("section[@name='xgml']/section[@name='graph']/section[@name='edge']"); foreach (XPathNavigator nodo in nodosEstado) { var domainEvent = string.Empty; var source = 0; var target = 0; var value = nodo.Select("attribute[@key='label']"); if (value.MoveNext()) { domainEvent = value.Current.Value; } value = nodo.Select("attribute[@key='source']"); if (value.MoveNext()) { source = value.Current.ValueAsInt; } value = nodo.Select("attribute[@key='target']"); if (value.MoveNext()) { target = value.Current.ValueAsInt; } if (!string.IsNullOrEmpty(domainEvent)) //Hay transisiones sin eventos { graphFsm.AddTransition(source, target, domainEvent); } } }
private static void ReadTransitions(GraphFsm graphFsm, XPathNavigator navigator) { var nodosEstado = navigator.Select("section[@name='xgml']/section[@name='graph']/section[@name='edge']"); foreach (XPathNavigator nodo in nodosEstado) { var domainEvent = string.Empty; var source = 0; var target = 0; var value = nodo.Select("attribute[@key='label']"); if (value.MoveNext()) domainEvent = value.Current.Value; value = nodo.Select("attribute[@key='source']"); if (value.MoveNext()) source = value.Current.ValueAsInt; value = nodo.Select("attribute[@key='target']"); if (value.MoveNext()) target = value.Current.ValueAsInt; if (!string.IsNullOrEmpty(domainEvent)) //Hay transisiones sin eventos graphFsm.AddTransition(source, target, domainEvent); } }
private static void ReadStates(GraphFsm graphFsm, XPathNavigator navigator) { var nodosEstado = navigator.Select("section[@name='xgml']/section[@name='graph']/section[@name='node']"); foreach (XPathNavigator nodo in nodosEstado) { var state = string.Empty; var id = 0; var line = string.Empty; var shape = string.Empty; var value = nodo.Select("attribute[@key='label']"); if (value.MoveNext()) state = value.Current.Value; value = nodo.Select("attribute[@key='id']"); if (value.MoveNext()) id = value.Current.ValueAsInt; value = nodo.Select("section[@name='graphics']/attribute[@key='outlineStyle']"); if (value.MoveNext()) line = value.Current.Value; value = nodo.Select("section[@name='graphics']/attribute[@key='type']"); if (value.MoveNext()) shape = value.Current.Value; graphFsm.AddState(id, state, line, shape, nodosEstado.Count); } }
public GraphFsm LoadFrom(string filename) { var stream = new FileStream(filename, FileMode.Open); var document = new XPathDocument(stream); var navigator = document.CreateNavigator(); var xgmlFsm = new GraphFsm { Logger = LogManager.GetLogger(GetType())}; ReadStates(xgmlFsm, navigator); ReadTransitions(xgmlFsm, navigator); return xgmlFsm; }
public GraphFsm LoadFrom(string filename) { var stream = new FileStream(filename, FileMode.Open); var document = new XPathDocument(stream); var navigator = document.CreateNavigator(); var xgmlFsm = new GraphFsm { Logger = LogManager.GetLogger(GetType()) }; ReadStates(xgmlFsm, navigator); ReadTransitions(xgmlFsm, navigator); return(xgmlFsm); }
public FsmXmglConfigurator(string filename) { var xgmlLoader = new XgmlLoader(); _graphFsm = xgmlLoader.LoadFrom(filename); var startState = _graphFsm.States.Values.FirstOrDefault(s => s.IsStartState()); if (startState != null) { _startState = startState.Name; } _finalStates = _graphFsm.States.Values.Where(s => s.IsStartState()).Select(s => s.Name).ToList(); }
private static void ReadStates(GraphFsm graphFsm, XPathNavigator navigator) { var nodosEstado = navigator.Select("section[@name='xgml']/section[@name='graph']/section[@name='node']"); foreach (XPathNavigator nodo in nodosEstado) { var state = string.Empty; var id = 0; var line = string.Empty; var shape = string.Empty; var value = nodo.Select("attribute[@key='label']"); if (value.MoveNext()) { state = value.Current.Value; } value = nodo.Select("attribute[@key='id']"); if (value.MoveNext()) { id = value.Current.ValueAsInt; } value = nodo.Select("section[@name='graphics']/attribute[@key='outlineStyle']"); if (value.MoveNext()) { line = value.Current.Value; } value = nodo.Select("section[@name='graphics']/attribute[@key='type']"); if (value.MoveNext()) { shape = value.Current.Value; } graphFsm.AddState(id, state, line, shape, nodosEstado.Count); } }