def decisions_from_rule(rule): try: decisions = rule(self, event, process) if decisions: return ensure_iter(decisions) else: return None except RuleDoesNotApplyException: return None
def decide(self, process): handler = lambda ev: filter(bool, ensure_iter(self.handle_event(ev, process))) decisions = map(handler, process.unseen_events()) # list of lists of decisions return unique(flatten(decisions))