The model currently assumes that nested transactions are not possible. There can be only one transaction in progress at a time. If JCSystem.beginTransaction is called while a transaction is already in progress, a TransactionException is thrown.
The JCSystem.transactionDepth method is provided to allow you to determine if a transaction is in progress.