jBPM distribution 6.0.0.Beta1

org.jbpm.bpmn2.handler
Class LoggingTaskHandlerWrapper

java.lang.Object
  extended by org.jbpm.bpmn2.handler.AbstractExceptionHandlingTaskHandler
      extended by org.jbpm.bpmn2.handler.LoggingTaskHandlerWrapper
All Implemented Interfaces:
WorkItemHandler

public class LoggingTaskHandlerWrapper
extends AbstractExceptionHandlingTaskHandler

This class is a WorkItemHandler implementation that is meant to wrap other WorkItemHandler implementations.

When an exception is thrown by the wrapped WorkItemHandler instance, it's added to a list of LoggingTaskHandlerWrapper.WorkItemExceptionInfo instances that contain as much information as possible about the exception, the WorkItem that caused the exception and the ProcessInstance id of the process in which the exception was thrown.

After the exception info has been saved, this class then logs a message the appropriate information via Logger.warn(String). The message logged is configurable: see setLoggedMessageFormat(String) for more information.

This class is thread-safe, although it does not take any responsibility for the WorkItemHandler that it wraps. If you are using this with multiple threads, please make sure the the WorkItemHandler instance wrapped is also thread-safe.


Nested Class Summary
static class LoggingTaskHandlerWrapper.InputParameter
          Type of input parameter that will be used in the MessageFormat string set in setLoggedMessageFormat(String).
 class LoggingTaskHandlerWrapper.WorkItemExceptionInfo
           
 
Constructor Summary
LoggingTaskHandlerWrapper(Class<? extends WorkItemHandler> originalTaskHandlerClass)
          Constructs an LoggingTaskHandlerWrapper instance that wraps a created instance of the WorkItemHandler class given.
LoggingTaskHandlerWrapper(Class<? extends WorkItemHandler> originalTaskHandlerClass, int logLimit)
          Constructs an LoggingTaskHandlerWrapper instance that wraps a created instance of the WorkItemHandler class given.
LoggingTaskHandlerWrapper(WorkItemHandler originalTaskHandler)
          Constructs a LoggingTaskHandlerWrapper instance that wraps the given WorkItemHandler instance.
 
Method Summary
 List<LoggingTaskHandlerWrapper.WorkItemExceptionInfo> getWorkItemExceptionInfoList()
           
 void handleAbortException(Throwable cause, WorkItem workItem, WorkItemManager manager)
           
 void handleExecuteException(Throwable cause, WorkItem workItem, WorkItemManager manager)
           
 void setLoggedExceptionInfoListSize(int loggedExceptionInfoListSize)
           
 void setLoggedMessageFormat(String logMessageFormat)
          Sets the MessageFormat string to be used to format the log messages.
 void setLoggedMessageInput(List<LoggingTaskHandlerWrapper.InputParameter> inputParameterList)
          Sets the list of parameter types used for the log message format that is set in setLoggedMessageFormat(String).
 void setPrintStackTrace(boolean printStackTrace)
           
 
Methods inherited from class org.jbpm.bpmn2.handler.AbstractExceptionHandlingTaskHandler
abortWorkItem, executeWorkItem, getOriginalTaskHandler
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LoggingTaskHandlerWrapper

public LoggingTaskHandlerWrapper(Class<? extends WorkItemHandler> originalTaskHandlerClass,
                                 int logLimit)
Constructs an LoggingTaskHandlerWrapper instance that wraps a created instance of the WorkItemHandler class given. This instance will only keep the given number of LoggingTaskHandlerWrapper.WorkItemExceptionInfo instances instead of the default 100.

Parameters:
originalTaskHandlerClass -
logLimit -

LoggingTaskHandlerWrapper

public LoggingTaskHandlerWrapper(Class<? extends WorkItemHandler> originalTaskHandlerClass)
Constructs an LoggingTaskHandlerWrapper instance that wraps a created instance of the WorkItemHandler class given. Only information about the last 100 exceptions will be held in the list available from getWorkItemExceptionInfoList();

Parameters:
originalTaskHandlerClass -

LoggingTaskHandlerWrapper

public LoggingTaskHandlerWrapper(WorkItemHandler originalTaskHandler)
Constructs a LoggingTaskHandlerWrapper instance that wraps the given WorkItemHandler instance. This instance will only keep a refere

Parameters:
originalTaskHandler -
Method Detail

setLoggedMessageFormat

public void setLoggedMessageFormat(String logMessageFormat)
Sets the MessageFormat string to be used to format the log messages. If this method is used, it's a good idea to also use the setLoggedMessageInput(List) method.

The default MessageFormat string used is one of the following:

If the WorkItemHandler is a ServiceTaskHandler (that is used with <serviceTask> nodes), then the format is:
  1. The name of the interface used for the <serviceTask>
  2. The name of the operation used for the <serviceTask>
  3. The simple name of the class of the exception thrown
  4. "excut" or "abort" depending on the WorkItemHandler method called
  5. The work item id
  6. The process instance id

For all other WorkItemHandler implementations, the format is: where the parameters are the following:
  1. The (simple) class name of the exception
  2. The work item id
  3. The name of the work item
  4. "excut" or "abort" depending on the WorkItemHandler method called
  5. The process instance id

Parameters:
logMessageFormat - The format to use for logged messages.

setLoggedMessageInput

public void setLoggedMessageInput(List<LoggingTaskHandlerWrapper.InputParameter> inputParameterList)
Sets the list of parameter types used for the log message format that is set in setLoggedMessageFormat(String).

The order of the LoggingTaskHandlerWrapper.InputParameter value in the list corresponds to the MessageFormat number used in the String given to setLoggedMessageFormat(String).

See LoggingTaskHandlerWrapper.InputParameter for more information.

Parameters:
inputParameterList -

setLoggedExceptionInfoListSize

public void setLoggedExceptionInfoListSize(int loggedExceptionInfoListSize)

setPrintStackTrace

public void setPrintStackTrace(boolean printStackTrace)

getWorkItemExceptionInfoList

public List<LoggingTaskHandlerWrapper.WorkItemExceptionInfo> getWorkItemExceptionInfoList()

handleExecuteException

public void handleExecuteException(Throwable cause,
                                   WorkItem workItem,
                                   WorkItemManager manager)
Specified by:
handleExecuteException in class AbstractExceptionHandlingTaskHandler

handleAbortException

public void handleAbortException(Throwable cause,
                                 WorkItem workItem,
                                 WorkItemManager manager)
Specified by:
handleAbortException in class AbstractExceptionHandlingTaskHandler

jBPM distribution 6.0.0.Beta1

Copyright © 2001-2013 JBoss by Red Hat. All Rights Reserved.