# Package org.flowable.engine.delegate

package org.flowable.engine.delegate
Interfaces used to include Java code in a process as the behavior of an activity or as a listener to process events with `JavaDelegate`s.

- Related Packages
  Package
  Description
  org.flowable.engine
  Public API of the Flowable engine.
  Typical usage of the API starts by the creation of a `ProcessEngineConfiguration` (typically based on a configuration file), from which a `ProcessEngine` can be obtained.
  Through the services obtained from such a `ProcessEngine`, BPM and workflow operation can be executed:
  `RepositoryService`: Manages `Deployment`s.
  `RuntimeService`: For starting and searching `ProcessInstance`s.
  `TaskService`: Exposes operations to manage human (standalone) tasks, such as claiming, completing and assigning tasks.
  `IdentityService`: Used for managing users, groups and the relations between them.
  `ManagementService`: Exposes engine administration and maintenance operations, which have no relation to the runtime exection of business processes.
  `HistoryService`: Exposes information about ongoing and past process instances.
  `FormService`: Access to form data and rendered forms for starting new process instances and completing tasks.
  org.flowable.engine.delegate.event
  org.flowable.engine.delegate.variable
- Class
  Description
  BaseExecutionListener
  Callback interface to be notified of execution events like starting a process instance, ending an activity instance or taking a transition.
  BpmnError
  Special exception that can be used to throw a BPMN Error from `JavaDelegate`s and expressions.
  BusinessRuleTaskDelegate
  CustomPropertiesResolver
  Can be used to pass a custom properties `HashMap` to a `TransactionDependentExecutionListener` or to a `TransactionDependentTaskListener`
  DelegateExecution
  Execution used in `JavaDelegate`s and `ExecutionListener`s.
  DelegateHelper
  Class that provides helper operations for use in the `JavaDelegate`, `ActivityBehavior`, `ExecutionListener` and `TaskListener` interfaces.
  ExecutionListener
  Callback interface to be notified of execution events like starting a process instance, ending an activity instance or taking a transition.
  FlowableFutureJavaDelegate<Input,Output>
  Convenience class which always uses the `AsyncTaskInvoker` to execute the async data.
  FutureJavaDelegate<Output>
  Convenience class that should be used when a Java delegation in a BPMN 2.0 process is required (for example, to call custom business logic).
  JavaDelegate
  Convenience class that should be used when a Java delegation in a BPMN 2.0 process is required (for example, to call custom business logic).
  MapBasedFlowableFutureJavaDelegate
  A `FlowableFutureJavaDelegate` which has a `ReadOnlyDelegateExecution` as input and `Map` output data.
  ReadOnlyDelegateExecution
  TaskListener
  Here for backwards compatibility, prefer use the `TaskListener`.
  TransactionDependentExecutionListener
  TransactionDependentTaskListener
  Callback interface to be notified of transaction events.