[Discuss] improve integration from Smooks in camel-smooks

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[Discuss] improve integration from Smooks in camel-smooks

Christian Mueller
Administrator
Hello List,

Tom Fennelly, Daniel Bevenius (both are deeply involved in the development of Smooks) and me working together to improve the existing integration between Camel and Smooks (http://www.smooks.org). We start this thread to:
- help us to understand the other framework a bit better
- discuss how a good integration should looks like
- figure out which functionality Smooks provide and which functionality Camel already provides (by other Camel components)
- vote for/prioritize features
- request features we forgot

The current camel-smooks component allows "only" unmarshaling EDI messages.

Smooks provides the following features (as I know - Tom, Daniel: please update if I forgot a feature):
- Java Binding
- Transformation
- Routing
- Validation
- Enrichment
- Splitting
- Connectivity to File, JMS, Database

Let's talk about each of these functionality in detail.

- Java Binding
Java binding means we receive an input which is not a java bean (could be CSV, EDI, XML, ..) and we return a java bean, populated with the read data. In Camel, this could be implemented as a Camel data format (or component or processor). Camel already provides java binding for:
- CSV by csv data format, bindy data format and flatpack data format
- fix length by bindy data format and flatpack data format
- XML by jaxb data format, castor data format, xstream data format and xmlBeans data format
- EDI edi data format, flatpack data format
- FIX bindy data format
- JSON json data format

Camel-smooks could provide java binding for:
- EDI (already available in camel-smooks), CSV, XML, fix length and JSON



- Transformation
Transformation means from java beans to to none java beans (XML, CSV, EDI, ...) (the data format marshaling functionality) and from none java beans representation to another none java beans representation (e.g. from CSV to XML). Camel already provides transformation for:
- XML to XML, CSV, ... by the camel xslt component
- different input formats to different output formats by combining different data formats (see before).
- java beans to XXX by the camel velocity component, the camel freemaker template component and the camel stringtemplate component

Camel-smooks could provide transformation for EDI, CSV, XML, fix length and JSON



- Routing
Camel already provides routing functionality by it's implemented enterprise integration patterns.
In my opinion, this feature is more interesting for users which are familiar with Smooks but less familiar with Camel.



- Validation
Camel already provides validation functionality for XML messages (XML schema or RelaxNG validation), Java beans (via JSR 303) and regular expressions (for String payloads and message headers).
In my opinion, this feature is more interesting for users which are familiar with Smooks but less familiar with Camel.



- Enrichment
Camel already provides enrichment functionality with a custom processor implementation or the enrich DSL.
In my opinion, this feature is more interesting for users which are familiar with Smooks but less familiar with Camel.



- Splitting
Camel already provides splitting functionality in the Java and XML DSL. It's possible to define the split token or provide a bean which splits the body in they individual pieces. Camel also provides a streaming mode for big messages and an aggregation strategy to bring the individual results together.
In my opinion, this feature is more interesting for users which are familiar with Smooks but less familiar with Camel.



- Connectivity to File, JMS, Database
Camel already provides connectivity to these protocols by camel components.
In my opinion, this feature is more interesting for users which are familiar with Smooks but less familiar with Camel.


Looking forward for your comments,
Christian
Reply | Threaded
Open this post in threaded view
|

Re: [Discuss] improve integration from Smooks in camel-smooks

Daniel Bevenius
Hi,

I just wanted to comment about the overlap in functionality here. It would be nice if users coming from a different environment could simply take their existing Smooks configurations and run them without having to "migrate" them to Camel. We can always mention in the docs that we recommend that if you are starting from scratch then the preferred way is to use the Camel features.

About the Routing feature in Smooks, this routing is done during the filtering process which enables fragments to be routed to file, jms, database, esb endpoints (We have a Camel router in development), directly without having to read through the complete data set before routing fragments . I'm new to Camel and not aware of all the features so this feature might indeed already exist.

Regards,

/Daniel
Reply | Threaded
Open this post in threaded view
|

Re: [Discuss] improve integration from Smooks in camel-smooks

Daniel Bevenius
Hi,

just wanted to mention that we have created a blog post about the Smooks-Camel integration work in case people here are interested.

Regards

/Daniel
Reply | Threaded
Open this post in threaded view
|

Re: [Discuss] improve integration from Smooks in camel-smooks

Richard Kettelerij
In reply to this post by Christian Mueller
Great initiative, It's always nice to see two projects/frameworks working together to provider better integration. The features described in the blog post look interesting, I think Smooks its support for handling large (gigabytes) messages is especially interesting for Camel users.