public static string GetPartialGoalDiagram(Goal g) { var sw = new StringWriter (); var exporter = new DotExport (g.model, sw); exporter.ExportGoal (g, true); foreach (var r in g.ParentRefinements ()) { foreach (var g2 in r.SubGoals ().Where (c => c != g)) { exporter.ExportGoal (g2); } exporter.ExportGoal (r.ParentGoal ()); exporter.ExportRefinement (r.ParentGoal (), r); } foreach (var r in g.Refinements()) { foreach (var g2 in r.SubGoals ()) { exporter.ExportGoal (g2); } exporter.ExportRefinement (g, r); } foreach (var r in g.AgentAssignments()) { foreach (var g2 in r.Agents ()) { exporter.ExportAgent (g2); } exporter.ExportAssignment (g, r); } foreach (var r in g.Obstructions()) { exporter.ExportObstacle (r.Obstacle ()); exporter.ExportObstruction (g, r); } foreach (var r in g.Resolutions ()) { exporter.ExportObstacle (r.Obstacle ()); exporter.ExportResolution (r.Obstacle (), r); } exporter.Close (); return GetImage (sw.ToString (), LayoutAlgorithm.Dot); }
public static IEncodedString GetPartialGoalDiagram(Goal g) { var view = new PartialModelView (); view.Add (g); foreach (var r in g.ParentRefinements ()) { view.Add (r); view.Add (r.ParentGoal ()); } foreach (var r in g.Refinements()) { view.Add (r); foreach (var gg in r.SubGoals ()) { view.Add (gg); } foreach (var gg in r.DomainProperties ()) { view.Add (gg); } foreach (var gg in r.DomainHypotheses ()) { view.Add (gg); } } foreach (var o in g.Obstructions ()) { view.Add (o); view.Add (o.Obstacle ()); } foreach (var a in g.AgentAssignments ()) { view.Add (a); foreach (var agent in a.Agents ()) { view.Add (agent); } } foreach (var r in g.Resolutions ()) { view.Add (r); view.Add (r.Obstacle ()); } /* foreach (var r in g.Exceptions ()) { view.Add (r); view.Add (r.Obstacle ()); view.Add (r.ResolvingGoal ()); } */ var stream1 = new MemoryStream(); var ser = new DataContractJsonSerializer(typeof(PartialModelView)); ser.WriteObject(stream1, view); stream1.Position = 0; StreamReader sr = new StreamReader(stream1); return new RawString (sr.ReadToEnd()); }