Thanks for stopping by to check out SwitchYard. This article provides a brief summary of what's inside SwitchYard 0.5. If you are completely new to SwitchYard and wondering what it is, this blog post provides some good background and pointers to additional information.
There a number of options for checking out what SwitchYard has to offer. Listed in order of increasing time investment:
- Read the rest of this article. It provides an overview of the new features in 0.5.
- Check out the Getting Started and User Guide to find out more about all the features in SwitchYard.
- Download and install the SwitchYard 0.5 release.
- Take a gander at our Quickstart applications. Run them as is and see SwitchYard in action. Or change some stuff and see what blows up.
- Build an application from scratch using our super slick Eclipse and Forge tooling. Here's an easy-to-follow guide for creating your first app from Eclipse.
- Build SwitchYard from source and contribute!
You can find a summary of the new features in the 0.5 release below. For complete information on all SwitchYard features, check out the docs.
Visual Application Editor
The team has invested a huge amount of effort during 0.5 to enhance our Eclipse-based tooling centered around a visual model for your application. Here's a peak at what the new editor looks like:
There are two objectives with this new tooling:
- Provide a visual representation of a service-oriented application. Integration and SOA apps can get quite sophisticated and it's easy to lose sight of the composition of your application without a visualization. To demonstrate, we have updated the README files for our quickstarts to include a pic from the editor to help users quickly understand the composition of the application. Here's an example from the orders demo README.
- Streamline the development process by making it quick and easy to create service-oriented applications from a visual representation. Don't mistake this for a modeling tool alone. When you create the composition and wiring on the canvas, we are generating service implementations, bindings, etc. under the hood so you can kickstart your development. There are additional time savers like creating a unit test directly from a service interface, generating a WSDL from a Java-based service contract, and creating declarative data transformations using types defined in your application.
Bottom line is that this tooling rocks and it will change your life for the better. Installation is easy in JBDS or Eclipse, just follow these simple instructions. Once that's done, follow this step-by-step guide for creating your first application. If you're looking for a quick fix, here's a video that shows it in action.
We introduced a generic policy framework and support for transaction policy declarations back in 0.3. In 0.5, we have added the ability to configure security policy using the same mechanism. This allows you to specify that confidentiality and/or authentication are required on a service without specifying the details of how they are actually provided. You can express security policy in Java:
@Requires(security = SecurityPolicy.CONFIDENTIALITY) @Service(WorkService.class) public class WorkServiceBean implements WorkService
Or directly via our config model in cases like rules, BPM processes, Camel routes, etc. :
<service name="WorkService" requires="confidentiality"> <interface.java interface="org.switchyard.quickstarts.demo.policy.security.WorkService"/> </service>
Next up is PicketLink integration, which will dial security policy up to 11.
At the end of our 0.4 release, there were a number of protocol options in JBoss ESB that were not present in SwitchYard. We have shut that door in 0.5 by adding quite a few new gateways. Keep in mind that gateways are bi-directional in SwitchYard, so you can use these protocols (in addition to the existing gateways) to expose a service to remote consumers or a consume a remote service from inside your application.
- Check out the camel-ftp-binding quickstart to see this gateway in action.
Check out the camel-binding quickstart to see this gateway in action.
- Check out the camel-netty-binding quickstart to see this gateway in action.
- Check out the camel-quartz-binding quickstart to see this gateway in action.
Check out the camel-sql-binding quickstart to see this gateway in action.
JBoss WS Integration
The SOAP Gateway has been based on JAX-WS since SwitchYard 0.1, which makes it quite flexibile in terms of prospective runtime environment : standalone, embedded, JBoss AS 7, OpenShift, etc. The one drawback w/r/t AS 7 has been that our strict reliance on JAX-WS SPIs has meant that web services in SwitchYard required a distinct port from the HTTP listeners defined in AS 7 (8080, ...). We now have a hook which registers directly with JBoss WS when deployed in AS 7 so that your SY-based SOAP endpoints can run on the same port as the rest of your web services. This also means you can use the standard management and configuration support in AS 7 for those HTTP ports. Integrated *and* independent - it's the best of both worlds!
MVEL Expressions for Variable Mapping
You can now use MVEL expressions to map data into variables for the BPM or Rules components, rooted from either the SwitchYard Exchange, Context or Message objects.
- In the BPM Component, both process parameters and process results can be mapped via annotations or XML. Details can be found in the "Mapping Parameter/Result Variables" section of the BPM Services docs.
- In the Rules Component, global variables can be mapped via annotations or XML. Details can be found in the "Mapping Global Variables" section of the Rules Services docs.
The new Eclipse stuff isn't the only thing happening on the tools front. We finally managed to move our Forge plugins to 1.0.x support in Forge, which gives users the option of using a Final version of Forge tooling for SwitchYard. 1.0.2.Final is the version we test with, but I've heard from folks that 1.0.5.Final works A-OK too. Forge and Eclipse (with JBoss Tools) play incredibly well together and SwitchYard works across the spectrum. Give it a shot!