===============================================================
loops - Linked Objects for Organization and Processing Services
===============================================================
  ($Id$)
Note: This package depends on cybertools.knowledge and cybertools.organize.
Let's do some basic set up
  >>> from zope.app.testing.setup import placefulSetUp, placefulTearDown
  >>> site = placefulSetUp(True)
  >>> from zope import component, interface
  >>> from zope.app import zapi
and setup a simple loops site with a concept manager and some concepts
(with all the type machinery, what in real life is done via standard
ZCML setup):
  >>> from cybertools.relation.interfaces import IRelationRegistry
  >>> from cybertools.relation.registry import DummyRelationRegistry
  >>> relations = DummyRelationRegistry()
  >>> component.provideUtility(relations, IRelationRegistry)
  >>> from cybertools.typology.interfaces import IType
  >>> from loops.interfaces import IConcept, ITypeConcept
  >>> from loops.type import ConceptType, TypeConcept
  >>> component.provideAdapter(ConceptType, (IConcept,), IType)
  >>> component.provideAdapter(TypeConcept, (IConcept,), ITypeConcept)
  >>> from loops.interfaces import ILoops
  >>> from loops.setup import ISetupManager
  >>> from loops.process.setup import SetupManager
  >>> component.provideAdapter(SetupManager, (ILoops,), ISetupManager,
  ...                           name='process')
  >>> from loops.base import Loops
  >>> loopsRoot = site['loops'] = Loops()
  >>> from loops.setup import SetupManager
  >>> setup = SetupManager(loopsRoot)
  >>> concepts, resources, views = setup.setup()
We need some type concepts for controlling the meaning of the concepts objects,
these have already been created during setup:
  >>> process = concepts['process']
Manage processes
================
The classes used in this package are just adapters to IConcept.
  >>> from loops.process.definition import Process
  >>> from cybertools.process.interfaces import IProcess
  >>> component.provideAdapter(Process, (IConcept,), IProcess)
We start with creating a process definition.
Note that in order to discern the concepts created
from their typeInterface adapters we here append a 'C' to the name of
the variables:
  >>> from loops.concept import Concept
  >>> myProcessC = concepts['myProcess'] = Concept(u'A Simple Process')
  >>> myProcessC.conceptType = process
  >>> myProcess = IProcess(myProcessC)
Fin de partie
=============
  >>> placefulTearDown()