initial pattern, using three limits Expand source
#!/usr/bin/env python from ecf import * def family_limit(): return ( Family("lim1").add( Inlimit("limits:total"), Family("limits").add( Defstatus("complete"), Limits({"total": 15, "prio": 10, "other": 20})), Family("prio").add( # top submitted first Inlimit("limits:prio"), [Family("%03d" % step).add( Task("process"), Edit(STEP=step)) for step in xrange(0, 120+1, 3)]), Family("side").add( # take remaning tokens Inlimit("limits:other"), [Family("%03d" % step).add( Task("process"), Edit(STEP=step)) for step in xrange(0, 120, 3)])))
alternatives Expand source
#!/usr/bin/env python from ecf import * def family_limit(): return ( Family("lim2").add( Inlimit("limits:total"), Task("alarm").add( Trigger("limits:total gt 90")), Family("limits").add( Defstatus("complete"), Limits("total", 15)), Family("side").add( # weaker above Trigger("limits:total le 10"), [Family("%03d" % step).add( Task("process"), Edit(STEP=step)) for step in xrange(0, 120, 3)]), Family("prio").add( # favourite shall not lead weak to starve Trigger("limits:total le 15"), [Family("%03d" % step).add( Task("process"), Edit(STEP=step)) for step in xrange(0, 120, 3)])))