SwitchYard Release Overview - 0.8

Version 2

    Welcome

    Thanks for stopping by to check out SwitchYard.  This article provides a brief summary of what's inside SwitchYard 0.8.  If you are completely new to SwitchYard and wondering what it is, this blog post provides some good background and pointers to additional information.

     

    Getting Started

    There a number of options for checking out what SwitchYard has to offer.  Listed in order of increasing time investment:

    Feature Highlights

    You can find a summary of the new features in the 0.8 release below.  For complete information on all SwitchYard features, check out the docs.

     

    Softer Side of Tooling

    In an effort the team affectionately referred to as "softening", the visual elements of the SY editor have all been tweaked to be a bit more pleasant on the eyes.  Much of this was purely aesthetics, but pieces of it were functional as well.  As an example, the ability to "bend" connecting lines between services and references has been added.  Aside from looking cool, the adjustable path on the line allows more flexibility in grouping large numbers of components, services, and references in your application model.

    rules-cbr-tooling.jpg

    Behold the Button Bar

    A "button bar" has been introduced in the tooling for 0.8 which allows you to perform context-sensitive operations within the SwitchYard editor.  It's sort of like right-clicking to get a context-sensitive menu, but in this case you just hover over what you are working on in the editor (composite, service, reference, etc.) and the button bar jumps to life and gives you a list of available actions for that object.  Preliminary results suggest that this will save you six hours a week in productivity and promotes increased calm and self-esteem in 4 out of 5 developers that try it.

     

    butto-bar.jpg

    Automagic Project Capabilities

    The Project Capabilities feature of the editor allows you to specify the gateways, bindings, and test support you want to use in your application.  This can be specified in the New Project wizard or as a configurable aspect of the project post-creation.  For 0.8, we've introduced some magic so that project capabilities are automatically added when you use a given gateway or implementation type.  The ability to configure project capabilities is still there, but you won't need it for 90% of cases now.

     

     

    BPEL Tooling Integration

    The runtime has had support for deploying BPEL processes for some time now, but the BPEL toolset was not integrated with SY until this release.  You can now double-click on a BPEL implementation in your project and the SY editor will launch the BPEL visual editor directly.  The New BPEL Service workflow has also been updated to streamline artifact creation for BPEL processes and to help you get up and running faster.

     

    Application Properties

    Two flavors of properties support were added in the 0.8 release : environment properties and implementation properties.  Environment properties allow you to substitute a value for any "${property}" token in switchyard.xml.  The primary use of environment properties would be to allow the value of system properties to be injected into your configuration at runtime, but property values can be resolved from other location as well (e.g. unit test via PropertyMixIn).  Implementation properties allow you to inject configuration into a service implementation in a domain-specific way.  An example of this would be making a property definition in switchyard.xml available to the Camel properties component so that the property can be resolved inside a Camel routing service.

     

    See the Properties section of the User Guide for more information.

     

    Clustering - Part II

    Clustering has been an experimental feature in the community in the 0.6 and 0.7 releases through <binding.remote>. For 0.8, the functionality available in <binding.remote> has been moved to <binding.sca> and clustering is no longer considered experimental.  In addition to updated clustering support, the new SCA binding provides more flexibility for connecting SY applications together by allowing service names and namespaces to be rewired as part of the binding configuration.

     

    See the Clustering and SCA Binding sections of the documentation for more information.  To kick the tires with clustering, definitely check out the new clustering demo quickstart.

     

    Authorization Security Policy

    A new "authorization" security policy has been introduced which allows services to require authorization before being invoked.  In addition to confirming that an authenticated user is in a given role, the security handler also supports adding additional roles to an authorized user.

     

    The Security section of the documentation contains additional info on the configuration of this feature and the policy-security-basic quickstart has been updated to show it in action.

     

    BPMN 2 ServiceTask

    SwitchYard provides a custom task handler for invoking SwitchYard services from within a BPMN 2 process.  In 0.8, we have added support for the standard BPMN 2 Service Task as well, which means you now have two options for invoking SY services from within BPMN 2:

    • SwitchYard Service : the standard BPMN 2 Service Task with an implementation of "##SwitchYard"
    • SwitchYard Dynamic Service Task : the existing/traditional custom task handler for SwitchYard with a fancy new name!

     

    CDI Beans as Validators and Transformers

    You can now reference a CDI bean as an implementation for a transformer or validator in your application.  Prior to 0.8, Java-based transformer and validator implementations would provide a class name in their configuration and SY would instantiate this class directly.  Because of this, the transformer or validator class was not eligible for CDI injection.  With the extended CDI support in 0.8, you can now use an @Named annotation in a transformer or validator implementation and that class will have access to all the CDI bells and whistles (e.g. injection of a data source into a transformer for a code table lookup).

     

    Check out the transformer and validator documentation for more information and examples.

     

    Validator Extensions

    A couple of important improvements to the validation feature in this release.  First, you can now use multiple schema files for XML validations and XML catalogs.  Second, the error message for Java-based valdiators is now configurable - instead of a simple true/false result for validation, your validation logic can attach a detail string describing the outcome of validation.  For validation errors, this detail string as set as the body of the fault message.

     

    See the Validation documentation for more information.

     

    SSL/TLS for TCP and UDP

    Subject says it all.  Check out the documentation and the updated camel-netty-binding quickstart to see it in action.

     

    Scripting Languages

    Scripting lanugage support is now available in Camel routing services via the camel-script component.  The 0.8 runtime includes support for the following languages out of the box:

    • BeanShell
    • JavaScript
    • Groovy
    • JRuby
    • Jython

     

    For more detail, check out the Camel implementation documentation.

     

    WS Security

    The SOAP gateway now supports WS-Security for service bindings through integration with JBossWS-CXF.

     

    See the SOAP documentation for more information on configuring WS-Security.