org.jboss.soa.esb.actions
Class ContentBasedWiretap

java.lang.Object
  extended by org.jboss.soa.esb.actions.AbstractActionLifecycle
      extended by org.jboss.soa.esb.actions.AbstractActionPipelineProcessor
          extended by org.jboss.soa.esb.actions.ContentBasedWiretap
All Implemented Interfaces:
ActionLifecycle, ActionPipelineProcessor
Direct Known Subclasses:
ContentBasedRouter

public class ContentBasedWiretap
extends AbstractActionPipelineProcessor

ContentBasedWirtap implements the WireTap pattern. The WireTap is an Enterprise Integration Pattern (EIP) where a copy of the message is sent to a control channel.
The CBR­WT is identical in functionality to the ContentBasedRouter, however it does not terminate the pipeline which makes it suitable to be used as a WireTap.

Configuration Example:

<action class="org.jboss.soa.esb.actions.ContentBasedRouter" name="OrderDiscountBasedOnCustomerHistory">
    <property name="ruleSet" value="OrderDiscountOnMultipleOrders.drl" />
    <property name="ruleReload" value="false" />
    <property name="stateful" value="true" />
    <property name="object-paths">
        <object-path esb="body.TheOrderHeader" />
        <object-path esb="body.TheCustomer" />
    </property>
    <property name="destinations">
        <route-to destination-name="blue"  service-category="BlueTeam"  service-name="GoBlue" />
        <route-to destination-name="red"   service-category="RedTeam"   service-name="GoRed" />
        <route-to destination-name="green" service-category="GreenTeam" service-name="GoGreen" />
    </property>
</action>

 
Property description:
  • class action class, one of : org.jboss.soa.esb.actions.ContentBasedRouter, org.jboss.soa.esb.actions.ContentBasedWireTap,
    or org.jboss.soa.esb.actions.MessageFilter
  • ruleSet Name of the filename containing the Drools ruleSet.
  • ruleLanguage Optional reference to a file containing the definition of a Domain Specific Language to be used for evaluating the rule set.
  • ruleReload Optional property which can be to true to enable 'hot' redeployment of rule sets.
  • stateful Optional property which tells the RuleService to use a stateful session where facts will be remembered between invokations.
  • object-paths Optional property to pass Message objects into Rule Services WorkingMemory.
  • destinations A set of route-­to properties each containing the logical name of the destination along with the Service category and name as referenced in the registry.
    The logical name is the name which should be used in the rule set.

    Author:
    schifest@heuristica.com.ar, kstam@jboss.com, kevin.conner@jboss.com, Daniel Bevenius

    Field Summary
    protected  ContentBasedRouter _cbr
               
    protected  java.lang.String _cbrClass
               
    protected  ConfigTree _config
               
    protected  java.util.Map<java.lang.String,Service> _destinations
               
    protected static org.apache.log4j.Logger _logger
               
    protected  ObjectMapper _mapper
               
    protected  java.util.List<java.lang.String> _messagePathList
               
    protected  Registry _registry
               
    protected  java.lang.String _ruleLanguage
               
    protected  boolean _ruleReload
               
    protected  java.lang.String _ruleSet
               
    static java.lang.String DEFAULT_CBR_CLASS
               
    static java.lang.String ENTRY_POINT
               
    protected  java.util.Map<java.lang.String,java.util.List<java.lang.String>> entryPointMap
               
    protected  MessageMulticaster messageMulticaster
               
    static java.lang.String OBJECT_PATH
               
    static java.lang.String OBJECT_PATH_TAG
               
    static java.lang.String ROUTE_TO_TAG
               
     
    Fields inherited from interface org.jboss.soa.esb.actions.ActionPipelineProcessor
    PROCESS_EXCEPTION_METHOD, PROCESS_METHOD, PROCESS_SUCCESS_METHOD
     
    Constructor Summary
    ContentBasedWiretap(ConfigTree config)
               
     
    Method Summary
    protected  void checkMyParms()
              Reading the piece of configTree specific to the CBR, and setting the configuration.
    protected  java.util.List<Service> executeRules(Message message)
               
     void initialise()
              Initialise the action instance.
     Message process(Message message)
              Router the message to one or more destinations, using the ContentBasedRouter to figure out to which destinations it is going to be routed too.
    protected  void routeMessage(Message message, java.util.List<Service> outgoingDestinations)
               
     
    Methods inherited from class org.jboss.soa.esb.actions.AbstractActionPipelineProcessor
    processException, processSuccess
     
    Methods inherited from class org.jboss.soa.esb.actions.AbstractActionLifecycle
    destroy
     
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
     
    Methods inherited from interface org.jboss.soa.esb.actions.ActionLifecycle
    destroy
     

    Field Detail

    ROUTE_TO_TAG

    public static final java.lang.String ROUTE_TO_TAG
    See Also:
    Constant Field Values

    OBJECT_PATH_TAG

    public static final java.lang.String OBJECT_PATH_TAG
    See Also:
    Constant Field Values

    OBJECT_PATH

    public static final java.lang.String OBJECT_PATH
    See Also:
    Constant Field Values

    ENTRY_POINT

    public static final java.lang.String ENTRY_POINT
    See Also:
    Constant Field Values

    DEFAULT_CBR_CLASS

    public static final java.lang.String DEFAULT_CBR_CLASS
    See Also:
    Constant Field Values

    _config

    protected ConfigTree _config

    _destinations

    protected java.util.Map<java.lang.String,Service> _destinations

    messageMulticaster

    protected MessageMulticaster messageMulticaster

    _cbrClass

    protected java.lang.String _cbrClass

    _ruleSet

    protected java.lang.String _ruleSet

    _ruleLanguage

    protected java.lang.String _ruleLanguage

    _ruleReload

    protected boolean _ruleReload

    _messagePathList

    protected java.util.List<java.lang.String> _messagePathList

    entryPointMap

    protected java.util.Map<java.lang.String,java.util.List<java.lang.String>> entryPointMap

    _mapper

    protected ObjectMapper _mapper

    _registry

    protected Registry _registry

    _cbr

    protected ContentBasedRouter _cbr

    _logger

    protected static org.apache.log4j.Logger _logger
    Constructor Detail

    ContentBasedWiretap

    public ContentBasedWiretap(ConfigTree config)
                        throws ConfigurationException,
                               RegistryException,
                               MessageRouterException
    Throws:
    ConfigurationException
    RegistryException
    MessageRouterException
    Method Detail

    initialise

    public void initialise()
    Description copied from class: AbstractActionLifecycle
    Initialise the action instance.

    This method is called after the action instance has been instantiated so that configuration options can be validated.

    Specified by:
    initialise in interface ActionLifecycle
    Overrides:
    initialise in class AbstractActionLifecycle

    process

    public Message process(Message message)
                    throws ActionProcessingException
    Router the message to one or more destinations, using the ContentBasedRouter to figure out to which destinations it is going to be routed too.

    Parameters:
    message -
    Returns:
    Message
    Throws:
    ActionProcessingException

    executeRules

    protected java.util.List<Service> executeRules(Message message)
                                            throws MessageRouterException
    Throws:
    MessageRouterException

    routeMessage

    protected final void routeMessage(Message message,
                                      java.util.List<Service> outgoingDestinations)
                               throws MessageRouterException
    Throws:
    MessageRouterException

    checkMyParms

    protected void checkMyParms()
                         throws ConfigurationException
    Reading the piece of configTree specific to the CBR, and setting the configuration.

    Throws:
    ConfigurationException