Camel Dynamic Routes
Student: Xueqiang Mi <alloyer AT gmail DOT com>
Mentor: Jonathan Anstey <janstey AT apache DOT org>
Project Description
We can already modify XML at runtime; we could do with visualizations using Scala, Ruby, Groovy, Python so that folks can view & edit the routes in whatever language they want and hack them. For more see the Web Console which supports updating the routes at runtime using the XML structure.
To do this we'll need to be able to turn a RouteDefinition back into the DSLs - such as Groovy/Ruby/Scala/Python
Status
Week of May 11 - May 17, 2009
- Try most of the test cases of camel-core
Weeks of May 23 - June 7, 2009
- Learn the camel-web component and the RESTful WS tool: Jersey................finished
- Do a rough prototype which supports Groovy expression.............................finished
- A prototype is implemented and support creating routes by using Groovy language. We can use the face as follows to create a route on Camel.
- http://docs.google.com/View?id=df6drqqg_1391f4s9wmhf
- Now the Camel-web module depends on Camel-groovy module.
- Submit the late design document, expected previously................................finished
Week of June 8 - June 14, 2009
- Improve Groovy Route Editor
- Do Ruby route editing support.......................................................finished
- The editor form now support creating routes by using Ruby language. We can use the face as follows to create a route on Camel.
- http://docs.google.com/View?id=df6drqqg_1393gczgfzgp
- Now the Camel-web module depends on Camel-ruby module.
- Do some modification on Xml Route editor if needed...................................canceled
- Do the Groovy style view of route.(Now the editor can only support creating operation, but has no idea how to display a route in GroovyRouteBuilder style).........canceled
- Commit a camel-web-20090611 patch, which contains the Groovy and Ruby route editing support......finished
Week of June 15 - June 21, 2009
- http://issues.apache.org/activemq/browse/CAMEL-1389
- http://issues.apache.org/activemq/browse/CAMEL-1392
Week of June 22 - June 27, 2009
- http://issues.apache.org/activemq/browse/CAMEL-1392. It's a little complex to translate the RouteDefinition into GroovyRouteBuilder, so in this week I still work at it.
- http://docs.google.com/View?id=df6drqqg_1396cnhrwzmf
- http://docs.google.com/View?id=df6drqqg_1398w9jt74hf
- Now the groovyRenderer can support most of the EIP route definitions. It can generate a overview of the route definition, but can't support Expression. Current XML editor also has this problem, it just replace the expression definition with a <expressionDefinition/> element.
- I want to solve it through digging into the ExpressionNode and ExpressionDefinition level, but after a lot of work and test, I found it so difficult because in ExpressionDefinnition, some Groovy closures are embedded in and hard to restore to the original states. I will post some of my experiments on mailing list for discusses.
Week of June 28 - July 6, 2009
- Improve the groovyRenderer.
- Do plenty of test (test cases of org.apache.camel.processor in camel-core).
- http://docs.google.com/View?id=df6drqqg_1400hgqpt3cg test records: lines not with a prefixion "#" have been supported.
Week of July 7 - July 13, 2009
- Add test cases for groovy renderer.
- https://issues.apache.org/activemq/browse/CAMEL-1804. A user guide for groovy renderer to show how to use, what DSL features are supported, and any know holes.
Week of July 14 - July 19, 2009
- Write the user guide of groovy renderer.
- Improve the code of groovy renderer, to reduce some hard code in it, especially for the Expression Definition processing.
- https://issues.apache.org/activemq/browse/CAMEL-1839
Week of July 20 - July 24, 2009
- Continue to add some DSL test cases.
- Add DSLs' related content into the user guide.
Week of July 25 - Aug 1, 2009
- Go on a vacation.
Week of Aug 3 - Aug 9, 2009
- Add AOP, OnCompletion, OnException and ReSequence DSL support.............finished
- Add interceptFrom, interceptSendToEndpoint DSL support....................finished
- Implement renderRoutes method for groovy renderer.........................finished
- List the supported DSL parameters in Groovy Renderer User Guide
Week of Aug 10 - Aug 16, 2009
- Add some DSL support
- Review and improve all the DSL
- Improve predicateRenderer to support all the predicate DSL
- Complete Groovy Renderer User Guide
- Do a camel-web example to show how to change business flows by using runtime route modification
Week of Aug 17 - Aug 24, 2009
- Add several samples to show off the functionalities of groovy renderer
- Content Based Routing on Camel shows how to define you processor and invoke it through Web Console. It also shows how to define Content Based Router on Web Console.
- Load Balance for Existing Messaging Service gives a sample at first and adds Load Balancer for it.
- Clean up the related document for final evaluation
- Add several screen shots for Groovy Renderer User Guide to present how to edit a route on Web Console.
- Submit all the deliverables before Aug 19