Red Hat Training

A Red Hat training course is available for JBoss Enterprise SOA Platform

16.19. Sending Objects to JBoss Rules Using Channels

  1. 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);
    
  2. For the above code to work, register mychannel as your channel. To do this you add a channels property section to the jboss-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.
  3. 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 have invmScope="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 the org.jboss.soa.esb.Configurable interface 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>