=============================== Rule-based Execution of Actions =============================== ($Id$) >>> from zope import component >>> from cybertools.composer.rule.base import RuleManager, Rule, Action >>> from cybertools.composer.rule.base import EventType, Event >>> from cybertools.composer.rule.instance import RuleInstance >>> from cybertools.composer.rule.interfaces import IRuleInstance >>> component.provideAdapter(RuleInstance, provides=IRuleInstance) >>> from cybertools.composer.rule.base import ActionHandler >>> component.provideAdapter(ActionHandler, name='message') >>> component.provideAdapter(ActionHandler, name='sendmail') >>> manager = RuleManager() >>> loginEvent = EventType('login') >>> checkoutEvent = EventType('service.checkout') >>> checkoutRule = Rule('regcheckoutmail', manager=manager) >>> checkoutRule.events.append(checkoutEvent) >>> checkoutRule.actions.append(Action('message', ... parameters = dict(messageName='confirmation_mail'))) >>> checkoutRule.actions.append(Action('sendmail')) >>> manager.addRule(checkoutRule) >>> manager.handleEvent(Event(loginEvent)) [] >>> from cybertools.composer.schema.client import Client >>> client = Client() >>> manager.handleEvent(Event(checkoutEvent, client)) [{'request': None}]