You can trigger each type of event in one or more ways.
Triggering Session Login, Logout, or Register Events
A session login, logout, or register event is triggered by default whenever a user successfully submits a form created with the Profile Form Handler methods. See the Working with Forms and Form Handlers chapter in the Platform Programming Guide for more information about how the Profile Form Handler handles login, logout, and registration events.
Triggering New Session Events
The Personalization module adds a new servlet, SessionEventTrigger
, to the ATG servlet pipeline. This pipeline servlet checks each request to see if it represents the start of a new session. If so, it triggers a new session event, which is sent to the Event Distributor’s session channel.
Triggering Page View Events
The PageViewServletTrigger
is another pipeline servlet. This servlet triggers a page view event for each page that is served.
Triggering an event for every page viewed could adversely affect performance on a large site. Instead, you may want to trigger page view events only for particular pages. To do this you can disable the PageViewServletTrigger
by setting its broadcastPageViewedEvents
property to false
. Then, set the page view event trigger in each Page, using an ATG Servlet Bean with the Nucleus path /atg/userprofiling/SendPageEvent
, as in this example:
<droplet bean="/atg/userprofiling/SendPageEvent"></droplet>
Any time a page with this tag is rendered, the SendPageEvent
component triggers a page view event and sends it to the Event Distributor’s page channel.
You can configure the SendPageEvent
component with an optional parameter named pageviewed
. The value of pageviewed
sets a name for the page being viewed in the path
property of the PageViewedEvent
. If you do not set a value for the pageviewed
parameter, then this value defaults to the requestURI
property of the request object.
By default, the PageViewServletTrigger
pipeline servlet and SendPageEvent
servlet bean strip out any query arguments from the URI in the page event. If you want to retain the query arguments in the URI, set the removeURIArguments
property of /atg/userprofiling/PageEventTrigger
to false
.
Page view events are triggered each time the Oracle Commerce Platform server downloads a page. They are not repeatedly triggered in the following instances unless a user deliberately decides to reload a page:
when a user views a page that was cached by their browser,
when the page has an HTML rather than a JHTML or JSP extension,
if the user allows setting cookies instead of using a session ID.
Triggering View Item Events
Each of the targeting servlet beans described in the Serving Targeted Content with ATG Servlet Beans chapter of the Page Developer's Guide can trigger a JMS ViewItem
event for each repository item returned by the targeter. For example, suppose a page with a TargetingForEach
servlet bean returns an array of seven content items. When the system serves this page, seven ViewItem
events are sent.
You can enable this behavior for any targeting servlet by setting the following parameters in the servlet:
<param name="fireViewItemEvent
" value="true">
For more information on the JMS ViewItem
event, see ViewItem Event in the part of this manual that describes scenario features.
Note: Earlier versions of Oracle Commerce Platform products used fireContentEvent
and fireContentTypeEvent
servlet bean parameters instead of the fireViewItemEvent
parameter. These earlier parameters were triggered when the targeter returned content repository items (but not items from other repositories). They sent content view and content-type view events to the Event Distributor’s content channel and content-type channel, respectively. Although these parameters still work as intended in any existing targeters, they have been deprecated in favor of the more flexible fireViewItemEvent
parameter, which is triggered when an item from any repository (including, for example, the profile repository) is viewed.
If an existing targeter uses the fireContentEvent
and fireContentTypeEvent
parameters, and you want to prevent the targeter from firing any events, you must set the parameters as follows in addition to turning off the fireViewEvent
parameter described above:
<param name="fireContentEvent" value="false">
<param name="fireContentTypeEvent" value="false">
TargetedContentTrigger Servlet Bean
The atg.targeting.TargetedContentTrigger
servlet bean is designed to be nested in the <oparam>
tag of another targeting servlet. You can use it to enable or disable an event trigger in a particular targeting servlet bean instance.
The TargetedContentTrigger
expects the following parameters to be available from the servlet bean that contains it:
targeter
aRepositoryTargeter
serving the content
element
aRepositoryItem
representing the viewed content
The TargetedContentTrigger
by default fires both a content event and a content type event. If you don’t want to fire one of the events, you can set one of the following parameters to false:
fireContentEvent
—set to false to prevent the content event from firing
fireContentTypeEvent
—set to false to prevent the content type event from firing
For example, if you want to set the TargetedContentTrigger
servlet bean to trigger a content view event, and not a content type event, use the following code.
JSP example:
<dsp:droplet name="/atg/targeting/RepositoryLookup"> <dsp:param bean="/atg/userprofiling/SendPageEvent" name="targeter"/> <dsp:param value="viewedContent" name="element"/> <dsp:oparam name="output"> <dsp:droplet name="/atg/targeting/TargetedContentTrigger"> <dsp:param value="false" name="fireContentTypeEvent"/> </dsp:droplet> </dsp:oparam> </dsp:droplet>
JHTML example:
<droplet bean="/atg/targeting/RepositoryLookup"> <param name="targeter" value="bean:/atg/userprofiling/SendPageEvent"> <param name="element" value="viewedContent"> <oparam name="output"> <droplet bean=/atg/targeting/TargetedContentTrigger> <param name="fireContentTypeEvent" value="false"> </droplet> </oparam> </droplet>
For more information, see Nesting Servlet Beans in the Using ATG Servlet Beans chapter of the Page Developer's Guide.
Note, however, that the fireContentEvent
and fireContentTypeEvent
parameters used by the TargetedContentTrigger
have been deprecated. Refer to the previous section, Triggering View Item Events, for more information.