---
# System prepended metadata

title: Untitled

---


-------------------------------------------
> [name=Alexis de Guibert]
- [x] > [color=#404ba0]test[](https://)[](https://)
## EXO SIMPLES:
[trsf](https://)
- Creer un service prenant en entrée un string et retournant un string disant si l'input est un palindrome ou non. 
Exemple de palindrome : kayak, 12321...

- Faire un service si dans un string toute parenthèse ouvrante se ferme bien. (très simple)

- Prendre un nombre et le multiplier par son inverse.

- Faire la somme en alternance positif et négatif des nombres d'une liste passée en entrée (On suppose que la liste ne contient que des nombres positifs). Générer une erreur si la liste n'est pas au bon format.

---------------------------------------

## EXO PLUS SYMPA

Banque

```json

{
  "comptes" : [
    {
      "referenceUnique":"1",
      "nom" : "Alexis",
      "prenom": "Leduc",
      "argentDispo": "300",
      "decouvertAutorise": "150"
    },
    {
        "referenceUnique":"2",
      "nom" : "Paulinien",
      "prenom": "Leroi",
      "argentDispo": "300",
      "decouvertAutorise": "250"
    },
    {
        "referenceUnique":"3",
      "nom" : "Romain",
      "prenom": "Leprince",
      "argentDispo": "300",
      "decouvertAutorise": "350"
    }],
    "logEnErreur":"true",
    "nbEmploye":"1"
}
```
### exo1) (possible de skip dans un premier temps) Creer un service "initBanque" permettant de Lire le fichier json fourni et retournant un document webMethods comprenant les infos du fichier
- indice : 
1) tu peux créé un Document webMethods "Compte" qui a plusieurs string dedans : nom, prenom... Une fois ce document créé tu peux en créer un s'appelant "Banque" contenant une liste de "Comtpe" que tu appelera "comptes". En plus de cette liste la banque aura une certaine somme d'argent disponible, de ce fait tu ajouteras un string "argentDansBanque" dans ton document Banque.
2) Le service readFile existe dans wmPub. 
3) Le service pub.json:jsonStringToDocument existe également.


Note : je ne sais pas si tu l'as vu pendant ta formation mais tu peux réaliser un foreachmaping. Intéressant de te renseigner dessus ca va te permettre de mapper deux documents différents ensemble :)

SKIP: Pour skip cette partie instancier directement le document webmethods et placez le en input d'un service.
Dans la suite les indices sont moins présents

### exo2) Creer un service prenant une referenceUnique et un compte en entrée et retournant en sortie un resultat comprenant le message suivant : "la personne {nom}{prenom} a {argent} euros sur son compte" si l'input "typeAction" (de type string) "info" est passé en entrée.
indice : variable substitution

### exo3) Ajouter au service precedent le cas ou "typeAction" vaut "transfert" et retournant : "la personne {nom}{prenom} a transferé {somme} euros sur le compte de M. {nom}{prenom}".
indice : réfléchis aux inputs nécessaire à ce retour
Les inputs du service peuvent être paramétrées de façon à ce qu'ils ne soient pas obligatoires.
Je précise pas les entrées tu peux les trouver seul.

### exo 4) Toujours dans le service précédent si "typeAction" vaut "erreurSignale" fficher dans les logs de l'is (flow>debugLog), qu'une anomalie se produit avec un message du style "une opération non conforme se produit"


### exo5) Creer un service "transfererArgent" permettant de transferer de l'argent entre deux compte. Si la banque est de type "LogEnErreur" lorsqu'une action non autorisée se produit appeler le service précédent avec "typeAction" = erreurSignale. Une erreur étant le fait qu'une personne veuille débiter plus d'argent qu'autorisé sur son compte.
*

indices:
Se poser les questions suivantes
1) Quelles sont les entrées ? 
2) Qu'est ce que j'ai a faire exactement ? supprimer l'argent d'un compte et l'ajouter a un autre. Comment faire cela ? 
3) Faire un schéma simple sur feuille, retraçant la logique.
4) Que doit avoir le service en entrée ? 
- banque + la référence unique des deux comptes. Bien nommer les entrées du stle: compteDebiteur, compteCrediteur. Il faudra également connaitre la comme débitée.
5) penser à vérifier que la personne débitant a assez d'argent sur son comte ou du moins a un découvert autorisé lui permettant le transfert. (quel type de BRANCH utiliser pour cela ?)
6) 
### Exo6) Lorsqu'une opération non autorisée se produit (transfert non autorisé) retourner une erreur comprenant un message d'erreur explicite retraçant la provenance du débiteur ne pouvant pas débiter la somme due.
Bien catcher cette erreur.


### Exo7) Faire en sorte que le service mette à jour automatiquement la banque lorsque une opération banquaire est effectuée. (écrire dans le fichier)

### BONUS: Faire en sorte que le tout soit accessible de façon sécuriée. Comprenant la connexion d'utilisateurs, bien évidemment cryptée et à distance. Les données bancaires doivent rester cohérentes et un fichier de log doit être génénéré de façon asynchrone mais non parllalele. Retraçant chaque opération banquaire. (Ca va pas trop la pression ? ;) )


