Uploaded image for project: 'JBoss ESB'
  1. JBoss ESB
  2. JBESB-2831

Add Exit Point support to BusinessRulesProcessor

    Details

    • Type: Feature Request
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: None
    • Fix Version/s: 4.9
    • Component/s: None
    • Labels:
      None

      Description

      ExitPoint support should be provided with BusinessRulesProcess. This would allow one or more ExitPoints to be declared in the ESB service configuration. Basically exit point support would take the object inserted into the exit point from the rule, create a new ESBMessage, copy the object into the ESB Message based on the exit point configuration, and send the ESB message to a configured "destination" (similar to a router configuration).

      This would require configuration such as

      <action class="org.jboss.soa.esb.actions.BusinessRulesProcessor" name="OrderCountHistory">
      <property name="ruleSet" value="OrderCount.drl"/>
      <property name="ruleReload" value="true"/>
      <property name="stateful" value="true"/>
      <property name="object-paths">
      <object-path entry-point="OrderEntryPoint" esb="body.TheOrderHeader"/>
      </property>
      <property name="exitPoint value="OrderExitPoint"
      <route-to destination-name="x" service-category="y" service-name="z"/>
      <need to either use set-payload-location or object mapper to map location of added data in new message>
      </property>
      </action>

      The configuration of multiple exit points should be allowed.

      A class would then need to be added that implemented the ExitPointInterface and was instantiated and configured from the BusinessRulesProcessor such as:

      public class RulesExitPointServiceInvoker implements ExitPoint
      {
      // constructor with configuration details
      // service category, service name, and object mapping or set-payload-location details

      // required method
      public void insert(Object object) {
      try

      { ServiceInvoker invoker = new ServiceInvoker(service-category, service-name); Message requestMessage; requestMessage = MessageFactory.getInstance().getMessage(MessageType.JBOSS_XML); // add payload stuff /object mapping requestMessage.getBody().add(object); invoker.deliverAsync(requestMessage); }

      catch (MessageDeliverException mde)

      { System.out.println("Eating this Exception: " + mde); }

      }

      }

      where the BRP code looked like:

      RulesExitPointServiceInvokerr exit = new RulesExitPointServiceInvoker();
      KnowledgeRuntime kruntime = (KnowledgeRuntime) ksession.getEnvironment();
      kruntime.registerExitPoint("exit-point", exit);

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  dward David Ward
                  Reporter:
                  jeffdelong Jeff DeLong
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  0 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: