BPMS Feign клієнт

Ієрархія клієнтів

Feign клієнти використовуются для простого доступу до ендпоінтів камунди - Camunda REST API

feign-client
  • BaseFeignClient - базовий клієнт з базовими налаштуваннями на error decoder

  • TaskRestClient - клієнт який надає доступ до ресурсу /api/task (задачі користувача)

  • ProcessDefinitionRestClient - клієнт який надає доступ до ресурсу /api/process-definition (бізнес-процеси)

  • ProcessInstanceRestClient - клієнт який надає доступ до ресурсу /api/process-instance (екземпляри бізнес-процесу)

Декодинг помилок

Декодинг помилок в BPMS Feign клієнті виконуєься на базі аннотацій

Ієрархія помилок

feign-client-exception
  • ValidationException, SystemException і RestSystemException - базові виключення з ddm-actuator-error-handling

  • RestSystemException містить httpStatus для exception handling на рівні користувача клієнту

Декодинг HTTP статусів на виключення
  • 400 → BadRequestException

  • 401 → AuthenticationException

  • 403 → AuthorizationException

  • 404 → NotFoundException

    • process-definition 404 → ProcessDefinitionNotFoundException

    • process-instance 404 → ProcessInstanceNotFoundException

    • process-instance/variable 404 → ProcessInstanceVariableNotFoundException

    • task 404 → TaskNotFoundException

  • 422 → ClientValidationException

  • 500 → InternalServerErrorException

  • 502, 503, 504 → CamundaCommunicationException

Реалізація декодингу помилок

feign-client-decoder
  • BpmsResponseDecoder - перевантажує метод decode для того щоб на 404 відповідь повертати розшифровану відповідь замість пустої

  • BpmsAnnotationErrorDecoder - містить в собі список всіх клієнтів для того, щоб згенерувати список AnnotationErrorDecoder та зформувати з них ланцюг з ErrorDecoder за замовчуванням в кінці (який повертає FeignException). Таким чином якщо у нас 2 клієнти Client1, Client2 та Client3 то збудований ланцюг буде такий:

    1. Сlient3Decoder з Сlient2Decoder як декодер помилок за замовчуванням

    2. Сlient2Decoder з Сlient1Decoder як декодер помилок за замовчуванням

    3. Сlient1Decoder з DefaultErrorDecoder як декодер помилок за замовчуванням