# Process links

Process actions can be attached to Operaton activities through process links. Configured actions will be executed when the process reached the desired activity. This makes it possible to extend the functionality of a process beyond what Operaton offers through BPMN.

Currently, the following types of process-links are supported by Valtimo:

* Form
* Form-flow
* Plugin
* Building block

## Creating process links

There are two ways of creating process links:

* Manually via the UI
* Using auto-deployment via the IDE

{% tabs %}
{% tab title="Via UI" %}
To configure process links, admin privileges are required.

* Go to the `Admin` menu
* Go to the `Process links v2 (beta)` menu
* Select the activity of the desired process.
  * Depending on the type of activity, a list of supported process link types might be shown.
* Follow the steps

![Select process link type](/files/4FRFmndoFySukwy9T0GR)

**Creating a form process link**

A form process link can be added to user-tasks. When the process reaches the user-task, a user will be presented with the configured form when opening it.

More information about forms can be found in the [forms documentation](/features/case/forms.md).

**Creating a form-flow process link**

A form-flow process link can be added to user-tasks. When the process reaches the user-task, an instance of the form-flow will be created and be made visible to the user.

More information about form-flows can be found in the [form-flow documentation](/features/case/form-flow.md).

**Creating a plugin process link**

When configuring a plugin process link, a wizard is presented to choose between the available plugin configuration, actions and (optionally) additional settings for that action.

![Creating a plugin process link](/files/RqJS55UyxlS4h97L3aqm)

Any text fields for configuring the process link itself support several ways of providing values through value resolvers:

1. A fixed value. This value will be put directly into the template without alterations. For example `John`
2. A value retrieved from the case-data. This value should start with `doc:` and should end with the path to the case-data property. For example `doc:/firstname`.
3. A value retrieved from a process variable. This value should start with `pv:` and should end with the name of the process variable. For example `pv:firstname`.

**Creating a building block process link**

Building block process links are used on **Call activities** to start a reusable building block. In the wizard, you select the building block and version, configure plugin mappings, and map inputs and outputs.

For a step-by-step guide, see [Building blocks](/features/building-blocks.md).
{% endtab %}

{% tab title="Via IDE" %}
{% hint style="success" %}
Available since Valtimo `10.6.0`
{% endhint %}

Process links can also be configured using auto-deployment. These process links will be created at application startup. When a conflicting configuration is found on the target activity, creation is skipped and a warning is logged in the application logs.

auto-deployed process links can be added by creating a json file with the following filename structure: `<process-id>.process-link.json`. This file can be placed anywhere in the resource folder of the application.

This is an example of an auto-deployment file for two user task for a process:

```json
[
   {
      "activityId": "do-something",
      "activityType": "bpmn:UserTask:create",
      "processLinkType": "form",
      "formDefinitionName": "do-something"
   },
   {
      "activityId": "do-another-thing",
      "activityType": "bpmn:UserTask:create",
      "processLinkType": "form-flow",
      "formFlowDefinitionId": "do-another-thing:latest"
   },
   {
      "activityId": "delete-object-from-objectsapi",
      "activityType": "bpmn:ServiceTask:start",
      "processLinkType": "plugin",
      "pluginConfigurationId": "7d77d894-6458-4213-8bc0-9a65d523845b",
      "pluginActionDefinitionKey": "delete-object",
      "actionProperties": {
         "objectUrl": "pv:myObjectUrl",
         "someOtherProperty": "${VALTIMO_MY_PROPERTY}"
      }
   },
   {
      "activityId": "CallSubsidyCalculatorActivity",
      "activityType": "bpmn:CallActivity:start",
      "processLinkType": "building-block",
      "buildingBlockDefinitionKey": "subsidy-calculator",
      "buildingBlockDefinitionVersionTag": "1.0.0",
      "pluginConfigurationMappings": {
         "zakenapi": "3079d6fe-42e3-4f8f-a9db-52ce2507b7ee"
      },
      "inputMappings": [
         {
            "source": "doc:applicantName",
            "target": "applicantName"
         }
      ],
      "outputMappings": [
         {
            "source": "calculatedSubsidy",
            "target": "doc:calculatedSubsidy",
            "syncTiming": "END"
         }
      ]
   }
]
```

The auto-deployment configuration file supports environment variables such as `${VALTIMO_MY_PROPERTY}`. At runtime, these placeholders are replaced with the values of the corresponding environment variables.

**Important:** You must explicitly whitelist which environment variables can be used in these files. Add the following to your `application.yml`:

```yaml
valtimo:
  imports:
    whitelistedPaths:
      - "VALTIMO_.*"
      - "GZAC_.*"
```

This ensures that only environment variables matching the given patterns are available in the deployment file.
{% endtab %}
{% endtabs %}

## Editing process links

Process links that have been attached to Operaton activities, can also be edited. Admin privileges are required to edit process links.

* Go to the `Admin` menu
* Go to the `Process links v2 (beta)` menu
* Select the activity of the desired process.
* Change the settings using the provided form
* Save the new configuration by clicking on **Complete**

> Note: It is not possible to change the type of existing process links (form, form-flow or plugin), nor is it possible to change the selected plugin configuration. To do that, please [unlink](#unlinking-process-links) the current process link and [create a new one](#creating-process-links).

![Edit a process link](/files/TMaBrt72YGcaWqdHOphe)

## Unlinking process links

Process links that have been attached to Operaton activities, can also be unlinked (deleted). Admin privileges are required to unlink/delete process links.

* Go to the `Admin` menu
* Go to the `Process links v2 (beta)` menu
* Select the activity of the desired process.
* Click on **Unlink**

![Unlink a process link](/files/TMaBrt72YGcaWqdHOphe)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.valtimo.nl/features/process/process-link.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
