How to Catch and Handle DMN Errors in Camunda?

Bonjour,

Est-ce que quelqu’un a déjà mis en place la capture des erreurs provenant de DMN dans Camunda via un gestionnaire d’erreurs (Error Boundary Event, Error End Event ou autre mécanisme) ?

Si oui, quelle configuration avez-vous utilisée côté BPMN/DMN pour propager et intercepter correctement ces erreurs ?

Je suis particulièrement intéressé par les retours d’expérience concernant la gestion des erreurs DMN et les paramètres nécessaires pour qu’elles soient capturées par le processus.

Merci d’avance pour vos retours.

========== Camunda ==========

camunda:
bpm:
auto-deployment-enabled: false
database:
type: postgres
schema-update: true
history-level: audit
datasource:
driver-class-name: ${DB_DRIVER:org.postgresql.Driver}
url: ${DB_URL:jdbc:postgresql://127.0.0.1:5431/nspbpmdb}
username: ${DB_USERNAME:postgres}
password: ${DB_PASSWORD:root}
hikari:
pool-name: CAMUNDA-NSP-HIKARI-POOL
max-lifetime: 600000
idle-timeout: 120000
keepalive-time: 60000
connection-timeout: 30000
maximum-pool-size: 10
minimum-idle: 2
connection-test-query: SELECT 1
validation-timeout: 3000
job-executor:
enabled: false
wait-time-in-millis: 500
max-jobs-per-acquisition: 16
lock-time-in-millis: 1200000
admin-user:
id: ${CAMUNDA_ADMIN_USER:admin}
password: ${CAMUNDA_ADMIN_PASSWORD:admin}
firstName: Admin
lastName: User

========== ORD Engine ==========

ord:
bascule:
default-delay-seconds: 45
max-delay-seconds: 7200
active: ${ORD_ACTIVE:false}
engine:
datasource:
hikari:
pool-name: CAMUNDA-ORD-HIKARI-POOL
max-lifetime: 600000
idle-timeout: 120000
keepalive-time: 60000
connection-timeout: 30000
maximum-pool-size: 5
minimum-idle: 1
connection-test-query: SELECT 1
validation-timeout: 3000
job-executor:
wait-time-in-millis: 5000
max-jobs-per-acquisition: 8
lock-time-in-millis: 1200000

I don’t think that the DMN engine throws any BPMN errors, so I’m not sure how you would catch them.
Remember that BPMN errors are to capture the expectable flow issues.

Hi,

Thanks for your reply.

I know that, by default, a DMN evaluation does not throw a BPMN Error that can be caught by an Error Boundary Event or an Error End Event.

What I’m actually looking for is whether anyone has implemented a workaround or a custom solution to handle DMN failures. For example:

  • Using an execution/task listener after the Business Rule Task.

  • Wrapping the DMN evaluation in a JavaDelegate and converting exceptions into BPMN Errors.

  • Using parse listeners or engine plugins.

  • Any other mechanism to detect unexpected DMN evaluation failures and route the process to an error-handling path…

I’m interested in real-world experiences rather than the standard behavior documented by Camunda.