Class LoggingTaskHandlerDecorator

  • All Implemented Interfaces:
    org.kie.api.runtime.process.WorkItemHandler

    public class LoggingTaskHandlerDecorator
    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 LoggingTaskHandlerDecorator.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.
    • Constructor Detail

      • LoggingTaskHandlerDecorator

        public LoggingTaskHandlerDecorator​(Class<? extends org.kie.api.runtime.process.WorkItemHandler> originalTaskHandlerClass,
                                           int logLimit)
        Constructs an LoggingTaskHandlerDecorator instance that wraps a created instance of the WorkItemHandler class given. This instance will only keep the given number of LoggingTaskHandlerDecorator.WorkItemExceptionInfo instances instead of the default 100.
        Parameters:
        originalTaskHandlerClass -
        logLimit -
      • LoggingTaskHandlerDecorator

        public LoggingTaskHandlerDecorator​(Class<? extends org.kie.api.runtime.process.WorkItemHandler> originalTaskHandlerClass)
        Constructs an LoggingTaskHandlerDecorator 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 -
      • LoggingTaskHandlerDecorator

        public LoggingTaskHandlerDecorator​(org.kie.api.runtime.process.WorkItemHandler originalTaskHandler)
        Constructs a LoggingTaskHandlerDecorator 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:
          {0}.{1} threw {2} when {3}ing work item {4} in process instance {5}.
        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:
          {0} thrown when work item {1} ({2}) was {3}ed in process instance {4}.
        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.
      • setLoggedExceptionInfoListSize

        public void setLoggedExceptionInfoListSize​(int loggedExceptionInfoListSize)
      • setPrintStackTrace

        public void setPrintStackTrace​(boolean printStackTrace)