Uploaded image for project: 'camunda BPM'
  1. camunda BPM
  2. CAM-1410

Intermediate throwing compensation with activityRef does not work for task activities

    • Icon: Bug Report Bug Report
    • Resolution: Fixed
    • Icon: L3 - Default L3 - Default
    • 7.1.0, 7.1.0-alpha2
    • None
    • engine

      The intermediate throw compensation event provides the activityRef attribute. The attribute allows to reference an activity which should be compensated. NOT the compensation handler.

      This currently works fine if the activityRef references a scope activity (ie. embedded subprocess) but is broken for task activities (like Service tasks, User tasks etc.).

      The problem is that the CompensationEventSubscription.getActivityId is used for resolving subscriptions. this is broken since this property references the id of the compensation handler and not the id of the scope to be compensated. the fact that the CompensationEventSubscription.getActivityId references the compensation handler is fine (for internal engine purposes), the bug occurs since we query with the id of the scope to be compensated.

      See failing testcase
      org.camunda.bpm.engine.test.bpmn.event.compensate.CompensateEventTest.FAILING_testCompensateActivityRef()
      ------
      Spec page 294
      For an End Event: The Activity to be compensated MAY be supplied. If an Activity is not supplied, then the compensation is broadcast to all completed Activities in the current Sub- Process (if present), or the entire Process instance (if at the global level).
      ------

        This is the controller panel for Smart Panels app

            [CAM-1410] Intermediate throwing compensation with activityRef does not work for task activities

            Bernd Ruecker created issue -
            Robert Gimbel made changes -
            Fix Version/s New: 7.1.0 [ 12891 ]
            Robert Gimbel made changes -
            Attachment New: screenshot-1.jpg [ 17485 ]
            Daniel Meyer made changes -
            Description Original: Wenn man ein activityRef beim throw compensation angibt muss sich das bei uns auf die KompensationsAktivität beziehen (roter Pfeil) - laut Standard aber denke eher auf die zu kompensierende Aktivität (siehe grüner Pfeil). Unten der Auszug aus der Spec.

            ------
            Spec page 294
            For an End Event: The Activity to be compensated MAY be supplied. If an Activity is not supplied, then the compensation is broadcast to all completed Activities in the current Sub- Process (if present), or the entire Process instance (if at the global level).
            ------
            New: The intermediate throw compensation event provides the activityRef attribute. The attribute allows to reference an activity which should be compensation. NOT the compensation handler.

            This currently works fine if the activityRef references a scope activity (ie. embedded subprocess) but is broken for task activities (like Service tasks, User tasks etc.).

            The problem is that the CompensationEventSubscription.getActivityId is used for resolving subscriptions. this is broken since this property references the id of the compensation handler and not the id of the scope to be compensated. the fact that the CompensationEventSubscription.getActivityId references the compensation handler is fine (for internal engine purposes), the bug occurs since we query with the id of the scope to be compensated.

            See failing testcase
            org.camunda.bpm.engine.test.bpmn.event.compensate.CompensateEventTest.FAILING_testCompensateActivityRef()
            ------
            Spec page 294
            For an End Event: The Activity to be compensated MAY be supplied. If an Activity is not supplied, then the compensation is broadcast to all completed Activities in the current Sub- Process (if present), or the entire Process instance (if at the global level).
            ------
            Fix Version/s New: 7.0.4 [ 13002 ]
            Summary Original: activityRef in throwing compensation event not specification conform New: Intermediate throwing compensation with activityRef does not work for task activities
            Daniel Meyer made changes -
            Description Original: The intermediate throw compensation event provides the activityRef attribute. The attribute allows to reference an activity which should be compensation. NOT the compensation handler.

            This currently works fine if the activityRef references a scope activity (ie. embedded subprocess) but is broken for task activities (like Service tasks, User tasks etc.).

            The problem is that the CompensationEventSubscription.getActivityId is used for resolving subscriptions. this is broken since this property references the id of the compensation handler and not the id of the scope to be compensated. the fact that the CompensationEventSubscription.getActivityId references the compensation handler is fine (for internal engine purposes), the bug occurs since we query with the id of the scope to be compensated.

            See failing testcase
            org.camunda.bpm.engine.test.bpmn.event.compensate.CompensateEventTest.FAILING_testCompensateActivityRef()
            ------
            Spec page 294
            For an End Event: The Activity to be compensated MAY be supplied. If an Activity is not supplied, then the compensation is broadcast to all completed Activities in the current Sub- Process (if present), or the entire Process instance (if at the global level).
            ------
            New: The intermediate throw compensation event provides the activityRef attribute. The attribute allows to reference an activity which should be compensated. NOT the compensation handler.

            This currently works fine if the activityRef references a scope activity (ie. embedded subprocess) but is broken for task activities (like Service tasks, User tasks etc.).

            The problem is that the CompensationEventSubscription.getActivityId is used for resolving subscriptions. this is broken since this property references the id of the compensation handler and not the id of the scope to be compensated. the fact that the CompensationEventSubscription.getActivityId references the compensation handler is fine (for internal engine purposes), the bug occurs since we query with the id of the scope to be compensated.

            See failing testcase
            org.camunda.bpm.engine.test.bpmn.event.compensate.CompensateEventTest.FAILING_testCompensateActivityRef()
            ------
            Spec page 294
            For an End Event: The Activity to be compensated MAY be supplied. If an Activity is not supplied, then the compensation is broadcast to all completed Activities in the current Sub- Process (if present), or the entire Process instance (if at the global level).
            ------
            Robert Gimbel made changes -
            Link New: This issue is related to CAM-1409 [ CAM-1409 ]
            Robert Gimbel made changes -
            Fix Version/s Original: 7.0.4 [ 13002 ]
            Robert Gimbel made changes -
            Labels New: AD
            Robert Gimbel made changes -
            Rank New: Ranked higher
            Robert Gimbel made changes -
            Rank New: Ranked higher
            Kristin Polenz made changes -
            Status Original: Open [ 1 ] New: In Progress [ 3 ]

              meyer Daniel Meyer
              ruecker Bernd Ruecker
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: