View Source

Works related to EasyVIPER aim at facing dynamicity and adaptation issues for workflows. They consist in using CBSE and SCA concepts. Indeed, EasyVIPER is implemented thanks to [Frascati|http://frascati.ow2.org/], an implementation of SCA, based on [Fractal|http://fractal.ow2.org/], which is an implementation of CBSE.


{center}
!EasyVIPERWorkflowEngineWithProcess.png|border=1,width=800!
SCA Representation of a workflow inside EasyVIPER.
{center}


For example, the Intent concept coming from SCA standard allows to add non functional operations like debugging, persistence or monitoring, upon a running workflow.
Moreover, the component-based mechanism allows to introspect into executing workflows and to modify at runtime some of their components. Low-level bricks operations used in order to perform such reconfigurations are linker operations:
* linkBrotherNodes(node1, node2)
* linkChildNode(parentNode, childNode)

Indeed a node provides a reference to its following node (brother) and to a list of children. The following figures explain these mechanisms adding.

{center}
!linkBrotherNodes.png|border=1!
Two nodes linked as brothers.
!linkChildNode.png|border=1!
Child linking.
{center}

There are also creation pattern operations:
* createSequence(name, listOfNodes, parentScope)
* createScope(name, parentScope)
* createIf(name, listOfConditions, listOfNodes, parentScope)
* createSeveralReceivers(name, listOfReceiverBehaviors, listOfNodes, parentScope)
* createLoopPattern(name, condition, isConditionAppliedAtBegining, listOfNodes, parentScope)
* createForkPattern(name, listOfNodes, parentScope)

and reorganization pattern operations:
* convertForkToSequence(forkNode, parentScope)






These two concepts led to a basis framework able to manage versatile workflows. This framework is composed of 3 services that are pluggable onto EasyVIPER. They are listed in [this page|easyviper:Extended modules].