Please disable Adblockers and enable JavaScript for domain CEWebS.cs.univie.ac.at! We have NO ADS, but they may interfere with some of our course material.
Name: examples/p34/rules.xml
1: | <rules xmlns="http://riddl.org/ns/common-patterns/properties/1.0"> |
2: | <rule> |
3: | <event name="activity_syncing_before"/> |
4: | <action> |
5: | context.wait.buf << [event.instance, event.activity, event.callback] |
6: | </action> |
7: | </rule> |
8: | <rule> |
9: | <context name="wait" condition="buf.length >= 3"/> |
10: | <context name="sync" condition="run.empty?"/> |
11: | <action> |
12: | context.sync.run = context.wait.buf.slice!(0..2) |
13: | context.sync.run.each do |instance,activity,callback| |
14: | continue :instance => instance, :activity => activity, :callback => callback |
15: | end |
16: | </action> |
17: | </rule> |
18: | <rule> |
19: | <event name="activity_syncing_after"/> |
20: | <action> |
21: | context.sync.fin << [event.instance, event.activity, event.callback] |
22: | </action> |
23: | </rule> |
24: | |
25: | <rule> |
26: | <context name="sync" condition="fin.length == 2"/> |
27: | <action> |
28: | context.sync.fin.each do |instance,activity,callback| |
29: | puts "continue ist 2" |
30: | continue :instance => instance, :activity => activity, :callback => callback |
31: | end |
32: | </action> |
33: | </rule> |
34: | <rule> |
35: | <context name="sync" condition="fin.length > 2"/> |
36: | <action> |
37: | puts "continue after 2" |
38: | instance,activity,callback = context.sync.fin.last |
39: | continue :instance => instance, :activity => activity, :callback => callback |
40: | </action> |
41: | </rule> |
42: | <rule> |
43: | <context name="sync" condition="fin.length == run.length"/> |
44: | <action> |
45: | context.sync.fin.clear |
46: | context.sync.run.clear |
47: | </action> |
48: | </rule> |
49: | </rules> |