From 92e4a48e74d8666e0ce8b22916c118b3635144e9 Mon Sep 17 00:00:00 2001 From: apidbere Date: Fri, 18 Aug 2023 17:41:34 +0200 Subject: [PATCH] Modified validTransitionAndEnd func to skip validation for compensation states --- model/workflow_validator.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/model/workflow_validator.go b/model/workflow_validator.go index 7d94d1f..4fa3b09 100644 --- a/model/workflow_validator.go +++ b/model/workflow_validator.go @@ -201,8 +201,9 @@ func transitionStructLevelValidationCtx(ctx ValidatorContext, structLevel valida func validTransitionAndEnd(structLevel validator.StructLevel, field any, transition *Transition, end *End) { hasTransition := transition != nil isEnd := end != nil && (end.Terminate || end.ContinueAs != nil || len(end.ProduceEvents) > 0) // TODO: check the spec continueAs/produceEvents to see how it influences the end + usedForCompensation := field.(BaseState).UsedForCompensation - if !hasTransition && !isEnd { + if !hasTransition && !isEnd && !usedForCompensation { structLevel.ReportError(field, "Transition", "transition", val.TagRequired, "") } else if hasTransition && isEnd { structLevel.ReportError(field, "Transition", "transition", val.TagExclusive, "")