Events are dispatched upon each persistent change to the workspace. Changes that affect only the transient session level are not tracked by the observation mechanism. This means that events will be dispatched as follows:
If a set of operations is within a transaction (see 8.1 Transactions) then the events reflecting the resulting changes will only be dispatched after the changes are persisted by a successful commit.
If a set of operations is not within a transaction then:
If an operation is immediately persistent (like Workspace.copy, for example), the events reflecting the resulting changes will be dispatched upon the successful completion of the operation.
If a set of operations is not immediately persistent (like most Node and Session methods, for example) then the events reflecting the resulting changes will be dispatched upon the successful save of those changes.