Choice
El EIP Choice enruta mensajes basándose en condiciones, similar a una estructura "if-else". Evalúa las condiciones especificadas y dirige el mensaje a la ruta correspondiente.
Configuración del EIP Choice en el Diagram
Para configurar un Choice en una integración en la pestaña Diagram, sigue estos pasos:
-
Haga clic en +Add Step en el canvas.
-
Seleccione la pestaña EIPs.
-
Seleccione el EIP Choice. Puede usar la herramienta de búsqueda para localizarlo.
Al agregar un "Choice", se crearán automáticamente dos ramificaciones en el canvas: When y Otherwise.
Puede seguir agregando steps después de las ramificaciones, sin límite en la cantidad de steps subsecuentes.
Es posible agregar nuevas condiciones a las ramificaciones "When" y "Otherwise", pero cada "Choice" solo puede tener una ramificación "Otherwise". |
La siguiente animación muestra la adición del EIP Choice al canvas y la configuración de la ramificación "when" para verificar si el cuerpo del mensaje contiene la palabra "success":
Parámetros del EIP Choice
Los parámetros a continuación deben ser proporcionados al configurar el componente:
Parámetro | Descripción | Tipo |
---|---|---|
When |
Define una condición para el procesamiento de mensajes, actuando como el bloque "if". |
Lista |
Otherwise |
Define la ruta predeterminada, utilizada cuando ninguna de las condiciones especificadas en "When" se cumple (funciona como el bloque "else"). |
OtherwiseDefinition |
Precondition |
Permite evaluar las condiciones definidas en las ramas ("When" y "Otherwise") durante la inicialización de la ruta, en lugar de evaluarlas dinámicamente en tiempo de ejecución. |
Booleano |
Eliminando el EIP Choice o sus ramificaciones
Existen tres escenarios para eliminar el EIP Choice y sus ramificaciones:
-
Eliminación de una ramificación "When": todos los steps subsecuentes serán eliminados de la integración.
-
Eliminación de una ramificación "Otherwise": todos los steps subsecuentes serán eliminados de la integración.
-
Eliminación del EIP Choice: tanto las ramificaciones "When" como "Otherwise", así como todos los steps subsecuentes, serán eliminados de la integración.
Ejemplo
Considere la integración a continuación:
El siguiente fragmento muestra el código YAML correspondiente a la integración:
- from:
id: rest-2204314941
uri: rest:get:hello
steps:
- choice:
id: choice-3079603680
when:
- id: when-4223458332
simple: ${body} contains 'success'
steps:
- log:
id: log-4287304427
message: 'The call was been successful: ${body}'
- id: when-1122729813
simple: ${body} contains 'warning'
steps:
- log:
id: log-3011575176
message: 'The call returned a warning: ${body}'
- id: when-1140746842
simple: ${body} contains 'error'
steps:
- log:
id: log-2721128918
message: 'The call found an error: ${body}'
otherwise:
id: otherwise-3980042695
steps:
- log:
id: log-498737456
message: 'The call returned an unknown response: ${body}'
Ahora, consulte los detalles:
-
El flujo comienza con una solicitud
GET
al endpointhello
. La URI es el punto de entrada del flujo, que recibe la respuesta de la solicitud en el cuerpo del mensaje (${body}
).
Choice
-
El siguiente paso es un Choice, que se utiliza para tomar decisiones basadas en condiciones. Camel evalúa las condiciones y ejecuta los pasos correspondientes a la condición que sea verdadera.
When
-
Primera condición (when): verifica si el cuerpo de la respuesta (
${body}
) contiene la palabra "success". Si es verdadero, se realiza lo siguiente:-
Log: registra un mensaje indicando que la llamada fue exitosa, incluyendo el cuerpo de la respuesta.
-
when:
- id: when-4223458332
simple: ${body} contains 'success'
steps:
- log:
id: log-4287304427
message: 'The call has been successful: ${body}'
-
Segunda condición (when): verifica si el cuerpo de la respuesta contiene la palabra "warning". Si es verdadero, se realiza lo siguiente:
-
Log: registra un mensaje indicando que la llamada devolvió una advertencia, incluyendo el cuerpo de la respuesta.
-
- id: when-1122729813
simple: ${body} contains 'warning'
steps:
- log:
id: log-3011575176
message: 'The call returned a warning: ${body}'
-
Tercera condición (when): verifica si el cuerpo de la respuesta contiene la palabra "error". Si es verdadero, se realiza lo siguiente:
-
Log: registra un mensaje indicando que la llamada encontró un error, incluyendo el cuerpo de la respuesta.
-
- id: when-1140746842
simple: ${body} contains 'error'
steps:
- log:
id: log-2721128918
message: 'The call found an error: ${body}'
Otherwise
-
Si ninguna de las condiciones anteriores se cumple, se ejecuta el paso Otherwise, es decir, si el cuerpo de la respuesta no contiene "success", "warning" o "error".
-
Log: registra un mensaje indicando que la llamada devolvió una respuesta desconocida, incluyendo el cuerpo de la respuesta.
-
otherwise:
id: otherwise-3980042695
steps:
- log:
id: log-498737456
message: 'The call returned an unknown response: ${body}'
Share your suggestions with us!
Click here and then [+ Submit idea]