project BLF > class BSystem > method PostTransaction

Description

Actions to take after final commit of the transaction.


Parameters


oiReturnStatusoutputintegerReturn 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.