cybertools/cybertools/composer/rule
2024-09-23 11:00:35 +02:00
..
__init__.py cybertools.text: OK on py3 2023-11-27 18:49:05 +01:00
base.py work in progress: organize: Python3 fixes 2024-09-22 18:10:02 +02:00
configure.zcml cybertools.text: OK on py3 2023-11-27 18:49:05 +01:00
instance.py work in progress: organize: Python3 fixes 2024-09-22 18:10:02 +02:00
interfaces.py cybertools.text: OK on py3 2023-11-27 18:49:05 +01:00
mail.py organize: Python3 fixes 2024-09-23 11:00:35 +02:00
message.py organize: Python3 fixes 2024-09-23 11:00:35 +02:00
README.txt cybertools.text: OK on py3 2023-11-27 18:49:05 +01:00
tests.py organize: Python3 fixes 2024-09-23 11:00:35 +02:00
web.py work in progress: organize: Python3 fixes 2024-09-22 18:10:02 +02:00

===============================
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}]