# Application de workflow RAISEEXCEPTION

## Aperçu  <a href="#apercu" id="apercu"></a>

L'application de workflow RAISEEXCEPTION déclenche les exceptions d'annulation sur les actions spécifiées, contrôlées par l'exception de workflow d'annulation d'action dans le panneau de définition des conditions. Cette application de workflow peut ainsi être appelée par une action pour annuler une ou plusieurs autres actions dans une requête en cours. L'application est convertie en assembly de workflow pour simplifier la configuration et améliorer les performances.

{% hint style="info" %}
Vous pouvez supprimer l’application dans la console IIS ainsi que le dossier physique sur le serveur (`\wfgen\WfApps\WebServices\RaiseException`). Par ailleurs, les paramètres d’authentification dans la déclaration de l’application de workflow ne sont pas nécessaires.
{% endhint %}

Ce dispositif est utile quand une ou plusieurs actions doivent être annulées après qu'un certain point dans le workflow ait été atteint, quoique ces actions aient été déjà activées. Comme exemple, si trois actions parallèles sont actives, mais une des actions parallèles est conclue avant les autres et vos règles de workflow déterminent que les deux autres actions ne sont plus exigées, vous pourriez activer le RAISEEXCEPTION pour annuler les deux autres actions et pour permettre le déroulement du workflow.

De plus, vous pouvez :

* Utiliser les paramètres par défaut pour annuler toutes les actions d’une demande identifiée.<br>
* Utiliser les paramètres facultatifs pour annuler une liste d’actions instanciées dans une liste de demandes ou pour effectuer une annulation à la place d’un utilisateur défini.<br>
* Utiliser les paramètres supplémentaires pour définir plusieurs couples de références d’actions.

## Paramètres par défaut  <a href="#utilisation-des-parametres-par-defaut" id="utilisation-des-parametres-par-defaut"></a>

Les paramètres `REQUEST_ID` et `ACTIVITY_NAME` doivent être utilisés ensemble.

| Paramètre       | Type    | Direction | Description                                            |
| --------------- | ------- | --------- | ------------------------------------------------------ |
| `REQUEST_ID`    | Numeric | IN        | L'ID de la demande dans laquelle l’action sera annulée |
| `ACTIVITY_NAME` | Text    | IN        | Le nom de l’action qui sera annulée                    |

#### 📌 Exemple

Dans cet exemple, l’application va annuler tous les instances de l’action `PENDING_ACTION` dans la demande `455` :

```
REQUEST_ID = 455  
ACTIVITY_NAME = "PENDING_ACTION"
```

## Paramètres facultatifs  <a href="#utilisation-des-parametres-facultatifs" id="utilisation-des-parametres-facultatifs"></a>

Les paramètres `REQUEST_ID_LIST` et `ACTIVITY_NAME_LIST` doivent être utilisés ensemble.

| Paramètre            | Type | Direction | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| -------------------- | ---- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `REQUEST_ID_LIST`    | TEXT | IN        | Liste d’IDs de demandes dans lesquelles l’action sera annulée                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `ACTIVITY_NAME_LIST` | TEXT | IN        | Liste d’IDs de demandes dans lesquelles l’action sera annulée                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `USERNAME`           | TEXT | IN        | <p>Utilisé pour définir le nom d’utilisateur (username) utilisé pour annuler l’action<br><br>✏️ <strong>Notes :</strong></p><ul><li>Le nom d’utilisateur utilisé doit faire partie d’un participant du processus.</li><li>Si ce paramètre n’est pas défini le compte utilisé est le compte défini dans <strong>Identité par défaut du service de moteur de workflow</strong> dans la section <strong>Sécurité</strong> de l'onglet <strong>Général</strong> du <strong>Panneau de configuration</strong>. </li></ul> |
| `PASSWORD`           | TEXT | IN        | Utilisé pour définir le mot de passe associé au nom d’utilisateur utilisé pour annuler l’action                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `EXCEPTION_NAME`     |      |           | <p>Exception qui sera déclenchée sur l'action<br></p><p><strong>Valeurs possibles :</strong></p><ul><li><code>CANCEL</code></li><li><code>ERROR</code></li><li><code>TIMEOUT</code></li><li><code>ASSIGNMENT\_ERROR</code></li></ul>                                                                                                                                                                                                                                                                                 |
| `EXCEPTION_MESSAGE`  |      |           | Ce paramètre est utilisé avec le nom de l’exception `ERROR` pour fournir plus de détails sur l'erreur dans la mesure de suivi                                                                                                                                                                                                                                                                                                                                                                                        |

#### 📌 Exemples

Dans cet exemple l’application va annuler toutes les instances des actions `PENDING_ACTION1` et `PENDING_ACTION2` dans les demandes `445`, `446` et `447` :

```
REQUEST_ID_LIST = "455, 456, 457"  
ACTIVITY_NAME_LIST = "PENDING_ACTION1, PENDING_ACTION2"
```

Dans cet exemple l’application va annuler toutes les instances des actions nommées `PENDING_ACTION` dans la demande `445` à la place de Jean Dupont (`jdupont`):

```
REQUEST_ID = "455"  
ACTIVITY_NAME = "PENDING_ACTION"  
USERNAME = "jdupont"  
PASSWORD = "1234"
```

## Paramètres supplémentaires  <a href="#utilisation-des-parametres-supplementaires" id="utilisation-des-parametres-supplementaires"></a>

| Paramètre                  | Type    | Direction | Description                                                                                                                                                                                                                                                                                            |
| -------------------------- | ------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `EX?_REQUEST_ID`           | Numeric | IN        | Définit l’ID de la demande dans laquelle l’action sera annulée pour le couple spécifié par le `?` (point d’interrogation)                                                                                                                                                                              |
| `EX?_ACTIVITY_NAME`        | Text    | IN        | Définit le nom de l’action qui sera annulée pour le couple spécifié par le `?` (point d’interrogation)                                                                                                                                                                                                 |
| `IGNORE_NOTHINGTODO_ERROR` | Text    | IN        | <p>Ignorer l'erreur <code>Nothing to do</code> (rien à faire)</p><p></p><p>Par défaut, RAISEEXCEPTION renvoie une erreur si vous essayez d’annuler une action qui ne possède aucune instance ouverte. Si vous définissez ce paramètre sur <code>Y</code>, l’application ignorera ce type d’erreur.</p> |

#### 📌 Exemple

Dans cet exemple l’application va annuler toutes les instances de l’action `PENDING_ACTION1` dans la demande `455` et toutes les instances de l’action `PENDING_ACTION2` dans la demande `456`. Si les actions `455` et `456` n’ont pas d’instance ouverte aucune erreur n’est remontée.

```
EX1_REQUEST_ID = 455  
EX1_ACTIVITY_NAME = "PENDING_ACTION1"  
EX2_REQUEST_ID = 456  
EX2_ACTIVITY_NAME = "PENDING_ACTION2"  
IGNORE_NOTHINGTODO_ERROR = "Y"
```

## Erreurs d’exécution possibles  <a href="#erreurs-execution-possibles" id="erreurs-execution-possibles"></a>

Les erreurs suivantes peuvent se produire lors de l’exécution de l’application :

| Erreur                                                                                                                                                                                                                          | Cause                                                                                      | Solution                                                                                                                                                                                                                            |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Erreur RaiseException : Le contexte WorkflowGen est vide                                                                                                                                                                        | Tous les paramètres `RAISE_EXCEPTION` sont vides                                           | Vérifiez les paramètres `RAISE_EXCEPTION`                                                                                                                                                                                           |
| Erreur RaiseException : Les paramètres de l’application ne sont pas saisis correctement                                                                                                                                         | Les paramètres `RAISE_EXCEPTION` ne sont pas remplis correctement                          | Vérifiez les paramètres `RAISE_EXCEPTION`                                                                                                                                                                                           |
| (Exception Web WorkflowGen) Statut HTTP : ... Réponse de l’erreur : ... or The `FUNCTION_NAME` parameter was not found                                                                                                          | Une erreur est survenue lors de l’émission de la requête HTTP à WorkflowGen                | Vérifiez le statut HTTP : 401 : erreur de sécurité Vérifiez vos paramètres d’authentification 404 : Impossible de se connecter à l’URL 500 : Erreur interne du serveur Vérifiez les indications dans les messages d’erreur renvoyés |
| Erreur RaiseException : Erreur lors de la tentative de connexion à la base de données WorkflowGen Message d’erreur : ....                                                                                                       | Une erreur est survenue lors de la tentative de connexion à la base de données WorkflowGen | Vérifiez la chaîne connexion dans le fichier « web.config ». Vérifiez les indications dans les messages d’erreur renvoyés.                                                                                                          |
| (Erreur RaiseException) Paramètres : `<Nom du paramètre de l’ID de demande >/<Nom du paramètre du nom de l’action >` Erreur : WorkflowGen a levé une exception de sécurité.                                                     | L’utilisateur défini par les paramètres `IDENTITY` n’est pas participant du processus      | Vérifiez les paramètres `IDENTITY_USERNAME` et `IDENTITY_PASSWORD`. Identifiez la demande avec les noms des paramètres retournés dans le message d’erreur.                                                                          |
| (Erreur RaiseException) Paramètres `<Nom du paramètre de l’ID de demande >/<Nom du paramètre du nom de l’action >` Erreur : L’action `<Nom de l’action/activité >` n’existe pas dans la demande `<Identifiant de la demande >`. | Un des noms d’action définis dans les paramètres `RAISE_EXCEPTION` n’existe pas.           | Vérifiez les paramètres `RAISE_EXCEPTION`. Vérifiez les indications dans les messages d’erreur renvoyés.                                                                                                                            |
| (Erreur RaiseException) Paramètres `<Nom du paramètre de l’ID de demande >/<Nom du paramètre du nom de l’action >`  Erreur : L’action  n’a pas d’instance dans la demande `<Identifiant de la demande >`.                       | Une des actions à annuler n’est pas ouverte.                                               | Vérifiez les paramètres `RAISE_EXCEPTION`. Vérifiez les indications dans les messages d’erreur renvoyés. Définissez le paramètre `IGNORE_NOTHINGTODO_ERROR` sur  `Y` afin d’ignorer ce type d’erreur.                               |
