How to achieve "Active" selector node functionality in UE4 Behavior Trees?

When working in behavior trees in the past, I’ve taken advantage of what I’ve seen termed as “Active” selector nodes - that is, selector nodes that constantly re-evaluate children in order, even if one child was stuck “InProgress”. This would allow a higher priority child branch to immediately execute and stop execution of lower priority children. Basically, a scheme that handles this scenario as detailed here
[https://docs.unrealengine.com/latest/INT/Engine/AI/BehaviorTrees/HowUE4BehaviorTreesDiffer/index.html][1]

if you have a cat that performs a sequence “Shake Rear End”, “Pounce”, you may want to give up immediately if the mouse escapes into its mouse hole

To illustrate what I’m talking about, here’s a setup I created in UE4 that mimics how I would naively approach this problem given my past behavior tree usage (I can send any .uassets upon request):

Now I know this setup isn’t “supposed” to work with UE4’s event-driven behavior trees. Further down in the documentation, it seems the desired solution is to do something like this:

Since our Behavior Trees are event-driven, we instead handle this by having our conditional decorators “observe” their values and abort when necessary. (In this example, you would just have the “Mouse Can Be Pounced On?” decorator on the sequence itself, with “Observer Aborts” set to “Self”. )

The problem is I’m having trouble visualizing exactly what this means, and any attempts to implement this solution (as I was able to discern, with or without Simple Parallel nodes) did not work - at the very least, not the way I expect. One big hurdle I’m seeing is that Decorators do not seem to evaluate every frame, only upon a node’s initial execution. The implication being if a child node is set to be “InProgress” for a time (as in my example, with the giant Wait nodes), the Decorators will not evaluate during this period so there’s no way to kick a node out of an undesired behavior immediately.

I’m sure I’m missing something! Any help you can provide would be amazing. Again, I can provide any .uassets for my test scenarios and what I expect to see happen. Thanks.

It is decorator job to subscribe to conditions/events that can change while decorator is running.

See UBTDecorator_BlackboardBase::OnBecomeRelevant / UBTDecorator_BlackboardBase::OnCeaseRelevant