trigger postActivate

System trigger that provides component-specific post-processing.

Declaration: trigger postActivate
Applies to: Component
Activation: Activated after the requested operation is activated, and in a web environment, before the preRequest trigger.
Default behavior: Sets return 0
Behavior upon completion: None

Description

The postActivate trigger is typically used to handle post processing specific to the operation, such as storing the state of a transaction, and so on.

State management is especially significant in a web environment, so default ProcScript is provided in the postActivate trigger of dynamic and static server pages.

The activation sequence of the preRequest, postRequest, preActivateand postActivate triggers in a web environment is shown in the following table:

Web-Specific Trigger Activation Sequence
preRequest return status preActivate return status exec or other operation postActivate postRequest WRD status
$status = -21 Not executed Not executed Not executed Not executed -21
$status < 0 Not executed Not executed Not executed Not executed 0
$status >= 0 $status = -21 Not executed Not executed Executed -21
$status >= 0 $status < 0 Not executed Not executed Executed 0
$status >= 0 $status >= 0 Executed Executed Executed 0

Triggers and operations are activated from left to right, depending on the $status returned by previous triggers.

Example: postActivate Trigger for DSP

The default code of the DSP postActivate trigger generates the initial page or a page updated, depending on the value of $webresponsetype. The following example shows a simplified version of this code (excluding the error handling.)

trigger postActivate
selectcase $webresponsetype
case "UPDATE"         ; Update page
  websave               ; Generate data

case "FULLPAGE"       ; Initial page
  weblayout             ; Generate layout
  webdefinitions        ; Generate component definitions
  websave               ; Generate data
endselectcase
end; postActivate

Getting and Setting State with Cookies

The following example gets the Uniface cookie from the browser and places it in the $cookie$ component variable. The USERCONTEXT information is stored as an associative list in the format Variable=Value, where Variable is the name of a field or variable in the server page. The getlistitems/id statement reads the values contained in $cookie$ and distributes them accordingly:

trigger preActivate
   $cookies$ = $webinfo("USERCONTEXT")
   getlistitems/id/component $cookies$
end; preActivate

In the postActivate trigger of the static server page, the following code updates the state information when the page completes. The ProcScript in this example initializes a component variable $statelist$ with the names of the fields or variables containing the state information, then uses the putlistitems/id statement to populate the list in $statelist$ with the current values from the server page:

trigger postActivate
   $statelist$ = "Variable1=;Variable2="
   putlistitems/id/component $statelist$
   $webinfo("USERCONTEXT") = $statelist$
end; postActivate

If you put empty cookie data into the first item of USERCONTEXT, for instance, by using putitem $statelist$, 1, "", followed by $webinfo("USERCONTEXT") = $statelist$, Uniface substitutes a NULL identifier at the moment the empty cookie data is sent to the client.

Related Topics