Ordonnanceur externe (automate)
(→Déclencher la tâche) |
(→Récupérer le résultat) |
||
Ligne 63 : | Ligne 63 : | ||
==Récupérer le résultat== | ==Récupérer le résultat== | ||
+ | La récupération du résultat est forcément asynchrone. | ||
+ | |||
+ | L'ordonnanceur doit réaliser un GET sur le flux REST du journal de l'automate : | ||
+ | |||
+ | <pre> | ||
+ | # This is because my test server certificate is self signed | ||
+ | [System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true } | ||
+ | |||
+ | # line has been splitted for formatting | ||
+ | Invoke-WebRequest -Uri https://pc100301/sdata/admin/schedulerLogs?where=jobID%20eq%20 2 | ||
+ | -Headers @{"Authorization"="Bearer 16000000C20E570115009001F700000022A2.............670582A44094EE57C02A4F71F"} -Method GET | ||
+ | </pre> | ||
+ | |||
+ | Le résultat contient le compte rendu d'exécution. | ||
+ | |||
+ | Une seconde requête peut être réalisée pour récupérer le résultat détaillé de la tâche de traitement : | ||
+ | |||
+ | <pre> | ||
+ | </pre> | ||
[[category:Automate]] | [[category:Automate]] | ||
[[category:Latest]] | [[category:Latest]] |
Version du 4 mai 2015 à 18:06
Sommaire |
Il est possible d'utiliser un ordonnanceur externe pour déclencher des tâches à partir d'un automate métier.
Principe
- 1. L'ordonnanceur POST un message sur le service 1000
- 2. Le message est empilé dans une file d'attente
- 3. L'automate est déclenché
- 4. Le message est dépilé
- 6. Le traitement est exécuté
- 8. Le résultat est stocké dans le journal de l'automate
- 9. L'ordonnanceur effectue un GET sur le service REST du journal de l'automate
- 10. L'ordonnanceur obtient le résultat du traitement
Pour pouvoir interroger le service 1000 et obtenir le résultat du traitement un identifiant de traitement est véhiculé dans le message de traitement, cet identifiant sera stocké dans le journal et utilisé comme clé pour obtenir le résultat.
Près requis
Ordonnanceur
L'ordonnanceur doit être capable de :
- Poster un message REST sur serveur HTTP.
- Interroger un service REST pour retrouver le compte rendu d'exécution.
Si l’ordonnanceur n'est pas capable d'exécuter des actions HTTP vous pouvez réaliser ces actions en PowerShell et les exécuter par l'ordonnanceur.
Service 1000
- Utiliser une file d'attente pour stocker les messages à traiter.
- Utiliser un automate déclenché par un évènement file d'attente et exécutante une tâche consommation de message de traitement.
Ce type de fonctionnement est décrit dans cet exemple.
Déclencher la tâche
Le déclenchement de la tâche se fait en postant un message sur le service 1000
Exemple :
# prepare a payload with parameters $postParams = @{ "message.action"="importdip"; "message.accessToken"="16000000C20E570115009001F700000...............670582A44094EE57C02A4F71F"; "message.jobID"="2"; "message.reference"="my reference"; "import.name"="testimport-wfclassea.dip"; "content"=$fileContentEncoded } # This is because my test server certificate is self signed [System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true } # line has been splitted for formatting Invoke-WebRequest -Uri https://xxxxx/xxx/server/rpc.l1000/rest/queue.inqueue?queueName=DBQUEUE1 -Headers @{"Authorization"="Bearer 16000000C20E570115009001F700000022A.............44094EE57C02A4F71F"} -Method POST -Body $postParams
Dans le message les champs libres suivant peuvent être utilisé comme identifiant du job :
- message.jobID
- Identifiant de job
- message.reference
- Référence libre
Récupérer le résultat
La récupération du résultat est forcément asynchrone.
L'ordonnanceur doit réaliser un GET sur le flux REST du journal de l'automate :
# This is because my test server certificate is self signed [System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true } # line has been splitted for formatting Invoke-WebRequest -Uri https://pc100301/sdata/admin/schedulerLogs?where=jobID%20eq%20 2 -Headers @{"Authorization"="Bearer 16000000C20E570115009001F700000022A2.............670582A44094EE57C02A4F71F"} -Method GET
Le résultat contient le compte rendu d'exécution.
Une seconde requête peut être réalisée pour récupérer le résultat détaillé de la tâche de traitement :