1function refreshPetriNetNodes(self)
2% REFRESHPETRINETNODES()
4for ind=1:self.getNumberOfNodes
5 node = self.getNodeByIndex(ind);
10 self.sn.nodeparam{ind}.nmodes = length(node.modeNames);
11 self.sn.nodeparam{ind}.modenames = node.modeNames;
12 self.sn.nodeparam{ind}.enabling = {};
13 self.sn.nodeparam{ind}.inhibiting = {};
14 self.sn.nodeparam{ind}.firing = {};
15 for m = 1:self.sn.nodeparam{ind}.nmodes
16 self.sn.nodeparam{ind}.enabling{m} = node.enablingConditions{m};
17 self.sn.nodeparam{ind}.inhibiting{m} = node.inhibitingConditions{m};
18 self.sn.nodeparam{ind}.firing{m} = node.firingOutcomes{m};
20 self.sn.nodeparam{ind}.nmodeservers = node.numberOfServers;
21 self.sn.nodeparam{ind}.firingprio = node.firingPriorities;
22 self.sn.nodeparam{ind}.fireweight = node.firingWeights;
23 self.sn.nodeparam{ind}.timing = node.timingStrategies;
24 for m = 1:self.sn.nodeparam{ind}.nmodes
25 if isa(node.distributions{m},
'Markovian')
26 self.sn.nodeparam{ind}.firingproc{m} = node.distributions{m}.getProcess;
27 self.sn.nodeparam{ind}.firingpie{m} = node.distributions{m}.getInitProb;
28 self.sn.nodeparam{ind}.firingphases(m) = node.distributions{m}.getNumberOfPhases;
29 elseif isa(node.distributions{m},
'ContinuousDistribution')
30 % For non-Markovian distributions, store actual parameters
31 self.sn.nodeparam{ind}.firingproc{m} = node.distributions{m}.getProcess();
32 self.sn.nodeparam{ind}.firingpie{m} = {};
33 self.sn.nodeparam{ind}.firingphases(m) = NaN;
35 % Fallback
for other distribution types
36 self.sn.nodeparam{ind}.firingproc{m} = {};
37 self.sn.nodeparam{ind}.firingpie{m} = {};
38 self.sn.nodeparam{ind}.firingphases(m) = NaN;
40 self.sn.nodeparam{ind}.firingprocid(m) = ProcessType.toId(ProcessType.fromText(
class(node.distributions{m})));