# Session 2 (CORR) - 21.03.2003 - Lab UiPath Corrigé
###### tags: `HEG` `Technologies émergentes`
[TOC]
### 1. Créez un compte gratuit sur [UiPath]
- [ ] Naviguez sur le portail
- [ ] Vous pouvez télécharger UiPath Studio (facultatif)
- [ ] Menu de gauche :
- [ ] Orchestrator, queues
- [ ] Studio (cette partie va nous intéresser)
- [ ] Apps
- [ ] Automation Hub
- [ ] Integration Services
- [ ] Admin
- [ ] qu'est-ce qu'un tenant ?
- [ ] More => marketplace
### 2. Exo 1 - Récupérez le taux de change USD=>EUR avec une requête HTTP
But de l'exercice : récupérer un taux de change en utilisant l'API: https://api.exchangerate.host/latest?base=USD&symbols=CHF
1. Cliquez sur Studio
2. Cliquez sur New Project
3. Donnez un nom, trigger manuel
4. Cliquez sur le bouton "+" => add activity
5. Recherchez "HTTP" et sélectionnez "Web API: HTTP Request"
- méthode "GET"
- URL : ouvrez le "Expression editor" et entrez le code : `https://api.exchangerate.host/latest?base=USD&symbols=EUR `
6. Cliquez sur le bouton "+" => add activity
7. Recherchez JSON et ajoutez "Web API: Deserialize JSON"
- dans le champ JSON string, faites "ctrl+space" pour ajouter une variable. Cherchez et sélectionnez "Response content"
- vérifiez que vous avez bien un output dans "JSON object"
8. Dans les arguments, créez un argument "CurrentExchangeRate", Direction "Out", type "Number with decimal", sans default value.
9. Ajoutez une activity afin d'affecter une variable avec le taux de change retrouvé. Cherchez "set" et sélectionnez "Control: Set Variable Value"
- Dans la valeur, une instruction similaire à : `Convert.ToDouble(___map_DeserializeJson_Generic_1_1__JsonObject.SelectToken("rates").SelectToken(Currency).ToString)`
- dans les variables, cherchez "JSON", et sélectionnez JSON object, Path par exemple, et remplacez Path par SelectToken et ce qui suit: `.SelectToken("rates").SelectToken(Currency).ToString`
- Convertissez le tout en Double : `Convert.ToDouble(_out_DeserializeJson_Generic_1_2__JsonObject.SelectToken("rates").SelectToken(Currency).ToString) `
- dans "TO", sélectionnez l'argument créé, à savoir "Current Exchange Rate"
10. Ajoutez une activity (cherchez "log" et sélectionnez "Control: Log Message") afin d'écrire le taux de change retrouvé en tant que message dans les logs
- Entrez le message "Le taux de change courant USD=>EUR est:<[CurrentExchangeRate]>"
- Entrez un Log Level, peu importe lequel
11. Cliquer sur Run tout en haut de l'écran
12. Publiez le projet
13. Allez dans Orchestrator > My Workspace > Processes
14. Cliquez sur "Play/start a job", puis "Start"
15. Une fois le job executé, cliquez sur "View logs"
### Questions
1. Comment débugger pas à pas ? Rajoutez une erreur dans un step et reproduisez-la
a. Cliquez sur le step "Get latest exchange rate via HTTP Request" et enlevez "api" de l'URL
b. Cliquez sur run step-by-step
c. Next step
d. Erreur sur l'URI
e. Si on change la request method (au lieu de l'URL) à DELETE, c'est moins explicite...
2. Changez le taux de change de USD=>EUR à USD=>CHF. Pour réaliser ceci, créez un nouvel argument "Currency" et utilisez le dans la requête HTTP.
<[Currency]> est un argument, à créer dans le volet de droite, cliquez sur le bouton "+" dans les arguments. Donnez le nom "Currency", laissez la Direction et le Type par défaut, et mettez une valeur par défaut "EUR" dans le dernier champ. Save.
`string.Format("https://api.exchangerate.host/latest?base=USD&symbols={0}", Currency)`
Adaptez aussi l'activité log : entrez le message "Le taux de change courant USD=><[Currency]> est:<[CurrentExchangeRate]>"
3. Ajoutez une activity pour envoyer un email à un utilisateur, par exemple
Ajoutez une activité Google Workspace: Send Email
Subject : `string.Format("Taux de change USD=>{0}", Currency)`
Body : `string.Format("Taux de change USD=>{0}: {1}", Currency, CurrentExchangeRate)`
4. Changez le trigger manuel pour un trigger event : l'utilisateur aimerait recevoir la réponse
Il est possible de créer un trigger automatique, comme :

Mais comment faire en sorte que le process/job tourne tout le temps ?
L'autre approche est d'aller dans le menu Orchestrator > Automations > Triggers, mail il faudrait provisionner une machine... :
