<Signature ReturnType="void"> <Argument Name="MyArgumentOne" Type="TypeOne" XMTransactional.Managed="true"/> <Argument Name="MyArgumentTwo" Type="TypeTwo" /> <Argument Name="MyArgumentThree" Type="TypeThree" XMTransactional.Managed="true"/> </Signature>
XMTransactional.Managed means that the annotated attribute is introduced into the transaction scope. If XMTransactional.ReadAnew is 'false', it is merged into the scope (i.e. using values and version from the calling scope), while if it is 'true' it is (freshly) read into the scope (i.e. read from the database by using it's object id).
XMTransactional.Managed can also be used to annotate the operation itself. In that case, the "this" instance is managed, and a local variable "this_in_transaction" is created.
Normally, if XMTransactional.Managed is used, the instance is also refreshed in the container after completion of the transcation. if XMTransactional.Isolated is used, this is not the case, and the container transaction is not modified.
XMTransactional.Independent, XMTransactional.Embedded and XMTransactional.Final are passed to TSMContext.openScope and finally to TSMBackend.createScope.
XMTransactional.PerCall is presently not used.
XMTransactional.Return can be used to annotate one of the arguments. If so, it's value is used as the return value from the operation, properly remerged into the calling scope.