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":

adding choice

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.

deleting choice

Ejemplo

Considere la integración a continuación:

eip choice example

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 endpoint hello. 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}'
Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]