project BLF > class BSystem > method PostTransaction
Description
Actions to take after final commit of the transaction.
Parameters
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
unused
program code (program/bsystem.p)
<ANCESTOR-CODE>
/* ================================================================= */
/* When activating SOD, initialize tables SODViolation1 + 2. */
/* This should not be done in a single transaction. */
/* ================================================================= */
if vlSODActivated
or vlSODDeactivated
then do:
/* remove all existing contents */
<M-7 run StartPersistence
(output vhPL (ohPersistence),
output viFcReturnSuper (oiReturnStatus)) in BSystem>
vhFcComponent = vhPL.
<M-8 run WriteDirect
(input 'SODViolation1' (icTableName),
input 'for each SODViolation1' (icPrepare),
input '' (icFieldList),
input '' (icFieldListDataTypes),
input '' (icAbsolute),
input '' (icIncremental),
input {&TARGETPROCEDURE} (ihClass),
input vcUserLogin (icUserLogin),
output viFcReturnSuper (oiReturnStatus)) in persistence>
if viFcReturnSuper = -4
then viFcReturnSuper = 0.
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
vhFcComponent = vhPL.
<M-10 run WriteDirect
(input 'SODViolation2' (icTableName),
input 'for each SODViolation2' (icPrepare),
input '' (icFieldList),
input '' (icFieldListDataTypes),
input '' (icAbsolute),
input '' (icIncremental),
input {&TARGETPROCEDURE} (ihClass),
input vcUserLogin (icUserLogin),
output viFcReturnSuper (oiReturnStatus)) in persistence>
if viFcReturnSuper = -4
then viFcReturnSuper = 0.
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
vhFcComponent = vhPL.
<M-62 run WriteDirect
(input 'SODLog' (icTableName),
input 'for each SODLog' (icPrepare),
input '' (icFieldList),
input '' (icFieldListDataTypes),
input '' (icAbsolute),
input '' (icIncremental),
input {&TARGETPROCEDURE} (ihClass),
input vcUserLogin (icUserLogin),
output viFcReturnSuper (oiReturnStatus)) in persistence>
if viFcReturnSuper = -4
then viFcReturnSuper = 0.
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
end.
if vlSODActivated
then do:
<Q-84 assign vlFcQueryRecordsAvailable = CategoriesAreInConflict (NoCache)
(input 0, (Category1ID)
input 0, (Category2ID)) in BSODCategoryExclusion>
if vlFcQueryRecordsAvailable <> no
then do:
<I-1 {bFcStartAndOpenInstance
&CLASS = "BSODViolationRule1"}>
<M-2 run CheckRule1
(input 0 (iiRoleID),
input 0 (iiSODCategoryID),
output viFcReturnSuper (oiReturnStatus)) in BSODViolationRule1>
<I-3 {bFcCloseAndStopInstance
&CLASS = "BSODViolationRule1"}>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
<I-4 {bFcStartAndOpenInstance
&CLASS = "BSODViolationRule2"}>
<M-5 run CheckRule2
(input 0 (iiUsrID),
input 0 (iiRoleID),
input 0 (iiSODCategoryID),
input '' (icUsrLogin),
output viFcReturnSuper (oiReturnStatus)) in BSODViolationRule2>
<I-6 {bFcCloseAndStopInstance
&CLASS = "BSODViolationRule2"}>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
end.
/* Set the SOD active flag to status ACTIVE */
vhFcComponent = vhPL.
<M-63 run WriteDirect
(input 'Syst' (icTableName),
input 'for each Syst' (icPrepare),
input 'SystSODActive' (icFieldList),
input 'l' (icFieldListDataTypes),
input 'true' (icAbsolute),
input '' (icIncremental),
input {&TARGETPROCEDURE} (ihClass),
input vcUserLogin (icUserLogin),
output viFcReturnSuper (oiReturnStatus)) in persistence>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
end.
vlSODActivated = no.
vlSODDeactivated = no.