Red Hat Training
A Red Hat training course is available for JBoss Enterprise SOA Platform
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.)
channels["mychannel"].send(myobject);
- For the above code to work, register
mychannel
as your channel. To do this you add a channels property section to thejboss-esb.xml
configuration 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:
- The
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>
Important
Make sure you haveinvmScope="GLOBAL"
defined on the target service. - Specify the custom channels by using your own
org.drools.runtime.Channel
implementation 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 theorg.jboss.soa.esb.Configurable
interface so yoursetConfiguration(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>