# Applications

## Application screen

<div align="left"><img src="https://4110701782-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LQ0OuyalhD4eRB31PgV%2F-LQ0P-T4HIR4NuuKqbhT%2F-LQ0P9VPp3UZd5bVBGV-%2Fapplication_screen_624x361.png?generation=1540843171600349&#x26;alt=media" alt=""></div>

## Menu banner

| Links           | Remarks                                                    |
| --------------- | ---------------------------------------------------------- |
| New application | Displays a blank application form to add a new application |
| Refresh         | Refreshes the displayed application list                   |

## Filters

| Filter on \* | Remarks                            |
| ------------ | ---------------------------------- |
| Name         | Filters by application name        |
| Description  | Filters by application description |

\* A filter can be applied to a part of a field.

| External filters | Remarks                           |
| ---------------- | --------------------------------- |
| Actives only     | Displays active applications only |

## Application form

| Fields               | Remarks                                                                                                                                                                                                                                                                                  |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Name                 | Unique identifier for the application; must respect nomenclature and be limited to 30 characters (required field)                                                                                                                                                                        |
| Description          | Application description limited to 255 characters (required field)                                                                                                                                                                                                                       |
| Type                 | <p>Application type:</p><ul><li>Assembly</li><li>Asynchronous Web Procedure</li><li>WCF Service</li><li>Web Application</li><li>Web Procedure</li><li>SOAP Web Service</li><li>Incoming Webhook</li><li>Non Interactive Client</li></ul>                                                 |
| URL                  | The relative or the absolute URL of the application; both will work (required field)                                                                                                                                                                                                     |
| WSDL                 | The WSDL URL to define a WSDL-based web service (if applicable); see [WSDL web services](#wsdl-web-services) for details on WSDL-based web services.                                                                                                                                     |
| Username \*          | Username to be used if an authentication is required to access the application’s URL                                                                                                                                                                                                     |
| Password \*          | Password to be used if an authentication is required to access the application’s URL                                                                                                                                                                                                     |
| Content type         | <p>Type of data encoding to be used when the application returns to WorkflowGen: </p><ul><li><code>application/x-www-form-urlencoded</code></li><li><code>application/xml; charset=UTF-8</code></li><li><code>application/json</code></li><li><code>multipart/form-data</code></li></ul> |
| Context format       | <p>Defines the format type of the context parameters exchanged between the application and WorkflowGen: </p><ul><li>JSON</li><li>XML ADO.NET DataSet (default WorkflowGen schema)</li><li>XML ADO Recordset</li></ul>                                                                    |
| Schema definition    | If checked the schema will be embedded inline in the XML (for XML context formats only)                                                                                                                                                                                                  |
| Parameters           | Application parameters (a link displays the parameters form in edit mode)                                                                                                                                                                                                                |
| Default application  | If checked the application is the default one                                                                                                                                                                                                                                            |
| Active               | If checked the application is active                                                                                                                                                                                                                                                     |
| Impersonate username | A WorkflowGen username to impersonate by the application (for `Incoming Webhook` and `Non Interactive Client`)                                                                                                                                                                           |
| Client ID            | A client ID from the `registered application` of your authentication service provider e.g. Azure Active Directory (for  `Non Interactive Client`)                                                                                                                                        |

\* Only needed by the web procedures and the web services.

## Application list screen

<div align="left"><img src="https://4110701782-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LQ0OuyalhD4eRB31PgV%2F-LQ0P-T4HIR4NuuKqbhT%2F-LQ0P9VRBUm2ePK0_jME%2Fapplications_list_624x481.png?generation=1540843164184385&#x26;alt=media" alt=""></div>

## Application list

| Columns     | Remarks                                                              |
| ----------- | -------------------------------------------------------------------- |
| Order       | Display the application in order list                                |
| Name        | Application name (a link displays the application form in edit mode) |
| Description | Application description                                              |
| Active      | Application is active                                                |
| Utilization | Number of actions in which the application is used                   |

## Edit parameters list screen

<div align="left"><img src="https://4110701782-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LQ0OuyalhD4eRB31PgV%2F-LQ0P-T4HIR4NuuKqbhT%2F-LQ0P9VTE3K2ZMx1Qh0h%2Fedit_parameters_list_624x310.png?generation=1540843164135252&#x26;alt=media" alt=""></div>

| Columns     | Remarks                                                                                                                     |
| ----------- | --------------------------------------------------------------------------------------------------------------------------- |
| Name        | Application parameter name                                                                                                  |
| Data type   | Application parameter data type                                                                                             |
| Direction   | Application parameter direction                                                                                             |
| Required    | Required parameter                                                                                                          |
| Default     | Optional parameter; displays the parameter in the parameter list of the actions based on the current application by default |
| Deletion \* | Link to delete the application parameter                                                                                    |

\* The delete link is identified by an **`x`** visible only if the application is not used by a process action.

To add a parameter, click the **Parameters** link on the **Edit application** screen, then click **Add** on the **Edit parameters** list screen.

## Add application parameters

| Fields      | Remarks                                                                                                                            |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Name        | Application parameter name (required field)                                                                                        |
| Description | Application parameter description (required field)                                                                                 |
| Data type   | <p>Application parameter data type:</p><ul><li>Text</li><li>Numeric</li><li>Date/Time</li><li>File</li></ul>                       |
| Direction   | <p>Application parameter directions: </p><ul><li>IN (input)</li><li>OUT (output)</li><li>INOUT (input/output)</li></ul>            |
| Required    | <p>Is this parameter required? </p><ul><li>Yes (disables the default property)</li><li>No (enables the default property)</li></ul> |
| Default     | If checked, the parameter is displayed in the parameter list of the action based on the current application                        |

{% hint style="info" %}
Application parameter names should respect the following XML naming rules:

* They should begin with a letter or an underscore<br>
* They should contain only letters, digits, hyphens, underscores, and periods<br>
* They should not contain spaces<br>
* They should not begin with the letters `XML` in any case (e.g. `xml` or `Xml`)

For more information, see <https://www.w3schools.com/xml/xml_elements.asp>.
{% endhint %}

## Deleting an application

An application cannot be deleted if it is used in a process.

## Deleting a parameter

A parameter cannot be deleted if its application is used in a process.

## Assembly application

This application allows you to declare a .NET class method as a workflow application. It is the fastest solution to develop a custom workflow application (compared to web services). The execution performance is exceptional because WorkflowGen instantiates the assembly directly without network communication or web service authentication.

### **Example**

1. Copy a sample `.dll` assembly into a WorkflowGen `bin` folder.<br>

2. In the **Administration Module**, click **Applications** and then **New application**.<br>

3. Enter the following information in the appropriate fields:
   * **Name:** `SAMPLE_GET_STRING`
   * **Description:** Returns a string with a `!` (exclamation point)
   * **Type:** Assembly<br>

4. **Assembly full name or path:** `WorkflowAppSample`

5. Click **Save**.

* **Class full name:** Select `WorkflowApp.Test`
  * **Method:** Select `GetString`

These parameters are automatically generated:

* **IN:** `message` (Text)
* **OUT:** `RETURN_VALUE` (Text)

You can now use this workflow application in your process.

## WCF service application

This application allows you to declare a WCF service client proxy .NET class method as a workflow application.

### **Example**

1. In the WorkflowGen **Administration Module**, click **Applications** and then **New application**.<br>
2. Enter the following information in the appropriate fields:
   * **Name:** `WCFSERVICE_SAMPLE_GET_STRING`
   * **Description:** Returns a string with a `!` (exclamation point)
   * **Type:** WCF service<br>
3. **Assembly full name or path:** `WorkflowAppWCFSampleTest` <br>
4. Click **Save**.

* **Class full name:** Select `workflowAppWCFSampleTest.ServiceClient`
  * **Method:** Select `GetString`

These parameters are automatically generated:

* **IN:** `message` (Text)
* **OUT:** `RETURN_VALUE` (Text)

You can now use this workflow application in your process.

* **Name:** `WCFSERVICE_SAMPLE_GET_STRING`

## WSDL web services

### **Overview**

WorkflowGen supports web services based on the SOAP standard. This means that web services can now be integrated into WorkflowGen to be used by process actions, without the need to program them. WorkflowGen can now use predefined web services and reference them by using their WSDL (Web Services Description Language) file.

A URL to the WSDL file defining the web service is required to display the available web methods that can be called by WorkflowGen. Once the WSDL is referenced and saved (in the WorkflowGen application definition), and one of its defined web methods are selected, the WorkflowGen application parameters are automatically generated.

The data types of the parameters are mapped to the corresponding WorkflowGen data types (numeric, text, datetime). All complex XML types are mapped to a WorkflowGen file data.

### **Public web services**

Public web services are web services that are available for public re-use. To reference one as a WorkflowGen Application, follow the example below.

#### **Creating a WSDL web service**

1. In the **Administration Module**, create a new WorkflowGen application and define the following:
   * **Name**
   * **Description**
   * **Type:** Web service
   * **Username:** A valid WorkflowGen Administrator
   * **Password:** The valid password for the username<br>
2. Reference a web service and WSDL by defining a URL to a valid web service and to its related WSDL file and save the application.\
   \
   📌 **URL example:**&#x20;

   ```
   http://quickstarts.asp.net/QuickStartv20/webservices/Samples/MathService/vb/Server/MathService.asmx
   ```

   📌 **WSDL example:**&#x20;

   ```
   http://quickstarts.asp.net/QuickStartv20/webservices/Samples/MathService/vb/Server/MathService.asmx?WSDL
   ```
3. Select the web method to use. The WSDL defines which web methods are available to be used. Once you select a web method and save the application, the associated parameters are automatically mapped and the application may now be used by process actions.

## Private web service example

### Overview

Private web services are web services that are not available for public re-use. They generally use a secure URL that requires the proper authentication. To reference one as a WorkflowGen application, follow the example below.

### **Creating a WSDL web service**

1. In the **Administration Module**, create a new WorkflowGen application and define the following:
   * **Name**
   * **Description**
   * **Type:** Web service
   * **Username:** A valid WorkflowGen Administrator
   * **Password:** The valid password for the username<br>
2. Reference a web service and WSDL by defining a URL to a valid web service and to its related WSDL file and save the application.<br>

   The examples below demonstrate the use of a web service located on a SharePoint 2007 website. In this example, the web service is called `lists.asmx`. For more information, see <http://msdn2.microsoft.com/en-us/library/ms445760.aspx>.\
   \
   📌 **URL example:** &#x20;

   ```
   http://myspsserver/_vti_bin/lists.asmx
   ```

   📌 **WSDL example:** &#x20;

   ```
   http://myspsserver/_vti_bin/lists.asmx?WSDL
   ```
3. Select the web method to use. The WSDL defines which web methods are available to be used. Once you select a web method and save the application, the associated parameters are automatically mapped and the application can now be used by process actions.

## WSDL web service action: other parameters

### **Overview**

WorkflowGen will create some extra parameters when referencing a WSDL. Other parameters can also be used in addition to those already defined in the WSDL file.

### **Other parameters**

The other parameters that are defined by WorkflowGen are:

* `RETURN_VALUE`: If the web service returns a value, WorkflowGen will automatically add an OUT parameter.<br>
* `WFG_WS_URL`: Specify a web service URL to override the predefined URL.<br>
* `WFG_WS_USERNAME`: Specify a username to override the predefined username.<br>
* `WFG_WS_PASSWORD`: Specify a password to override the predefined password.
