org.apache.ode.bpel.dao
Interface CorrelatorDAO

All Known Implementing Classes:
CorrelatorDAOImpl

public interface CorrelatorDAO

Data access object representing a correlator. A correlator does not have a simple explanation: it acts as match-maker connecting messages with message consumers (i.e. BPEL pick and receive operations) across time. For each partnerLink "myRole" and operation there is one correlator.

The correlator functions as a two-sided queue: when a message is received the correlator is used to dequeue a consumer based on the keys from the message. If no consumer matches the keys in the message, the message itself is enqueued along with its keys. Conversely, when a BPEL pick/receive operation is performed, the correlator is used to dequeue a message matching a given correlation key. If no message is found, the consumer (i.e. the pick/receive operation) is enqueued along with the target key.

The end result is matching of messages to pick/receive operations, irrespective of whether the operation or the message arrives first. Make sense?


Method Summary
 void addRoute(java.lang.String routeGroupId, ProcessInstanceDAO target, int index, CorrelationKeySet correlationKeySet, java.lang.String routePolicy)
          Add a route from the given correlation key to the given process instance.
 MessageExchangeDAO dequeueMessage(CorrelationKeySet correlationKeySet)
          Dequeue a message exchange matching a correlationKey constraint.
 void enqueueMessage(MessageExchangeDAO mex, CorrelationKeySet correlationKeySet)
          Enqueue a message exchange to the queue with a set of correlation keys.
 java.util.List<MessageRouteDAO> findRoute(CorrelationKeySet correlationKeySet)
          Find a route matching the given correlation key.
 java.util.Collection<CorrelatorMessageDAO> getAllMessages()
           
 java.util.Collection<MessageRouteDAO> getAllRoutes()
           
 java.lang.String getCorrelatorId()
          Get the correlator identifier.
 void removeRoutes(java.lang.String routeGroupId, ProcessInstanceDAO target)
          Remove all routes with the given route-group identifier.
 void setCorrelatorId(java.lang.String newId)
           
 

Method Detail

getCorrelatorId

java.lang.String getCorrelatorId()
Get the correlator identifier.

Returns:
correlator identifier

setCorrelatorId

void setCorrelatorId(java.lang.String newId)

enqueueMessage

void enqueueMessage(MessageExchangeDAO mex,
                    CorrelationKeySet correlationKeySet)
Enqueue a message exchange to the queue with a set of correlation keys.

Parameters:
mex - message exchange
correlationKeys - pre-computed set of correlation keys for this message

dequeueMessage

MessageExchangeDAO dequeueMessage(CorrelationKeySet correlationKeySet)
Dequeue a message exchange matching a correlationKey constraint.

Parameters:
correlationKey - correlation correlationKey constraint
Returns:
opaque message-related data previously enqueued with the given correlation correlationKey

getAllMessages

java.util.Collection<CorrelatorMessageDAO> getAllMessages()
Returns:
all messages waiting on this correlator, use with care as it can potentially return a lot of values

findRoute

java.util.List<MessageRouteDAO> findRoute(CorrelationKeySet correlationKeySet)
Find a route matching the given correlation key.

Parameters:
correlationKey - correlation key
Returns:
route matching the given correlation key

addRoute

void addRoute(java.lang.String routeGroupId,
              ProcessInstanceDAO target,
              int index,
              CorrelationKeySet correlationKeySet,
              java.lang.String routePolicy)
Add a route from the given correlation key to the given process instance.

Parameters:
routeGroupId - identifier of the group of routes to which this route belongs
target - target process instance
index - relative order in which the route should be considered
correlationKey - correlation key to match

removeRoutes

void removeRoutes(java.lang.String routeGroupId,
                  ProcessInstanceDAO target)
Remove all routes with the given route-group identifier.

Parameters:
routeGroupId -

getAllRoutes

java.util.Collection<MessageRouteDAO> getAllRoutes()
Returns:
all routes registered on this correlator, use with care as it can potentially return a lot of values