project BLF > class Transaction > method InitInstance
Description
This method can be extended with code to execute when an instance of a business class is started.
PreCondition
This method is executed when a new instance of the business class is started, or when a draft instance is opened (in that case a new instance is started which is a copy of the draft instance).
Parameters
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
unused
program code (program1/transaction.p)
/* ================================================================= */
/* When opening a draft transaction instance, open every instance of */
/* business classes in the transaction and update */
/* session + transaction instance ID inside it. */
/* When starting a new instance, this table will be empty, */
/* and nothing will be done. */
/* ================================================================= */
<M-5 run StartCacher
(output vhFcComponent (ohCacher),
output viFcReturnSuper (oiReturnStatus)) in Transaction>
<M-4 run GetIntegerValueFromSession
(input viSessionID (iiSessionId),
input 'MaxInstancesInTransaction':U (icDataItemName),
output viFcMaxInstancesInTransaction (oiValue),
output viFcReturnSuper (oiReturnStatus)) in Cacher>
<M-42 run GetIntegerValueFromSession
(input viSessionID (iiSessionId),
input 'TimeOffset' (icDataItemName),
output viTimeOffset (oiValue),
output viFcReturnSuper (oiReturnStatus)) in Cacher>
session:timezone = viTimeOffset.
for each tInstances by tInstances.tiInstanceNr descending on error undo, throw:
assign vhDatabaseInst = ?
viDatabaseId = tInstances.tiInstanceNr
vcClassShortName = entry(1, tInstances.tcInsName).
if num-entries(vcClassShortName, "[") = 1
then assign vcUserDefinedContext = "".
else assign vcUserDefinedContext = entry(1, entry(2, vcClassShortName, "["), "]")
vcClassShortName = entry(1, vcClassShortName, "[").
<M-1 run BusinessClassActions
(input vcClassShortName (icClassShortname),
input 'OPEN':U (icAction),
input no (ilSubtransaction),
input-output tInstances.tiOpenCount (biClassOpenCount),
input-output vhDatabaseInst (bhClassInstanceHandle),
input-output viDatabaseId (biClassInstanceId),
input '' (icDraftReference),
input vcUserDefinedContext (icUserDefinedContext),
output viFcReturnSuper (oiReturnStatus)) in Transaction>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
<M-2 run SetPublicData (input 'viTransactionID':U (icDataList),
input string (viFcCurrentInstanceId) (icValueList),
output viFcReturnSuper (oiReturnStatus)) in database>
<M-3 run BusinessClassActions
(input vcClassShortName (icClassShortname),
input 'CLOSE':U (icAction),
input no (ilSubtransaction),
input-output tInstances.tiOpenCount (biClassOpenCount),
input-output vhDatabaseInst (bhClassInstanceHandle),
input-output viDatabaseId (biClassInstanceId),
input '' (icDraftReference),
input vcUserDefinedContext (icUserDefinedContext),
output viFcReturnSuper (oiReturnStatus)) in Transaction>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
assign tInstances.tiInstanceNr = vidatabaseID.
end.