> ## 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.
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
* Canceling an activity instance, transition instance, or all instances (activity or transition) for an activity

Instructions are executed immediately 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/develop/user-guide/process-engine/process-instance-modification/).



## OpenAPI

````yaml POST /process-instance/{id}/modification
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:
    post:
      tags:
        - Process Instance
      summary: Modify Process Instance Execution State
      description: >-
        Submits a list of modification instructions to change a process
        instance's execution state.

        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

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


        Instructions are executed immediately 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/develop/user-guide/process-engine/process-instance-modification/).
      operationId: modifyProcessInstance
      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`
                value:
                  skipCustomListeners: true
                  skipIoMappings: true
                  instructions:
                    - type: startBeforeActivity
                      activityId: activityId
                      variables:
                        var:
                          value: aVariableValue
                          local: false
                          type: String
                        varLocal:
                          value: anotherVariableValue
                          local: true
                          type: String
                    - type: cancel
                      activityInstanceId: anActivityInstanceId
                  annotation: Modified to resolve an error.
      responses:
        '204':
          description: Request successful.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionDto'
          description: At least one modification instruction misses required parameters.
        '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.
    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).
    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.
    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

````