# Uses of Interface
org.flowable.engine.runtime.ProcessInstance

Packages that use ProcessInstance
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.compatibility
org.flowable.engine.interceptor
org.flowable.engine.migration
org.flowable.engine.runtime
Classes related to the `RuntimeService`.

- ## Uses of ProcessInstance in org.flowable.engine

  Methods in org.flowable.engine that return ProcessInstance
  Modifier and Type
  Method
  Description
  `ProcessInstance`
  RuntimeService.`startProcessInstanceById(String processDefinitionId)`
  Starts a new process instance in the exactly specified version of the process definition with the given id.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceById(String processDefinitionId, String businessKey)`
  Starts a new process instance in the exactly specified version of the process definition with the given id.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceById(String processDefinitionId, String businessKey, Map<String,Object> variables)`
  Starts a new process instance in the exactly specified version of the process definition with the given id.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceById(String processDefinitionId, Map<String,Object> variables)`
  Starts a new process instance in the exactly specified version of the process definition with the given id.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByKey(String processDefinitionKey)`
  Starts a new process instance in the latest version of the process definition with the given key.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByKey(String processDefinitionKey, String businessKey)`
  Starts a new process instance in the latest version of the process definition with the given key.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByKey(String processDefinitionKey, String businessKey, Map<String,Object> variables)`
  Starts a new process instance in the latest version of the process definition with the given key.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByKey(String processDefinitionKey, Map<String,Object> variables)`
  Starts a new process instance in the latest version of the process definition with the given key
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByKeyAndTenantId(String processDefinitionKey, String tenantId)`
  Similar to `RuntimeService.startProcessInstanceByKey(String)`, but using a specific tenant identifier.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByKeyAndTenantId(String processDefinitionKey, String businessKey, String tenantId)`
  Similar to `RuntimeService.startProcessInstanceByKey(String, String)`, but using a specific tenant identifier.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByKeyAndTenantId(String processDefinitionKey, String businessKey, Map<String,Object> variables, String tenantId)`
  Similar to `RuntimeService.startProcessInstanceByKey(String, String, Map)`, but using a specific tenant identifier.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByKeyAndTenantId(String processDefinitionKey, Map<String,Object> variables, String tenantId)`
  Similar to `RuntimeService.startProcessInstanceByKey(String, Map)`, but using a specific tenant identifier.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByMessage(String messageName)`
  Signals the process engine that a message is received and starts a new `ProcessInstance`.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByMessage(String messageName, String businessKey)`
  Signals the process engine that a message is received and starts a new `ProcessInstance`.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByMessage(String messageName, String businessKey, Map<String,Object> processVariables)`
  Signals the process engine that a message is received and starts a new `ProcessInstance`.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByMessage(String messageName, Map<String,Object> processVariables)`
  Signals the process engine that a message is received and starts a new `ProcessInstance`.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByMessageAndTenantId(String messageName, String tenantId)`
  Similar to `RuntimeService.startProcessInstanceByMessage(String)`, but with tenant context.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByMessageAndTenantId(String messageName, String businessKey, String tenantId)`
  Similar to `RuntimeService.startProcessInstanceByMessage(String, String)`, but with tenant context.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByMessageAndTenantId(String messageName, String businessKey, Map<String,Object> processVariables, String tenantId)`
  Similar to `RuntimeService.startProcessInstanceByMessage(String, String, Map)`, but with tenant context.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceByMessageAndTenantId(String messageName, Map<String,Object> processVariables, String tenantId)`
  Similar to `RuntimeService.startProcessInstanceByMessage(String, Map)`, but with tenant context.
  `ProcessInstance`
  RuntimeService.`startProcessInstanceWithForm(String processDefinitionId, String outcome, Map<String,Object> variables, String processInstanceName)`
  Starts a new process instance in the exactly specified version of the process definition with the given id.
  `ProcessInstance`
  FormService.`submitStartFormData(String processDefinitionId, String businessKey, Map<String,String> properties)`
  Start a new process instance with the user data that was entered as properties in a start form.
  `ProcessInstance`
  FormService.`submitStartFormData(String processDefinitionId, Map<String,String> properties)`
  Start a new process instance with the user data that was entered as properties in a start form.
  Methods in org.flowable.engine with parameters of type ProcessInstance
  Modifier and Type
  Method
  Description
  `void`
  InternalProcessLocalizationManager.`localize(ProcessInstance processInstance, String locale, boolean withLocalizationFallback)`

- ## Uses of ProcessInstance in org.flowable.engine.compatibility

  Methods in org.flowable.engine.compatibility that return ProcessInstance
  Modifier and Type
  Method
  Description
  `ProcessInstance`
  Flowable5CompatibilityHandler.`getProcessInstance(String processInstanceId)`
  `ProcessInstance`
  Flowable5CompatibilityHandler.`startProcessInstance(String processDefinitionKey, String processDefinitionId, Map<String,Object> variables, Map<String,Object> transientVariables, String businessKey, String tenantId, String processInstanceName)`
  `ProcessInstance`
  Flowable5CompatibilityHandler.`startProcessInstanceByMessage(String messageName, Map<String,Object> variables, Map<String,Object> transientVariables, String businessKey, String tenantId)`
  `ProcessInstance`
  Flowable5CompatibilityHandler.`submitStartFormData(String processDefinitionId, String businessKey, Map<String,String> properties)`
  Methods in org.flowable.engine.compatibility with parameters of type ProcessInstance
  Modifier and Type
  Method
  Description
  `Map<String,Object>`
  Flowable5CompatibilityHandler.`getVariables(ProcessInstance processInstance)`

- ## Uses of ProcessInstance in org.flowable.engine.interceptor

  Method parameters in org.flowable.engine.interceptor with type arguments of type ProcessInstance
  Modifier and Type
  Method
  Description
  `void`
  ProcessInstanceQueryInterceptor.`afterProcessInstanceQueryExecute(ProcessInstanceQuery processInstanceQuery, List<ProcessInstance> processInstances)`

- ## Uses of ProcessInstance in org.flowable.engine.migration

  Methods in org.flowable.engine.migration with parameters of type ProcessInstance
  Modifier and Type
  Method
  Description
  `void`
  ProcessInstanceMigrationCallback.`processInstanceMigrated(ProcessInstance processInstance, ProcessDefinition procDefToMigrateTo, ProcessInstanceMigrationDocument document, org.flowable.common.engine.impl.interceptor.CommandContext commandContext)`

- ## Uses of ProcessInstance in org.flowable.engine.runtime

  Methods in org.flowable.engine.runtime that return ProcessInstance
  Modifier and Type
  Method
  Description
  `ProcessInstance`
  ProcessInstanceBuilder.`start()`
  Start the process instance
  `ProcessInstance`
  ProcessInstanceBuilder.`startAsync()`
  Start the process instance asynchronously