When creating a new event type, there are two options for "Deactivate Event":
- Upon Notification
The only documentation on these in the help reads: "Depending on whether you want the event type to be deactivated when its listeners have acknowledged receipt of the event, select either Upon Notification or Never. For example, you might select Never if a service is handling the notification and any deactivation of the event type." I think I've read that about 42 times and still don't understand it. What does it mean to "deactivate" an event type? You can right click on an event type and then click "deactivate" but that completely deactivates the type (which I think means that any process that uses the event won't work properly). I'm sure that's not the kind of "deactivation" that is meant by the option in the event type. Also, what does "notification" mean? I feel like I'm missing something.
What I'm hoping is that this is similar to acknowledging a message on a message queue (e.g., a JMS or MSMQ type message queue). What I'm trying to do is build a short-lived process that starts when an event is thrown. However, I want to ensure that if the process fails that the event will still be "active" and will, at some point, kick the process off again. Yes, I can handle all of the exceptions that occur and manually re-throw the event... but some operations don't have exceptions (such as the JDBC operations). I don't want the event to just get lost in those situations.
"Depending on whether you want the event type to be deactivated when its listeners have acknowledged receipt of the event, select either Upon Notification or Never."
I think deactivate the event means, it's not available anymore on the queue. You can ensure it doesn't stay on the queue after you catch it (Upon Notification), or you can catch it and then deactivate (or remove it from the queue) manually using your own service.
"For example, you might select Never if a service is handling the notification and any deactivation of the event type."
I think that what they mean here. If you select "Never" then, you catch the event, and you're responsible to deactivate it (remove it from the queue).