@@ -51,9 +51,8 @@ func (fb *flowBuilder) finishCustomErrorHandler(activityID model.ID, activityX i
5151 return
5252 }
5353 if len (eh .Body ) > 0 {
54- errorY := fb .posY + VerticalSpacing
5554 mergeID := fb .addErrorHandlerFlow (activityID , activityX , eh .Body )
56- fb .handleErrorHandlerMergeWithSkip (mergeID , activityID , errorY , outputVar )
55+ fb .handleErrorHandlerMergeWithSkip (mergeID , activityID , outputVar )
5756 return
5857 }
5958 fb .registerEmptyCustomErrorHandlerWithSkip (activityID , eh , outputVar )
@@ -380,6 +379,22 @@ func statementsReferenceVar(stmts []ast.MicroflowStatement, varName string) bool
380379 return false
381380}
382381
382+ func callArgumentVarRefs (args []ast.CallArgument ) []string {
383+ var refs []string
384+ for _ , arg := range args {
385+ refs = append (refs , exprVarRefs (arg .Value )... )
386+ }
387+ return refs
388+ }
389+
390+ func templateParamVarRefs (params []ast.TemplateParam ) []string {
391+ var refs []string
392+ for _ , param := range params {
393+ refs = append (refs , exprVarRefs (param .Value )... )
394+ }
395+ return refs
396+ }
397+
383398func errorHandlerStatementVarRefs (stmt ast.MicroflowStatement ) []string {
384399 var refs []string
385400 switch s := stmt .(type ) {
@@ -390,9 +405,7 @@ func errorHandlerStatementVarRefs(stmt ast.MicroflowStatement) []string {
390405 case * ast.LogStmt :
391406 refs = append (refs , exprVarRefs (s .Node )... )
392407 refs = append (refs , exprVarRefs (s .Message )... )
393- for _ , param := range s .Template {
394- refs = append (refs , exprVarRefs (param .Value )... )
395- }
408+ refs = append (refs , templateParamVarRefs (s .Template )... )
396409 case * ast.ShowMessageStmt :
397410 refs = append (refs , exprVarRefs (s .Message )... )
398411 for _ , arg := range s .TemplateArgs {
@@ -426,35 +439,71 @@ func errorHandlerStatementVarRefs(stmt ast.MicroflowStatement) []string {
426439 }
427440 refs = append (refs , exprVarRefs (s .Where )... )
428441 case * ast.CallMicroflowStmt :
429- for _ , arg := range s .Arguments {
430- refs = append ( refs , exprVarRefs ( arg . Value ) ... )
431- }
442+ refs = append ( refs , callArgumentVarRefs ( s .Arguments ) ... )
443+ case * ast. CallNanoflowStmt :
444+ refs = append ( refs , callArgumentVarRefs ( s . Arguments ) ... )
432445 case * ast.CallJavaActionStmt :
433- for _ , arg := range s .Arguments {
434- refs = append (refs , exprVarRefs (arg .Value )... )
435- }
446+ refs = append (refs , callArgumentVarRefs (s .Arguments )... )
447+ case * ast.CallJavaScriptActionStmt :
448+ refs = append (refs , callArgumentVarRefs (s .Arguments )... )
449+ case * ast.CallWebServiceStmt :
450+ refs = append (refs , exprVarRefs (s .Timeout )... )
451+ case * ast.ExecuteDatabaseQueryStmt :
452+ refs = append (refs , callArgumentVarRefs (s .Arguments )... )
453+ refs = append (refs , callArgumentVarRefs (s .ConnectionArguments )... )
454+ case * ast.CallExternalActionStmt :
455+ refs = append (refs , callArgumentVarRefs (s .Arguments )... )
436456 case * ast.RestCallStmt :
437457 refs = append (refs , exprVarRefs (s .URL )... )
438- for _ , param := range s .URLParams {
439- refs = append (refs , exprVarRefs (param .Value )... )
440- }
458+ refs = append (refs , templateParamVarRefs (s .URLParams )... )
441459 for _ , header := range s .Headers {
442460 refs = append (refs , exprVarRefs (header .Value )... )
443461 }
462+ if s .Auth != nil {
463+ refs = append (refs , exprVarRefs (s .Auth .Username )... )
464+ refs = append (refs , exprVarRefs (s .Auth .Password )... )
465+ }
444466 if s .Body != nil {
445467 refs = append (refs , exprVarRefs (s .Body .Template )... )
446- for _ , param := range s .Body .TemplateParams {
447- refs = append (refs , exprVarRefs (param .Value )... )
448- }
468+ refs = append (refs , templateParamVarRefs (s .Body .TemplateParams )... )
449469 if s .Body .SourceVariable != "" {
450470 refs = append (refs , s .Body .SourceVariable )
451471 }
452472 }
453473 refs = append (refs , exprVarRefs (s .Timeout )... )
474+ case * ast.SendRestRequestStmt :
475+ for _ , param := range s .Parameters {
476+ refs = append (refs , sourceAttributeVarRefs (param .Expression )... )
477+ }
478+ if s .BodyVariable != "" {
479+ refs = append (refs , s .BodyVariable )
480+ }
481+ case * ast.ImportFromMappingStmt :
482+ if s .SourceVariable != "" {
483+ refs = append (refs , s .SourceVariable )
484+ }
485+ case * ast.ExportToMappingStmt :
486+ if s .SourceVariable != "" {
487+ refs = append (refs , s .SourceVariable )
488+ }
489+ case * ast.TransformJsonStmt :
490+ if s .InputVariable != "" {
491+ refs = append (refs , s .InputVariable )
492+ }
454493 case * ast.MfCommitStmt :
455494 refs = append (refs , s .Variable )
456495 case * ast.DeleteObjectStmt :
457496 refs = append (refs , s .Variable )
497+ case * ast.DownloadFileStmt :
498+ refs = append (refs , s .FileDocument )
499+ case * ast.ValidationFeedbackStmt :
500+ if s .AttributePath != nil {
501+ refs = append (refs , s .AttributePath .Variable )
502+ }
503+ refs = append (refs , exprVarRefs (s .Message )... )
504+ for _ , arg := range s .TemplateArgs {
505+ refs = append (refs , exprVarRefs (arg )... )
506+ }
458507 case * ast.AddToListStmt :
459508 refs = append (refs , s .Item , s .List )
460509 case * ast.RemoveFromListStmt :
@@ -514,19 +563,18 @@ func (fb *flowBuilder) addErrorHandlerFlow(sourceActivityID model.ID, sourceX in
514563
515564 // Build error handler activities
516565 errBuilder := & flowBuilder {
517- posX : errorX ,
518- posY : errorY ,
519- baseY : errorY ,
520- spacing : HorizontalSpacing ,
521- returnType : fb .returnType ,
522- hasReturnValue : fb .hasReturnValue ,
523- varTypes : fb .varTypes ,
524- declaredVars : fb .declaredVars ,
525- measurer : fb .measurer ,
526- backend : fb .backend ,
527- hierarchy : fb .hierarchy ,
528- restServices : fb .restServices ,
529- isNanoflow : fb .isNanoflow ,
566+ posX : errorX ,
567+ posY : errorY ,
568+ baseY : errorY ,
569+ spacing : HorizontalSpacing ,
570+ returnType : fb .returnType ,
571+ varTypes : fb .varTypes ,
572+ declaredVars : fb .declaredVars ,
573+ measurer : fb .measurer ,
574+ backend : fb .backend ,
575+ hierarchy : fb .hierarchy ,
576+ restServices : fb .restServices ,
577+ isNanoflow : fb .isNanoflow ,
530578 }
531579
532580 var lastErrID model.ID
@@ -571,16 +619,16 @@ func (fb *flowBuilder) addErrorHandlerFlow(sourceActivityID model.ID, sourceX in
571619
572620// handleErrorHandlerMerge creates an EndEvent for error handlers that want to merge back.
573621// This is a fallback until full merge support is implemented. Caller should pass
574- // the ID returned by addErrorHandlerFlow and the error handler Y position.
575- func (fb * flowBuilder ) handleErrorHandlerMerge (lastErrID model.ID , activityID model.ID , errorY int ) {
576- fb .handleErrorHandlerMergeWithSkip (errorHandlerTail {id : lastErrID }, activityID , errorY , "" )
622+ // the tail returned by addErrorHandlerFlow and the error handler Y position.
623+ func (fb * flowBuilder ) handleErrorHandlerMerge (tail errorHandlerTail , activityID model.ID , errorY int ) {
624+ _ = errorY
625+ fb .handleErrorHandlerMergeWithSkip (tail , activityID , "" )
577626}
578627
579- func (fb * flowBuilder ) handleErrorHandlerMergeWithSkip (tail errorHandlerTail , activityID model.ID , errorY int , skipVar string ) {
628+ func (fb * flowBuilder ) handleErrorHandlerMergeWithSkip (tail errorHandlerTail , activityID model.ID , skipVar string ) {
580629 if tail .id == "" {
581630 return // No merge needed (error handler terminates with RETURN or RAISE ERROR)
582631 }
583- _ = errorY
584632 fb .queueActivePendingErrorHandler ()
585633 fb .errorHandlerSource = activityID
586634 fb .errorHandlerTailFrom = tail .id
0 commit comments