Package org.kie.api.runtime.rule

# Interface AccumulateFunction<C extends Serializable>

All Superinterfaces:
  `Externalizable`, `Serializable`

public interface AccumulateFunction<C extends Serializable> extends Externalizable
An interface for accumulate external function implementations

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `accumulate(C context, Object value)`
  Executes the accumulation action
  `default Object`
  `accumulateValue(C context, Object value)`
  Executes the accumulation action returning the accumulated object that will be passed back to the reverse method when this value will be eventually removed from acccumulation.
  `C`
  `createContext()`
  Creates and returns a new context object
  `Object`
  `getResult(C context)`
  `Class<?>`
  `getResultType()`
  `void`
  `init(C context)`
  Initializes the accumulator
  `default C`
  `initContext(C context)`
  Initializes the accumulator, possibly returning a new accumulation context instead of the original one
  `void`
  `reverse(C context, Object value)`
  Reverses the accumulation action
  `boolean`
  `supportsReverse()`
  `default boolean`
  `tryReverse(C context, Object value)`
  Reverses the accumulation action

  ### Methods inherited from interface java.io.Externalizable

  `readExternal, writeExternal`

- ## Method Details

  - ### createContext

    C createContext()
    Creates and returns a new context object
    Returns:
      new context object

  - ### init

    void init(C context) throws Exception
    Initializes the accumulator
    Parameters:
      `context` - never null
    Throws:
      `Exception`

  - ### initContext

    default C initContext(C context)
    Initializes the accumulator, possibly returning a new accumulation context instead of the original one
    Parameters:
      `context` -
    Returns:
      new context object

  - ### accumulate

    void accumulate(C context, Object value)
    Executes the accumulation action
    Parameters:
      `context` - never null
      `value` -

  - ### accumulateValue

    default Object accumulateValue(C context, Object value)
    Executes the accumulation action returning the accumulated object that will be passed back to the reverse method when this value will be eventually removed from acccumulation.
    Parameters:
      `context` -
      `value` -
    Returns:
      the accumulated object

  - ### reverse

    void reverse(C context, Object value) throws Exception
    Reverses the accumulation action
    Parameters:
      `context` - never null
      `value` -
    Throws:
      `Exception`

  - ### getResult

    Object getResult(C context) throws Exception
    Returns:
      the current value in this accumulation session
    Throws:
      `Exception`

  - ### supportsReverse

    boolean supportsReverse()
    Returns:
      true if the function supports reverse, otherwise false

  - ### getResultType

    Class<?> getResultType()
    Returns:
      the class type of the result of this function

  - ### tryReverse

    default boolean tryReverse(C context, Object value)
    Reverses the accumulation action
    Parameters:
      `context` -
      `value` -
    Returns:
      true if this accumulate function was able to remove this value, false otherwise. In this last case the engine will have to retrigger a full reaccumulation.