project BLF > class Activate > method MainBlock

Description

This method contains all the logic of the activate procedure. It cannot be called from somewhere else in the business layer.

The code will make sure the "current-language" is set correctly, according to the information that is specified in the "connection string" to the appserver (session:server-connection-context). Also the debug level is set for the appserver agent.

The session:server-connection-context is formatted to contain a comma-separated string of any combination of one or more of the following: "lng=<languagecode>", "DebugLevel=<debuglevel>"

The ComponentPool component is started as session super procedure, if it has not yet been started for the appserver agent process.

For audit-enabled systems, the client-principal is registered correctly, so that auditing works correctly for the appserver agent.


Internal usage


unused


program code (program1/activate.p)

/* set stateless mode (safety in case startup procedure failed) */
vlFcStateless = true.


do viFcCount1 = num-entries(session:server-connection-context) to 1 by -1:
    if entry(viFcCount1,session:server-connection-context) begins "Lng=":U
    then assign current-language = substring(entry(viFcCount1,session:server-connection-context),5,-1,"CHARACTER":U).
    else
    if entry(viFcCount1,session:server-connection-context) begins "DebugLevel=":U
    then assign viAppserverDebugLevel = integer(substring(entry(viFcCount1,session:server-connection-context),12,-1,"CHARACTER":U)) no-error.
    else
    if entry(viFcCount1,session:server-connection-context) begins "DebugLevelSession=":U
    then assign viDebugLevelSession = integer(substring(entry(viFcCount1,session:server-connection-context),19,-1,"CHARACTER":U)) no-error.
end.

/* code copied from generated instance programs (start) */
vlFcOk = no.
publish "ComponentPoolIsRunning" (output vlFcOk).
if vlFcOk
then do:
    create widget-pool "non-persistent" persistent no-error.
    create widget-pool "queryobjects" persistent no-error.
end.
else do:
    <M-4 run Main () in ComponentPool>
    session:add-super-procedure(vhFcComponent).
end.

/* ================================================================= */
/* Deactivate logging level of the previous connection.              */
/* ================================================================= */
run SetDebugLevelInPool (0, 0, yes).

/* ================================================================= */
/* Invalidate client-principal of the previous connection.           */
/* ================================================================= */
/*
<M-5 run RegisterClientPrincipalInPool
   (input  'showusage' (icObjectKey), 
    output viFcReturnSuper (oiReturnStatus)) in ComponentPool>
*/
run RegisterClientPrincipalInPool (input "", output viFcReturnSuper).

/* ================================================================= */
/* Start persistence layer                                           */
/* and check if DB connections are still valid.                      */
/* If not, remove the persistence layer from memory.                 */
/* ================================================================= */

/* code copied from business.startpersistence */
run StartPersistenceInPool (input {&TARGETPROCEDURE},
                            output vhFcComponent,
                            output viFcReturnSuper).
if viFcReturnSuper < 0
then return.

<M-2 run ConnectionValid (output viFcReturnSuper (oiReturnStatus)) in persistence>
if viFcReturnSuper <> 0
then do:
    run gipr_DeleteProcedure in vhFcComponent.
    delete procedure vhFcComponent.
end.

run CleanupInPool.
run SetDebugLevelInPool (viAppserverDebugLevel, viDebugLevelSession, yes).