| pattern ConnectedSegments |
| sensor : Sensor |
| |
| in: Sensor.all.select(s|s.monitors.select(s:Segment|true).size() > 5), |
| |
| segment1 : Segment from: sensor.monitors, |
| segment2 : Segment from: segment1.connectsTo.select(s|s.monitoredBy.includes(sensor)), |
| segment3 : Segment from: segment2.connectsTo.select(s|s.monitoredBy.includes(sensor)), |
| segment4 : Segment from: segment3.connectsTo.select(s|s.monitoredBy.includes(sensor)), |
| segment5 : Segment from: segment4.connectsTo.select(s|s.monitoredBy.includes(sensor)), |
| segment6 : Segment from: segment5.connectsTo.select(s|s.monitoredBy.includes(sensor)) { |
| |
| do { |
| Sequence { |
| sensor, |
| segment1, segment2, segment3, |
| segment4, segment5, segment6 |
| }.println('ConnectedSegments: '); |
| } |
| |
| } |
| |
| pattern PosLength |
| segment : Segment in: Segment.all.select(s|s.length <= 0) { |
| |
| do { |
| segment.println('PosLength: '); |
| } |
| } |
| |
| pattern RouteSensor |
| route: Route, |
| swP: SwitchPosition from: route.follows, |
| sw: Switch from: swP.target, |
| sensor: Sensor from: sw.monitoredBy.select(s|route.gathers.excludes(s)) |
| { |
| do { |
| Sequence { |
| route, swP, sw, sensor |
| }.println('RouteSensor: '); |
| } |
| } |
| |
| pattern SwitchMonitored |
| sw : Switch from: Switch.all.select(sw|sw.monitoredBy.size = 0) { |
| |
| do { |
| sw.println('SwitchMonitored: '); |
| } |
| } |
| |
| pattern SwitchSet |
| route: Route, |
| semaphore: Semaphore from: route.entry.select(e | e.isDefined() and e.signal = 'GO'), |
| swP: SwitchPosition from: route.follows, |
| sw: Switch from: swP.target.select(t | t.currentPosition <> swP.position) |
| { |
| do { |
| Sequence { |
| route, semaphore, swP, sw |
| }.println('SwitchSet: '); |
| } |
| } |