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>