Declares that a transaction on a transaction server should be committed.
To commit a transaction |
Use |
---|---|
For OLETxnObject objects |
|
For TransactionServer objects |
Declares that the current transaction should be committed.
OLETxnObject objects
oletxnobject.SetComplete ( )
Argument |
Description |
---|---|
oletxnobject |
The name of the OLETxnObject variable that is connected to the COM object |
Integer. Returns 1 if it succeeds and -1 if an error occurs.
Call the SetComplete function from a client to allow a COM+ transaction to be completed if all participants in the transaction on the COM+ server have called SetComplete or EnableCommit. If any participant in the transaction has called DisableCommit or SetAbort, the transaction is not completed.
The following example shows the use of SetComplete in a component method that performs database updates:
integer li_rc
OleTxnObject lotxn_obj
lotxn_obj = CREATE OleTxnObject
li_rc = lotxn_obj.ConnectToNewObject("pbcom.n_test")
IF li_rc <> 0 THEN
Messagebox( "Connect Error", string(li_rc) )
// handle error
END IF
lotxn_obj.f_dowork()
lotxn_obj.f_domorework()
lotxn_obj.SetComplete()
lotxn_obj.DisconnectObject()
Declares that the transaction in which a component is participating should be committed and the component instance should be deactivated.
TransactionServer objects
transactionserver.SetComplete ( )
Argument |
Description |
---|---|
transactionserver |
Reference to the TransactionServer service instance |
Integer. Returns 1 if it succeeds and -1 if an error occurs.
The SetComplete function corresponds to the completeWork transaction primitive in EAServer.
Any component that participates in a transaction can roll back the transaction by calling the rollbackWork primitive. Only the action of the root component (the component instance that began the transaction) determines when EAServer commits the transaction.
The transaction is committed if either of the following occurs:
The root component returns with a state of completeWork and no participating component has set a state of disallowCommit.
The root component is deactivated due to an explicit destroy from the client and no participating component has set a state of disallowCommit. (A client disconnect that is not preceded by an explicit destroy request always causes a rollback.)
You can use the transaction state primitives in any component; the component does not have to be declared transactional. Calling completeWork or rollbackWork from methods causes early deactivation.
The following example shows the use of SetComplete in a component method that performs database updates:
// Instance variables:
// DataStore ids_datastore
// TransactionServer ts
Integer li_rc
long ll_rv
li_rc = this.GetContextService("TransactionServer", ts)
IF li_rc <> 1 THEN
// handle the error
END IF
...
ll_rv = ids_datastore.Update()
IF ll_rv = 1 THEN
ts.SetComplete()
ELSE
ts.SetAbort()
END IF