@at9 beat me to it while I was typing, but I think you'll also want to check the "Cancel?" flag on your "Delay" action as well as place a "Cancel Delayed Actions" action first thing in your actions. The end result would be much simpler, something like:
Trigger: Door opened
Actions:
Cancel Delayed Actions
Delay 0:00:45 (cancelable)
Notify phones: "Back door is open!"
Wait for event: Door closed
Notify phones: "Back door is closed"
In case you are wondering, delays only get cancelled with explicit cancellation; in-progress "Waits" are effectively cancelled any time a trigger matches, so you don't need to worry about that here.
[EDIT: I did not think through this clearly, and as-written this will fail in the way he mentions in the next post. Hence the strike-through....]
The way you wrote this rule hints to me that maybe you've seen lots of people talk about the "new" suggestion for writing rules like the above and were trying to follow it. I might assume you were trying to "translate" a rule like this:
Trigger: Door changed
Actions:
IF (Door open) THEN
Delay 0:00:45 (cancelable)
Notify "Back door open!"
Set Private Boolean to True
ELSE
Cancel Delayed Actions
IF (Private Boolean is true) THEN
Notify "Back door closed!"
Set Private Boolean to false
END-IF
Here, you can use Private Boolean (or a local or global variable as it appears you were doing--but no need to if you don't care about its value anywhere else) to "track" whether the notification was sent. This isn't the "new" paradigm" you may have seen, but it's easier for me to wrap my head around still in most cases, as you can see with my above attempt. Trying to re-train myself...
EDIT: I think the "old" way might still be the best way to write this rule, but this is what I came up with if you want to use an event-specific trigger with a "Wait":
Trigger: Door closed
Actions:
Cancel Delayed Actions
IF (Private Boolean is False) THEN
Notify: "Door closed!"
Set Private Boolean True
END-IF
Wait for events: Door opened
Delay 0:00:45 (cancelable)
Notify: "Door opened!"
Set Private Boolean False
Not much "simpler," but maybe a little? (Also, wait for someone to check my logic here. Haha.)