Message Flow |
Activities hold state |
The message Exchange hold state |
This can be a doozy for developers initially - I know it was for me. In Businessworks, your activities are isolated and stateful. n Camel, the various components pass around a message exchange, which is a stateful object that tracks changes made to it. Everything your code does happens to this one object. It is imperative that a developer become accustomed to thinking from the perspective of this exchange object.
To contrast the two approaches, consider what happens when I make a web-service call from both technologies.
- In BW, whatever I do leading up to the web-service call is persisted in the activity (e.g. a Mapper doesn't suddenly lose its mappings just because I made a web-service call)
- In Camel, if I don't save my previous work and make the web-service call, all that work is lost.
|
Build |
buildear.exe |
Apache Maven |
Unlike BW, Apache Camel projects are built using Maven. This part took a little getting used to for me since buildear.exe did everything explicitly, while Maven seemed to automagically know how to compile my code. If you are not familiar with Maven, I would strongly suggest familiarizing yourself with it before proceeding further.
N.B: While it might be possible to intergrate BW with Maven, it isn't an officially supported configuration. |
Managing Imports |
Projlibs |
Apache Maven |
Again, the biggest challenge for me here was acclimating myself with how Maven seemingly resolved my dependencies auto-magically, rather than explicity (i.e. full path) as was the case with BW projlib files. |
Coding |
Tibco Designer |
Any Java-friendly IDE |
Take your pick: JBDS, Eclipse, IntelliJ,... Although BW 6.x has finally shifted to Eclipse, the majority of enterprise BW developers are versed in BW 5.x which only offers Tibco's own Designer tool.
Be sure to also brush up on your fundamentals of Java and OOP. This is one of those areas that BusinessWorks lets you conveniently forget about since so much is done for you. |
Enterprise Integration Patterns (EIP) |
No concept of EIPs |
EIPs are a language construct |
Camel was built on a foundation of EIPs. Anyone embarking on learning it should make an effort to understand what EIPs are. |
Language |
Proprietary XML (code behind) |
Many |
Camel applications can be written in any number of actual programming languages, with arguably the most popular being Java and XML. |
Development Style |
Visual: Drag n' Drop |
Text (can be Drag n' Drop) |
Developing in Camel is still primarily textual - no more palettes or activities. While Eclipse and JBDS offer a graphical IDE for Camel development, you'll want to switch to text as soon as your applications start growing. |
Dependency Injection |
N/A |
Useful for XML |
Dependency Injection or Inversion of Control is an interesting development paradigm that took me a while to learn. If you choose to use the XML approach for writing Camel, it is worth understanding IoC.
Again, this was one of those areas where I felt staying with BusinessWorks for as long as I had put me at a disadvantage - because not Tibco technology used IoC, I never needed to learn it. |
Deployment |
EAR on Tibco Administrator |
Many Options |
You are no longer bound to bwengine.exe and Tibco Administrator. Camel applications can be deployed as standalone instances, on ESBs such as JBoss Fuse, and application servers like Jboss EAP. How you deploy will depend a great deal on the platform you're developing for. |
Getting Things Done |
Generally one "right way" |
Multiple approaches |
This was an epiphany for me personally and a theme throughout Camel: There are a myriad of ways to achieve your goal, and, more often than not there is no one over-arching correct answer. Get comfortable with this fact, and select the approach(es) that resonates with you for solving the problem at hand. |