Testing uniqueness
The events:
event OrderKey{...}
event NewOrder {
OrderKey key; //You can use anything for key as long as it is unique
...
}
event ValidNewOrder {
NewOrder order;
}
The monitors:
monitor OrderFilter {
dictionary < OrderKey, NewOrder > orders;
action onload() {
NewOrder order;
on all NewOrder():order validateOrder(order);
}
action validateOrder(NewOrder order){
if orders.hasKey(order.key) then{
print "Duplicate order!"
print "Original: " + orders[order.key].ToString();
print "Incoming: " + order.ToString();
}
else {
orders.add(order.key,order);
route validNewOrder(order);
}
}
}
monitor OrderProcessor {
...
action onload() {
ValidNewOrder valid;
on all ValidNewOrder():valid spawn processOrder(valid.order);
}
action processOrder( NewOrder order ) {
...
}
}
Copyright © 2013
Software AG, Darmstadt, Germany and/or Software AG USA Inc., Reston, VA, USA, and/or Terracotta Inc., San Francisco, CA, USA, and/or Software AG (Canada) Inc., Cambridge, Ontario, Canada, and/or, Software AG (UK) Ltd., Derby, United Kingdom, and/or Software A.G. (Israel) Ltd., Or-Yehuda, Israel and/or their licensors.