guarana.toolkit.task.routers
Class Correlator
java.lang.Object
guarana.util.observer.smart.SmartObservable
guarana.framework.task.Task
guarana.toolkit.task.routers.Router
guarana.toolkit.task.routers.Correlator
- All Implemented Interfaces:
- ISource, guarana.util.observer.smart.ISmartObserver
public abstract class Correlator
- extends Router
Looks for a set of correlated inbound messages and publish them to the output gateways.
This task can have several input gateways which allows it to be connected to several slots, but the number of
input and output gateways are always the same.
A correlator does not change the state of inbound messages, just route them to output slots!
It means the MESSAGE_ID is kept the same!
Graphical notation:
This is an Integration Pattern implementation
Problem:
Solution:
Details:
- Number of Inputs: n
- Number of Outputs: n
- Since:
- Guaranį SDK 1.0.0
- Author:
- Rafael Z. Frantz
Constructor Summary |
Correlator(String name,
int numberOfInputs,
int numberOfOutputs)
Constructs a new correlator task. |
Method Summary |
abstract void |
doWork(Exchange exchange)
This method implements the business logic of this task. |
void |
execute()
This method executes the business logic of this task. |
void |
update(guarana.util.observer.smart.SmartObservable slot,
Object arg)
This method is automatically called by the observable slot to notify the slot has received a message. |
Methods inherited from class guarana.util.observer.smart.SmartObservable |
addSmartObserver, containsSmartObserver, containsSmartObserver, countSmartObservers, deleteSmartObserver, deleteSmartObservers, hasChanged, notifySmartObservers, notifySmartObservers |
Correlator
public Correlator(String name,
int numberOfInputs,
int numberOfOutputs)
- Constructs a new correlator task.
- Parameters:
name
- The name of this correlator task.numberOfInputs
- The number of input gateways this task must have.numberOfOutputs
- The number of output gateways this task must have.
execute
public void execute()
throws TaskExecutionException
- This method executes the business logic of this task. It is automatically invoked by workers.
- Overrides:
execute
in class Task
- Throws:
TaskExecutionException
- to report any exception that has occurred during the execution of this method.- See Also:
TaskExecutionException
update
public void update(guarana.util.observer.smart.SmartObservable slot,
Object arg)
- This method is automatically called by the observable slot to notify the slot has received a message.
For all those tasks that can execute with one or more messages in its input slots, this method will add the
task to the executable task reporter, so it can be executed. In this case the task execution will consume messages
from all input slots.
Please, do not call this method by yourself.
Overrides the implementation at Task
for performance reasons.
- Specified by:
update
in interface guarana.util.observer.smart.ISmartObserver
- Overrides:
update
in class Task
- Parameters:
slot
- The Slot
associated with this task.arg
- THIS PARAMETHER IS NOT USED.
doWork
public abstract void doWork(Exchange exchange)
throws TaskExecutionException
- This method implements the business logic of this task.
Correlates a set of message.
The given exchange may not have the whole set of inbound messages for all inputs in this task.
You must check which inbound messages provided by the exchange are correlated and return ONLY those that are correlated
in the corresponding outputs of the exchange. If none of the given inbound messages in the exchange are correlated,
the exchange's outputs must be empty. Please, note that before checking the correlation you will have to discover
in which inputs this exchange has messages.
- Overrides:
doWork
in class Task
- Parameters:
exchange
- An exchange object that holds the inbound messages of this task.
- Throws:
TaskExecutionException
- to report any exception that has occurred during the execution of this method.
Guaranį DSL Home