About Suspension

Suspension occurs when a requested operation is sent to the application event system for completion at a later time. This occurs when the event handler has the Suspend option selected and contains an adjourning action.

Suspension is possible only with certain framework events. You cannot create custom events that can be suspended. Currently, these application events can be suspended:

  • IdoOnItemInsert
  • IdoOnItemUpdate
  • IdoOnItemDelete

Suspension occurs when the system generates an application event that:

  • Is one of these framework events that can be suspended
  • Has the Suspend check box selected (on the form) for at least one handler that applies to the generated event’s object and initiator

When an application event is suspended

When both conditions are met, Windows client passes control of the requested update (insertion, update, or deletion) to the application event system. The application event system then ensures that the event handlers can all execute successfully before actually committing the system and the data to execute the event actions.

There are two stages: suspend-validating stage and suspend-committing stage.

When an application event is not suspended

When an application event that can be suspended is not suspended (that is, no event handler for that application event that applies to that event’s object and initiator has the Suspend check box selected), the system executes the application event using this process:

  1. The system performs a database update.
  2. The application event system executes all effective event handlers, returning either success or failure.
  3. The system handles failures as errors and exits the application event.
Note: Each insertion/update/deletion request in the process, which could be from an external XML request or from a Save action in Windows client, participates in the overall transaction. In this case, all complete or nothing completes. So, each handler chain (the same chain executes for each insertion, update, or deletion in the group) also participates in that overall transaction. A failure of any of those handler chains results in the entire transaction being rolled back.