> ## Documentation Index
> Fetch the complete documentation index at: https://docs.eorion.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 异步修改流程实例执行状态

> Submits a list of modification instructions to change a process instance's execution state async.
A modification instruction is one of the following:

* Starting execution before an activity
* Starting execution after an activity on its single outgoing sequence flow
* Starting execution on a specific sequence flow
* Cancelling an activity instance, transition instance, or all instances (activity or transition) for an activity

Instructions are executed asynchronous and in the order they are provided in this request's body.
Variables can be provided with every starting instruction.

The exact semantics of modification can be read about in the
[User guide](https://docs.camunda.org/manual/7.22/user-guide/process-engine/process-instance-modification/).



## OpenAPI

````yaml POST /process-instance/{id}/modification-async
openapi: 3.0.2
info:
  title: ORION Platform REST API
  description: OpenApi Spec for ORION Camunda Platform REST API.
  version: 7.22.6-ee
  license:
    name: Apache License 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: http://{host}:{port}/{contextPath}
    description: The API server for the default process engine
    variables:
      host:
        default: localhost
      port:
        default: '8080'
      contextPath:
        default: engine-rest
  - url: http://{host}:{port}/{contextPath}/engine/{engineName}
    description: The API server for a named process engine
    variables:
      host:
        default: localhost
      port:
        default: '8080'
      contextPath:
        default: engine-rest
      engineName:
        default: default
  - url: '{url}'
    description: The API server with a custom url
    variables:
      url:
        default: ''
security:
  - basicAuth: []
tags:
  - name: Authorization
  - name: Batch
  - name: Condition
  - name: Decision Definition
  - name: Decision Requirements Definition
  - name: Deployment
  - name: Engine
  - name: Event Subscription
  - name: Execution
  - name: External Task
  - name: Filter
  - name: Group
  - name: Historic Activity Instance
  - name: Historic Batch
  - name: Historic Decision Definition
  - name: Historic Decision Instance
  - name: Historic Decision Requirements Definition
  - name: Historic Detail
  - name: Historic External Task Log
  - name: Historic Identity Link Log
  - name: Historic Incident
  - name: Historic Job Log
  - name: Historic Process Definition
  - name: Historic Process Instance
  - name: Historic Task Instance
  - name: Historic User Operation Log
  - name: Historic Variable Instance
  - name: History Cleanup
  - name: Identity
  - name: Incident
  - name: Job
  - name: Job Definition
  - name: Message
  - name: Metrics
  - name: Migration
  - name: Modification
  - name: Process Definition
  - name: Process Instance
  - name: Signal
  - name: Schema Log
  - name: Task
  - name: Task Attachment
  - name: Task Comment
  - name: Task Identity Link
  - name: Task Local Variable
  - name: Task Variable
  - name: Telemetry
  - name: Tenant
  - name: User
  - name: Variable Instance
  - name: Version
externalDocs:
  description: Find out more about ORION Rest API
  url: https://docs.eorion.com
paths:
  /process-instance/{id}/modification-async:
    post:
      tags:
        - Process Instance
      summary: Modify Process Instance Execution State Async
      description: >-
        Submits a list of modification instructions to change a process
        instance's execution state async.

        A modification instruction is one of the following:


        * Starting execution before an activity

        * Starting execution after an activity on its single outgoing sequence
        flow

        * Starting execution on a specific sequence flow

        * Cancelling an activity instance, transition instance, or all instances
        (activity or transition) for an activity


        Instructions are executed asynchronous and in the order they are
        provided in this request's body.

        Variables can be provided with every starting instruction.


        The exact semantics of modification can be read about in the

        [User
        guide](https://docs.camunda.org/manual/7.22/user-guide/process-engine/process-instance-modification/).
      operationId: modifyProcessInstanceAsyncOperation
      parameters:
        - name: id
          in: path
          schema:
            type: string
          required: true
          description: The id of the process instance to modify.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessInstanceModificationDto'
            examples:
              example-1:
                summary: POST `/process-instance/aProcessInstanceId/modification-async`
                value:
                  skipCustomListeners: true
                  skipIoMappings: true
                  instructions:
                    - type: startBeforeActivity
                      activityId: activityId
                    - type: cancel
                      activityInstanceId: anActivityInstanceId
                  annotation: Modified to resolve an error.
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchDto'
              examples:
                example-1:
                  summary: Status 200 Response
                  value:
                    id: aBatchId
                    type: aBatchType
                    totalJobs: 10
                    jobsCreated: 10
                    batchJobsPerSeed: 100
                    invocationsPerBatchJob: 1
                    seedJobDefinitionId: aSeedJobDefinitionId
                    monitorJobDefinitionId: aMonitorJobDefinitionId
                    batchJobDefinitionId: aBatchJobDefinitionId
                    tenantId: aTenantId
                    suspended: false
                    createUserId: demo
          description: Request successful.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionDto'
          description: |-
            Bad Request
            At least one modification instruction misses required parameters.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationExceptionDto'
          description: >-
            Forbidden

            If the user is not allowed to execute batches. See the Introduction
            for the error response format.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionDto'
          description: >-
            The modification cannot be performed, for example because it starts
            a failing activity.
components:
  schemas:
    ProcessInstanceModificationDto:
      type: object
      properties:
        skipCustomListeners:
          type: boolean
          nullable: true
          description: >-
            Skip execution listener invocation for activities that are started
            or ended as part of this request.
        skipIoMappings:
          type: boolean
          nullable: true
          description: >-
            Skip execution of [input/output variable
            mappings](https://docs.camunda.org/manual/7.22/user-guide/process-engine/variables/#input-output-variable-mapping)

            for activities that are started or ended as part of this request.
        instructions:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/ProcessInstanceModificationInstructionDto'
          description: >-
            JSON array of modification instructions. The instructions are
            executed in the order they are in.
        annotation:
          type: string
          nullable: true
          description: An arbitrary text annotation set by a user for auditing reasons.
    BatchDto:
      type: object
      properties:
        id:
          type: string
          nullable: true
          description: The id of the batch.
        type:
          type: string
          nullable: true
          description: >-
            The type of the batch.

            See the [User
            Guide](https://docs.camunda.org/manual/7.22/user-guide/process-engine/batch/#creating-a-batch)

            for more information about batch types.
        totalJobs:
          type: integer
          format: int32
          nullable: true
          description: >-
            The total jobs of a batch is the number of batch execution jobs
            required to complete the batch.
        jobsCreated:
          type: integer
          format: int32
          nullable: true
          description: The number of batch execution jobs already created by the seed job.
        batchJobsPerSeed:
          type: integer
          format: int32
          nullable: true
          description: >-
            The number of batch execution jobs created per seed job invocation.

            The batch seed job is invoked until it has created all batch
            execution jobs required by the batch

            (see `totalJobs` property).
        invocationsPerBatchJob:
          type: integer
          format: int32
          nullable: true
          description: >-
            Every batch execution job invokes the command executed by the batch
            `invocationsPerBatchJob` times.

            E.g., for a process instance migration batch this specifies the
            number of process instances which are migrated per batch execution
            job.
        seedJobDefinitionId:
          type: string
          nullable: true
          description: The job definition id for the seed jobs of this batch.
        monitorJobDefinitionId:
          type: string
          nullable: true
          description: The job definition id for the monitor jobs of this batch.
        batchJobDefinitionId:
          type: string
          nullable: true
          description: The job definition id for the batch execution jobs of this batch.
        suspended:
          type: boolean
          nullable: true
          description: Indicates whether this batch is suspended or not.
        tenantId:
          type: string
          nullable: true
          description: The tenant id of the batch.
        createUserId:
          type: string
          nullable: true
          description: The id of the user that created the batch.
        startTime:
          type: string
          format: date-time
          nullable: true
          description: >-
            The time the batch was started. Default format
            `yyyy-MM-dd'T'HH:mm:ss.SSSZ`. For further information,

            please see the [documentation]
            (https://docs.camunda.org/manual/7.22/reference/rest/overview/date-format/)
        executionStartTime:
          type: string
          format: date-time
          nullable: true
          description: >-
            The time the batch execution was started, i.e., at least one batch
            job has been executed. Default

            format `yyyy-MM-dd'T'HH:mm:ss.SSSZ`. For further information, please
            see the [documentation]

            (https://docs.camunda.org/manual/7.22/reference/rest/overview/date-format/)
    ExceptionDto:
      title: ExceptionDto
      type: object
      properties:
        type:
          type: string
          nullable: true
          description: An exception class indicating the occurred error.
        message:
          type: string
          nullable: true
          description: A detailed message of the error.
        code:
          type: number
          description: >-
            The code allows your client application to identify the error in an
            automated fashion.

            You can look up the meaning of all built-in codes and learn how to
            add custom codes

            in the [User
            Guide](https://docs.camunda.org/manual/7.22/user-guide/process-engine/error-handling/#exception-codes).
    AuthorizationExceptionDto:
      allOf:
        - type: object
          properties:
            userId:
              type: string
              nullable: true
              description: The id of the user that does not have expected permissions
            missingAuthorizations:
              type: array
              nullable: true
              items:
                $ref: '#/components/schemas/MissingAuthorizationDto'
              description: ''
        - $ref: '#/components/schemas/ExceptionDto'
    ProcessInstanceModificationInstructionDto:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - cancel
            - startBeforeActivity
            - startAfterActivity
            - startTransition
          description: >-
            **Mandatory**. One of the following values: `cancel`,
            `startBeforeActivity`, `startAfterActivity`, `startTransition`.


            * A cancel instruction requests cancellation of a single activity
            instance or all instances of one activity.

            * A startBeforeActivity instruction requests to enter a given
            activity.

            * A startAfterActivity instruction requests to execute the single
            outgoing sequence flow of a given activity.

            * A startTransition instruction requests to execute a specific
            sequence flow.
        variables:
          $ref: '#/components/schemas/TriggerVariableValueDto'
        activityId:
          type: string
          nullable: true
          description: >-
            Can be used with instructions of types `startTransition`. Specifies
            the sequence flow to start.
        transitionId:
          type: string
          nullable: true
          description: >-
            Can be used with instructions of types `startTransition`. Specifies
            the sequence flow to start.
        activityInstanceId:
          type: string
          nullable: true
          description: >-
            Can be used with instructions of type `cancel`. Specifies the
            activity instance to cancel.

            Valid values are the activity instance IDs supplied by the [Get
            Activity Instance
            request](https://docs.camunda.org/manual/7.22/reference/rest/process-instance/get-activity-instances/).
        transitionInstanceId:
          type: string
          nullable: true
          description: >-
            Can be used with instructions of type `cancel`. Specifies the
            transition instance to cancel.

            Valid values are the transition instance IDs supplied by the [Get
            Activity Instance
            request](https://docs.camunda.org/manual/7.22/reference/rest/process-instance/get-activity-instances/).
        ancestorActivityInstanceId:
          type: string
          nullable: true
          description: >-
            Can be used with instructions of type `startBeforeActivity`,
            `startAfterActivity`, and `startTransition`.

            Valid values are the activity instance IDs supplied by the Get
            Activity Instance request.

            If there are multiple parent activity instances of the targeted
            activity,

            this specifies the ancestor scope in which hierarchy the
            activity/transition is to be instantiated.


            Example: When there are two instances of a subprocess and an
            activity contained in the subprocess is to be started,

            this parameter allows to specifiy under which subprocess instance
            the activity should be started.
        cancelCurrentActiveActivityInstances:
          type: boolean
          nullable: true
          description: >-
            Can be used with instructions of type cancel. Prevents the deletion
            of new created activity instances.
    MissingAuthorizationDto:
      type: object
      properties:
        permissionName:
          type: string
          nullable: true
          description: The permission name that the user is missing.
        resourceName:
          type: string
          nullable: true
          description: The name of the resource that the user is missing permission for.
        resourceId:
          type: string
          nullable: true
          description: The id of the resource that the user is missing permission for.
    TriggerVariableValueDto:
      allOf:
        - type: object
          properties:
            local:
              type: boolean
              nullable: true
              description: >-
                Indicates whether the variable should be a local variable or
                not.

                If set to true, the variable becomes a local variable of the
                execution

                entering the target activity.
        - $ref: '#/components/schemas/VariableValueDto'
    VariableValueDto:
      type: object
      properties:
        value:
          $ref: '#/components/schemas/AnyValue'
        type:
          type: string
          nullable: true
          description: The value type of the variable.
        valueInfo:
          type: object
          additionalProperties: true
          description: >-
            A JSON object containing additional, value-type-dependent
            properties.

            For serialized variables of type Object, the following properties
            can be provided:


            * `objectTypeName`: A string representation of the object's type
            name.

            * `serializationDataFormat`: The serialization format used to store
            the variable.


            For serialized variables of type File, the following properties can
            be provided:


            * `filename`: The name of the file. This is not the variable name
            but the name that will be used when downloading the file again.

            * `mimetype`: The MIME type of the file that is being uploaded.

            * `encoding`: The encoding of the file that is being uploaded.


            The following property can be provided for all value types:


            * `transient`: Indicates whether the variable should be transient or

            not. See
            [documentation](https://docs.camunda.org/manual/7.22/user-guide/process-engine/variables#transient-variables)
            for more informations.

            (Not applicable for `decision-definition`, `
            /process-instance/variables-async`, and `/migration/executeAsync`
            endpoints)
    AnyValue:
      description: |-
        Can be any value - string, number, boolean, array or object.
         **Note**: Not every endpoint supports every type.
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic

````