Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
ActivityNode.cs
1using System;
2using System.Collections.Generic;
3using System.IO;
4using System.Threading.Tasks;
5using System.Xml;
7using Waher.Script;
8
10{
15 {
16 private LinkedList<IActivityNode> activityNodes = null;
17 private int count;
18 private string id;
19
26 : base(Parent, Model)
27 {
28 }
29
33 public string Id => this.id;
34
39 public override Task FromXml(XmlElement Definition)
40 {
41 this.id = XML.Attribute(Definition, "id");
42
43 return base.FromXml(Definition);
44 }
45
49 public override Task Initialize()
50 {
51 if (this.Parent is IActivity Activity)
52 Activity.Register(this);
53 else if (this.Parent is IActivityNode ActivityNode)
55
56 return base.Initialize();
57 }
58
63 public void Register(IActivityNode Node)
64 {
65 if (this.activityNodes is null)
66 this.activityNodes = new LinkedList<IActivityNode>();
67
68 this.Model.Register(this.activityNodes.AddLast(Node));
69 this.count++;
70 }
71
75 protected LinkedListNode<IActivityNode> FirstNode => this.activityNodes?.First;
76
80 protected int Count => this.count;
81
87 public abstract Task<LinkedListNode<IActivityNode>> Execute(Variables Variables);
88
95 public virtual void ExportPlantUml(StreamWriter Output, int Indentation, char QuoteChar)
96 {
97 if (!(this.activityNodes is null))
98 {
99 foreach (IActivityNode Node in this.activityNodes)
100 Node.ExportPlantUml(Output, Indentation, QuoteChar);
101 }
102 }
103 }
104}
Root node of a simulation model
Definition: Model.cs:49
void Register(IDistribution Distribution)
Registers a distribution with the runtime environment of the model.
Definition: Model.cs:299
Represents an activity that can be executed as the result of triggered events.
Definition: Activity.cs:17
void Register(IActivityNode Node)
Registers a child activity node.
Definition: Activity.cs:97
Abstract base class for activity nodes
Definition: ActivityNode.cs:15
void Register(IActivityNode Node)
Registers a child activity node.
Definition: ActivityNode.cs:63
abstract Task< LinkedListNode< IActivityNode > > Execute(Variables Variables)
Executes a node.
virtual void ExportPlantUml(StreamWriter Output, int Indentation, char QuoteChar)
Exports PlantUML
Definition: ActivityNode.cs:95
LinkedListNode< IActivityNode > FirstNode
First child activity node.
Definition: ActivityNode.cs:75
override Task FromXml(XmlElement Definition)
Sets properties and attributes of class in accordance with XML definition.
Definition: ActivityNode.cs:39
override Task Initialize()
Initialized the node before simulation.
Definition: ActivityNode.cs:49
ActivityNode(ISimulationNode Parent, Model Model)
Abstract base class for activity nodes
Definition: ActivityNode.cs:25
Counts an instance of an event.
Definition: Count.cs:13
Abstract base class for simulation nodes with children
Helps with common XML-related tasks.
Definition: XML.cs:19
static string Attribute(XmlElement E, string Name)
Gets the value of an XML attribute.
Definition: XML.cs:914
Collection of variables.
Definition: Variables.cs:25
Basic interface for simulator nodes. Implementing this interface allows classes with default contruct...
ISimulationNode Parent
Parent node in the simulation model.
void ExportPlantUml(StreamWriter Output, int Indentation, char QuoteChar)
Exports PlantUML