16.19. Sending Objects to JBoss Rules Using Channels
- To send an object to a JBoss Rules engine channel, use this DRL syntax. (It goes on the right-hand side of the rule definition.)
- For the above code to work, register
mychannelas your channel. To do this you add a channels property section to the
jboss-esb.xmlconfiguration file.Define as many channels as you want. For each particular channel name, the channels will be executed in the same order as they appear in the configuration file.
- The following channels are supported:
ServiceChannel(default). Specify the channel-name, service-category and service-name as attributes of the send-to element.There are also optional attributes, including async, timeout and set-payload-location (where the object sent to that channel will be placed in a new ESB message).This code shows you how to set an attribute:
<property name="channels"> <send-to channel-name="mychannel" service-category="cat1" service-name="svc1" /> </property>
ImportantMake sure you have
invmScope="GLOBAL"defined on the target service.
- Specify the custom channels by using your own
org.drools.runtime.Channelimplementation class. The send-to attribute for this is channel-class. Your implementation requires a public no-arg constructor.If you want your implementation to be configurable, implement the
org.jboss.soa.esb.Configurableinterface so your
setConfiguration(ConfigTree()method will be called. This allows it to pass the attributes and sub- property elements to your custom channel.This code sample shows how to configure a custom channel:
<property name="channels"> <send-to channel-name="mychannel" channel-class="com.example.MyChannel" /> </property>