Serverless Workflow s'intègre à plusieurs services Alibaba Cloud pour les utiliser comme unités d'exécution dans les étapes de tâche. Les intégrations de service se définissent dans le langage de définition de flux (FDL). Dans une étape Task, utilisez resourceArn pour spécifier le service cible et pattern pour définir le mode d'intégration.
Pour la liste des services Alibaba Cloud pris en charge, consultez la section Services Alibaba Cloud pris en chargeServices Cloud intégrés.
Modes d'intégration
Serverless Workflow prend en charge trois modes d'intégration.
-
Mode requête/réponse : Serverless Workflow appelle un service tiers et passe à l'étape suivante dès réception d'une réponse HTTP. Il s'agit du mode d'intégration par défaut.
Dans une étape FDL, utilisez
resourceArnpour spécifier le service cible etpattern: requestResponsepour définir le mode d'intégration. Ce paramètre est facultatif. S'il est omis, Serverless Workflow utilise le mode requête/réponse par défaut et passe immédiatement à l'étape suivante après le retour de l'appel d'API. L'exemple suivant utilise un sous-flux où Serverless Workflow est le service intégré.version: v1 type: flow steps: - type: task name: testSubflow resourceArn: acs:fnf:::flow/flowABC # Describes the child flow. pattern: requestResponse # Describes the integration mode: default (request/response) mode. - type: pass name: dummyDans cet exemple, l'étape
testSubflowdéclenche le fluxflowABC. L'exécution passe ensuite à l'étape suivante,dummy, tandis que le fluxflowABCpeut encore être en cours d'exécution. -
Mode synchrone : Serverless Workflow s'intègre aux services qui proposent une API asynchrone pour démarrer une tâche. Après soumission de la tâche, Serverless Workflow attend sa fin avant de passer à l'étape suivante.
Les services compatibles avec le mode synchrone exposent généralement une API asynchrone pour démarrer une tâche. Serverless Workflow soumet la tâche et attend sa terminaison avant de passer à l'étape suivante.
Dans une étape FDL, utilisez
resourceArnpour spécifier le service cible etpattern: syncpour définir le mode d'intégration. L'exemple suivant utilise un sous-flux où Serverless Workflow est le service intégré.version: v1 type: flow steps: - type: task name: testTask resourceArn: acs:fnf:::flow/flowABC # Describes the child flow. pattern: sync # Describes the integration mode: synchronous. - type: pass name: dummyDans cet exemple, lorsque l'étape
testTasks'exécute, elle déclenche le fluxflowABC. Le workflow ne passe à l'étape suivante,dummy, qu'une fois le fluxflowABCterminé. -
Mode d'attente de rappel : Serverless Workflow appelle un service et transmet un jeton de tâche. Le flux reste en pause jusqu'à la réception d'une instruction de rappel incluant ce jeton.
Dans une étape FDL, utilisez
resourceArnpour spécifier le service cible etpattern: waitForCallbackpour définir le mode d'intégration. L'exemple suivant utilise un sous-flux où Serverless Workflow est le service intégré.version: v1 type: flow steps: - type: task name: testSubflow resourceArn: acs:fnf:::flow/flowABC # Describes the child flow. pattern: waitForCallback # Describes the integration mode: wait-for-callback. - type: pass name: dummyDans cet exemple, lorsque l'étape
testSubflows'exécute, elle déclenche le fluxflowABC. Le flux reste en pause jusqu'à la réception d'un rappel via l'APIReportTaskSucceedouReportTaskFailed. Une fois le rappel traité, le flux passe à l'étapedummy. Entre-temps, le fluxflowABCpeut déjà être terminé ou toujours en cours d'exécution.
Objet de contexte
L'objet de contexte est un objet JSON interne disponible au sein d'une instance d'exécution de flux. Il contient des informations sur le flux et ses étapes. Utilisez inputMappings pour mapper les données de contexte à des variables spécifiques. L'exemple suivant illustre la structure de l'objet de contexte.
"context": {
"flow": {
// The unique ID and name of the current flow. Both are strings.
"id": "val1",
"name": "val2"
},
"execution": {
// The name of the current execution.
"name": "val3"
},
"step": {
// The name of the current step.
"name": "val4",
// The event ID of the current step.
"eventId": "val5",
// The current loop iteration number. This is available in a foreach step.
"IterationIndex": "val6"
},
"task": {
// The identifier for this step. It is a string and is available in the wait-for-callback mode.
"token": "val7"
}
}
Par exemple, lors de l'intégration du service Serverless Workflow, vous devrez peut-être récupérer les informations du flux parent et le taskToken de l'étape appelante dans un sous-flux pour effectuer un rappel. L'exemple suivant montre comment récupérer ces champs.
...
inputMappings:
- target: current_flow_name
source: $context.flow.name
- target: current_execution_name
source: $context.execution.name
- target: current_step_task_token
source: $context.task.token
Services Cloud intégrés
|
Solution |
requestResponse |
sync |
waitForCallback |
|
Function Compute (FC) |
Prise en charge |
Non pris en charge |
Non pris en charge |
|
Déclencheur de file d'attente Simple Message Queue (formerly MNS) |
Prise en charge |
Non pris en charge |
Pris en charge |
|
Déclencheur de rubrique Simple Message Queue (formerly MNS) |
Prise en charge |
Non pris en charge |
Prise en charge |
|
Serverless Workflow (SWF) |
Prise en charge |
Prise en charge |
Pris en charge |