# STARTPROCESS Workflow Application

## Overview

The **STARTPROCESS** workflow application lets you launch a new request with the corresponding parameters. It provides a simple solution for inter-process communications.

There are three ways to use STARTPROCESS to launch a new request:

* Process ID<br>
* Process name with process version<br>
* Process name with test

## Parameters

### Process

| Parameter         | Type    | Direction | Description                                                                                                               |
| ----------------- | ------- | --------- | ------------------------------------------------------------------------------------------------------------------------- |
| `PROCESS_ID`      | Numeric | IN        | Process ID of the request to launch (to be used independently, without the other parameters)                              |
| `PROCESS_NAME`    | Text    | IN        | Process name of the request to launch                                                                                     |
| `PROCESS_VERSION` | Numeric | IN        | Version of the process to launch                                                                                          |
| `TEST`            | Text    | IN        | <p>Test mode</p><ul><li><code>Y</code>: Launch a test version</li><li><code>N</code>: Launch the active version</li></ul> |

### Optional parameters

| Parameter              | Type    | Direction | Description                        |
| ---------------------- | ------- | --------- | ---------------------------------- |
| `REQUEST_ID`           | Numeric | OUT       | Returns the ID of the new request  |
| `IMPERSONATE_USERNAME` | Text    | IN        | Username of the impersonating user |

You can define other parameters as needed in the workflow process to launch; for example `COMPANY` (text type IN parameter), e.g. `ACME_COMPANY`.

## Examples

### Process ID

| Parameter    | Type    | Direction | Description                                                                                                   |
| ------------ | ------- | --------- | ------------------------------------------------------------------------------------------------------------- |
| `PROCESS_ID` | Numeric | IN        | Send value of `MY_PROCESS_ID` (a numeric process data containing the ID of the process to start, e.g. `1320`) |

### Process name with process version

| Parameter         | Type    | Direction | Description                                                                                                                 |
| ----------------- | ------- | --------- | --------------------------------------------------------------------------------------------------------------------------- |
| `PROCESS_NAME`    | Text    | IN        | Send value of `MY_PROCESS_NAME` (a text process data containing the name of the process to start, e.g. `LEAVE_APPLICATION`) |
| `PROCESS_VERSION` | Numeric | IN        | Send value of `MY_PROCESS_VERSION` (a numeric process data containing the version number of the process to start, e.g. `2`) |

### Process name with test

| Parameter      | Type | Direction | Description                                                                                                                 |
| -------------- | ---- | --------- | --------------------------------------------------------------------------------------------------------------------------- |
| `PROCESS_NAME` | Text | IN        | Send value of `MY_PROCESS_NAME` (a text process data containing the name of the process to start, e.g. `LEAVE_APPLICATION`) |
| `TEST`         | Text | IN        | Send value of `MY_TEST` (e.g. `Y`)                                                                                          |
