|Purpose: Defines the trigger element, a mandatory child of event.|
<trigger> element defines the conditions to match to generate the business event
If several triggers are part of the event definition, they must all match to raise the business event. If the triggers match a different DOM event in the browser, the set of triggers specifies a serie of web events that must occur before the parent business event is submitted to the Frontend Server.
You can add <val> children to the trigger, but in that case, <val> children only have access to the DOM event matched by your trigger.
- <val> (0-n*)—This child element is optional.
Name of the trigger. Must be unique inside the <event> parent. if an <event> element has multiple triggers, they must all have different names across this <event> element.
Specifies the document's DOM element to which the trigger should be attached. The value of 'element' should be a jQuery selector. For details on jQuery selectors, see http://api.jquery.com/category/selectors/. If action is set to timer:nnn, element can be set to null.
Specifies the DOM event to track. The trigger is matched if this DOM event is targeted to the DOM element specified by 'element'. In addition to the standard DOM events, the DSL supports the following two values: 'timer' and 'enterkey'. The timer is specified in milliseconds. If action="timer:nnnn", the 'type' parameter must specify how the timer works.
|type||yes if action='timer:nnnn'||
Specifies how the timer works and is required only if action="timer:nnnn".
Defines the URL of a specific page which should raise the business event. The business event is not submitted if the current document's URL does not math the url parameter.
Specifies how many times the trigger must match before the business event is submitted to the Frontend Server.
Implementation of a Timer
In the following example, the trigger uses a timer of 10 seconds, with the nomove type, which means that the business event InactivityTimeout is submitted to the Frontend when the user is inactive for 10 seconds.
<event id="InactivityTimeout" name="InactivityTimeout"> <triggername="InactivityTimeout" element="" action="timer:10000" type="nomove" url="http://www.MySite.com/site/olspage.jsp"count="1"/> <val name="products"value="..."/> </event>
If, instead of nomove, we had set the type attribute to the timeout value, the business event would be generated 10 seconds after the load of the web page was loaded.
Timeout and Condition Attribute
The following example redefine the previous timeout event by adding a condition to the event. The timeout is started only if the webpage is used for comparison. The event condition checks if the first heading of the page is the string "Compare" and starts the timer if the result is true.
<event id="InactivityTimeout4CompareProductsEvent" name="InactivityTimeout" condition="$('h1').text() == 'Compare'"> <trigger name="InactivityTimeout" element="" action="timer:10000" type="nomove" url="http://www.MySite.com/site/olspage.jsp"count="1"/> <val name="products"value="..."/> </event>
Let's assume that the webpage header loading the DSL code contains a search textbox. The following DSL code submits the business event if the user enters text in the search box and presses the "enter" key (in opposition to clicking on the "search" button):
<event id="SearchKeyDownEvent" name="Search"> <trigger name="SearchKeyDown" element="input.searchfield:text" action="enterkey" url="[http://www.MySite.com%5C%22count= http://www.MySite.com%5C%22count=]"1"/> <val name="searchString" value="$('input.searchfield:text').val();"/> </event>