Advanced Options

Download Report

Transcript Advanced Options

®
TIVOLI ACCESS MANAGER FOR ENTERPRISE SINGLE
SIGN ON (ESSO)
(ADVANCED ACCESSPROFILING)
UNIT TWO
Author: Sharad Ganesh/New York/IBM
© 2008 IBM Corporation
IBM Software Group | Tivoli software
Pre-requisites and goals
 Pre-requisite for taking this Unit
– Taken the Tivoli Access Manager for ESSO powered by Encentuate basic training and the
Advanced AccessProfiling Unit One module.
– Using the methodologies in Unit One, you should be able to write the correct signature for
applications, windows, controls, web elements etc.
– Understand the basic concept of a workflow engine (aka state engine) modeled in an
AccessProfile.
 Unit Two goals
–
–
–
–
–
Understand trigger match mechanism and state transitioning in an AccessProfile
Understand the use of properties in an AccessProfile.
Familiar with trigger picking (what trigger(s) to use) for an application workflow.
Understand the methodology for use of triggers in an AccessProfile.
Ability to build your workflow engine (aka state engine, aka AccessProfile) for application
workflows.
– Ability to model a workflow of interest for an application (Advanced AccessProfile)
IBM Software Group | Tivoli software
Agenda (Topics covered)
 Recap of the state engine/workflow engine execution model
 Understanding the concept of a trigger, by example
 Concept of a property, test properties, test conditions, test functions
 State transition
 List of all properties names for test conditions
 Triggers you can use for a window and the controls inside a window
 Triggers you can use for webpage/website and its HTML elements
 Triggers you can use for mainframe application, green screen
application, terminal emulator.
 Triggers you can use for a java applet, java application window and
controls inside the applet.
 Use of application independent triggers (delay trigger, sign-in & signoff)
 Hands on exercises
IBM Software Group | Tivoli software
Recap of the state engine/workflow engine execution model
 An AccessProfile models the application workflow of interest. The resulting
workflow diagram is known as a state engine or workflow engine.
 The AccessProfile encapsulates:
– Events in the application workflow you want to monitor
– Actions (if any) you want to perform when each of those events is received.
 We will review how you can go ahead and familiarize yourself with using the
right trigger to monitor the events of interest and how actions can be added to
perform automation tasks like single sign-on, workflow automation.
IBM Software Group | Tivoli software
Understanding the concept of a trigger by example
 AccessProfile
IBM Software Group | Tivoli software
Understanding the concept of a trigger by example continued
Triggers
IBM Software Group | Tivoli software
What is a trigger? (Watch list)
 Expresses what event (appearance of a window?, button click?, appearance of
some text on an emulator screen?, loading of a sign on webpage?) you want to
monitor in a given state of the application
 Match the incoming event for a particular construct (e.g. window, button,
webpage, text appearing on a emulator screen)
 Finite set of triggers for finite event types to be monitored
 A trigger (or in some cases more than one trigger) to monitor the occurrence of a
type of event.
 A trigger is needed for monitoring an event on a specific construct (e.g. window,
button, webpage, text appearing on a emulator screen).
 ONE TRIGGER MONITORS ONE EVENT TYPE FOR ONE CONSTRUCT
IDENTIFIED BY A SIGNATURE
 If you want to monitor events on multiple constructs, you would need those many
triggers.
 If you want to monitor different events, you need one trigger for each event you
wish to monitor.
 The only way you can transition from one state to another is when the conditions
that the trigger is waiting for to match is TRUE.
 An outward directed arrow from a state indicates the triggers in that state. Arrow
pointing away from a state waits for an event when workflow pointer is in that
state.
IBM Software Group | Tivoli software
Trigger by example on Slide 6
 In the example on Slide 6
– state_begin has one trigger (when a window is activated)
– state_after_click_options has one trigger (when a window is displayed)
– state_after_injection has one trigger (when a button is clicked)
 When an incoming event matches a trigger:
– Load triggers in the next state of this matched trigger to watch list.
– Execute the actions (if any) under this trigger
– Workflow pointer moves to next state of the trigger
 Event must match:
– The construct identified by the signature in the trigger signature.
– “Conditions” attached to the trigger must be TRUE
 If there is more than one trigger in a state, they are matched in the order in which
they appear specified by the numbering beside a trigger.
IBM Software Group | Tivoli software
Concept of a property
 Property is represented as a identifier (name) that can have a value attached to it.
• TAM ESSO defined system properties
• User defined properties
 Example:
– NO_ACCOUNT_DATA_FOUND is a TAM ESSO defined system property. Value
can be 0 or 1.
• NO_ACCOUNT_DATA_FOUND = 0
• NO_ACCOUNT_DATA_FOUND = 1
 All TAM ESSO defined system properties have a meaning and a pre-defined set of
values it can have.
 Users can create their own property id and assign values to it.
 A property is basically an <id = value> pair
 A property can be in the local store visible in the application it was created or the
global store, accessible by other applications.
IBM Software Group | Tivoli software
Property: Use local store = Yes (default) versus Use local store = No
 Use local store = Yes (default) [a.k.a local property]
– The property (and its value) is valid for the life of the application in which the AccessProfile is
loaded.
– The property and its value are accessible only until the application is alive. When the
application is closed, the AccessProfile is unloaded and so are all the local store properties.
– The property is accessible only within the same AccessProfile.
– Notes on Application-AccessProfile lifetime
• An application executable is considered closed when it no longer shows up in Task
Manager.
• For websites (web applications), the property is valid only until the AccessProfile is loaded
for the website.
• When you navigate to a different website without closing your browser, a different
AccessProfile can be loaded and your AccessProfile will be unloaded. In this case property
becomes invalid.
• For a Java applet, say your AccessProfile is written for javaw.exe, the property with local
store = Yes will be valid until javaw.exe is running.
• For a web application, the AccessProfile is loaded for the website URL and not the browser
session. Even if the browser is not closed, the AccessProfile can be unloaded when you
navigate to a different URL.
 Local store = Yes indicates validity only when the AccessProfile is in the loaded state
within an application. Property visible only inside the application.
IBM Software Group | Tivoli software
Property: Use local store = Yes (default) versus Use local store = No
 Use local store = No [a.k.a global property]
– The property (and its value) is valid beyond the life of the application in which the
AccessProfile is loaded.
– The property (and its value) is accessible by all AccessProfiles. The value set in one
application can be accessed by another application. [Global access]
– The value of a property can be set in one application and it’s value can be accessed by
other applications.
– Used when you want to co-ordinate workflow/actions across two completely different
applications.
– Example use cases
• If a user is logged into ypager.exe, you might want to directly go (click on the Inbox
link) to the user’s inbox after logging onto Yahoo Mail (http://mail.yahoo.com)
• You can set a global property when a user logs in to ypager.exe in the AccessProfile
for ypager.exe.
• The same property (since it is global) can be used and its value can be checked
inside the AccessProfile for http://mail.yahoo.com. If the property value = 1, then we
can go ahead and execute the actions to click on the Inbox link and take the user to
their inbox directly from the Yahoo Mail home page.
• Note: Property set in one application is accessed in a different application or
across multiple instances of the same application
 Local store = No indicates property validity across all loaded AccessProfiles in the
same Windows session even after the AccessProfile that set the property is
unloaded from the application.
IBM Software Group | Tivoli software
TAM ESSO defined system properties (All properties are local)
 NO_ACCOUNT_DATA_FOUND (check status of auto-fill action to fetch credentials)
– Can be used after a auto-fills user credentials (inject) action. The auto-fills user credentials
action sets this property value
– NO_ACCOUNT_DATA_FOUND = 1 {no credentials found for the application for autofill/injection}
– NO_ACCOUNT_DATA_FOUND = 0 {Found atleast one credential for the application for
auto-fill/injection}
 INJECTION_HAPPENED (check status of auto-fill)
– Can be used after a auto-fills user credentials (inject) action
– Used to check if the auto-fill/injection of user credentials was successful.
– The auto-fills user credentials action sets this property value.
– INJECTION_HAPPENED = 1 {auto-fill of credentials was successful}
– INJECTION_HAPPENED = 0 {auto-fill of credentials failed}
 INJECTION_ERROR (check status of auto-fill)
– Can be used after a auto-fills user credentials (inject) action
– Used to check if the auto-fill/injection of user credentials happened successfully
– The auto-fills user credentials action sets this property value.
– INJECTION_ERROR = 1 {auto-fill of credentials failed}
– INJECTION_ERROR = 0 {auto-fill of credentials was successful}
IBM Software Group | Tivoli software
TAM ESSO defined system properties continued
 RANDOM_PWD_INJECTION_HAPPENED (random password auto-fill status)
– Can be used after a auto-fills user credentials (inject) action
– Used to check if the auto-fill/injection of the random password happened successfully
– The auto-fills user credentials action sets this property value.
– RANDOM_PWD_INJECTION_HAPPENED = 1 {auto-fill of random password was
successful}
– RANDOM_PWD_INJECTION_HAPPENED = 0 {auto-fill of random password failed}
 ENTERPRISE_ID (TAM ESSO username of the currently logged on user)
– Can be used anywhere to get the currently logged on username. i.e. the username of the
user who is currently logged on to TAM ESSO AccessAgent.
– The currently logged on username will be of the format domain\username.
 SCR_HAPPENED
– Can be used after the “Performs SCR with the IMS server” action
– Value is set by “Performs SCR with the IMS server” action.
– SCR_HAPPENED = 1 {SCR was successful}
– SCR_HAPPENED = 0 {SCR failed}
 OK_CLICKED_ON_CH_PWD_CUSTOM_DLG:
– Set to 1: If the user has clicked on OK on the Observer change password dialog due to
which the dialog (“change password dialog shown by Observer for owner drawn
applications) is closed successfully in the observer_dlg_change_password_action.
– If the user clicks on OK button, but the Observer change password dialog is not closed
because, for example, the two passwords on the Observer change password dialog do not
match, then this property is not set to 1.
IBM Software Group | Tivoli software
Conditions: Test properties and test conditions
 Conditions
– Check a property value (Test with property)
• A property can be tested against a value as part of the trigger match.
• The property can be a TAM ESSO system defined or user defined property.
– Check a script return value (Test using script)
• A plug-in (VBScript or JavaScript) test function can be used to test for additional conditions as
part of the trigger match. You can write VBS or JS code. Based on what value the function
returns.
•
VBScript (Test function’s return value should be 1 or 0 => the result of the condition)
– function Test
…
…
<vbscript code to test whatever you want to test>
…
End Function
•
Jscript (Test function’s return value should be 1 or 0 => the result of the condition)
• function Test()
• {
…
…
<jscript code to test whatever you want to test>…
}
IBM Software Group | Tivoli software
Conditions: Test condition example
IBM Software Group | Tivoli software
Conditions: Test condition example continued
Property ID
Value to test with
IBM Software Group | Tivoli software
Conditions: Test condition example continued
 Test condition highlights
– Where?
• With any trigger in the AccessProfile
– Why?
• Check some condition or the occurrence of a previous event at some point in the
application workflow.
– What?
• Local versus global
 Add conditions you want to test alongwith a trigger as part of the trigger match.
 Property values can be checked as part of a trigger’s match mechanism.
 You can also have a script function (VBS/JS) to check for certain conditions as part of a
trigger’s match mechanism.
IBM Software Group | Tivoli software
State transition
 How does state transition happen?
• Step 1: Each state has one or more triggers that are ordered.
• Step 2: An incoming event is matched with each of the triggers in order.
• Step 3: Trigger that matched will tell which state to move to.
The above 3 steps continue for every state.
• What does trigger match mean?
• A trigger waits for a certain type of event on a particular construct identified by a signature.
• A trigger can have test conditions attached to it. {test property value or test script return
value}
• A trigger match is successful when the construct it is waiting for, receives that event,
represented by the trigger AND when the conditions (if any) attached to the trigger are all
TRUE.
• What happens after a trigger match happens?
• The next state ID to transition to is on that matched trigger’s next state attribute.
• The triggers in the next state are loaded in the watch list. Triggers in current state are
removed from the watch list since match already occurred.
• Actions under the current matched trigger are executed in order.
• Your workflow pointer now moves to the next state. (whose triggers are already in the watch
list)
IBM Software Group | Tivoli software
Watch list for state transition
 What is a watch list?
– The watch list is the current list of events being watched for an application in an
AccessProfile.
– It has the triggers of a particular state that are waiting for certain events to
occur.
– You cannot have triggers from different states in your watch list.
– All triggers in the next state of the matched trigger are added to the watch list
and the triggers in the current state are removed from the watch list.
– When one trigger in the watch list is matched, then that trigger will fire and the
match will not continue with the rest of the triggers in the watch list. i.e. the first
trigger for which the match is successful will fire.
– So, one and only one trigger can match and fire in the watch list.
IBM Software Group | Tivoli software
Triggers you can use for window and the controls inside a window
 For a main top-level window
– Symptom
• Monitor when a particular window comes up or is shown?
• Detect appearance of a window.
• When a window is shown, you will typically say “a window is activated”.
– What trigger(s) can you use?
• (1) When a window is activated (Window is activated)
• (2) When a window is found (Window is found)
• (3) When a window is displayed (Window is shown)
– What does the trigger need? [Basic]
• Signature of the window
– What does the trigger need? [Advanced]
• Use for sign-in
IBM Software Group | Tivoli software
Triggers: Main top level window comes up/is shown?
 (1) When a window is activated (Window is activated)
– Used when you want to detect a main window when it comes up.
– Login window or change password window or any main window.
– “I want to wait for a window to come up”
– Corresponds to the WM_ACTIVATE windows message.
– What does the trigger need? [Basic]
• Signature of the window
 This trigger will match only when the window comes up (when the trigger is in the watch list)
 What if the application is launched and the window comes up before a user logs in to TAM
ESSO AccessAgent? So, when the user logs in to the TAM ESSO agent, the window is already
present and does not come up. What do you do?
– Advanced options -> Use for sign-in should be set to Yes (default)
 When it is set to Yes, even though window is already present and shown before the user signsin, the trigger will fire as soon as TAM ESSO AccessAgent is in the logged on state and ready
for SSO.
 Window present and visible before TAM ESSO agent is ready for SSO? – Set “Use for-sign-in”
to Yes, so that when a user signs-in to TAM ESSO AccessAgent, the presence of the window
can be detected.
 Signature can contain @is_foreground=1 to check if window is in the foreground
IBM Software Group | Tivoli software
Triggers: Main top level window comes up/is shown? continued
 (2) When a window is found (Window is found)
– (1) does not work even though your signature is correct and it’s a top level window?
– Window of interest is not a top level window?
– Even though signature for (1) is correct, trigger still does not work when window comes up?
 If the answer to all the above questions is “Yes” use (2)
 What does (2) do?
– Every 1 second (default) checks to see if the window is present.
– Continues to do this every 1 second (default) until it is in the watch list.
– Effective when (1) does not work
– Typically, used in conjunction with (1)
 What does the trigger need? [Basic]
• Signature of the window
 Advanced Options
– Polling interval
• Every how many seconds do you want to check for the window?
• Default is 1 second.
• You can specify any value in seconds for longer intervals.
IBM Software Group | Tivoli software
Triggers: Main top level window comes up/is shown? continued
– Max. poll count
• Maximum number of times you want to check for the window
• Default:- Keep checking until the trigger is in the watch list
• You can specify an integer value if you want to check only a few times. If the trigger does
not match in those few times of polling, the polling/check will stop and won’t keep
polling/checking.
– Does the window need to be in foreground
• If you want to make sure window is in the foreground, then set this to Yes.
• No is default, which means the window does not need to be in the foreground. i.e. it could
be behind other windows, minimized etc.
• Use case
– This can be used to check if an emulator window is in the foreground before going ahead
and doing a keyboard simulation for auto-fill on the emulator.
– Basically, if you want to check if a window is in the foreground before a keyboard
simulation action, this trigger can be used.
IBM Software Group | Tivoli software
Triggers: Main top level window comes up/is shown? continued
 (1) and (2) should work in all cases where you want to detect a window
 So why do we need (3)?
 Sequence of events before a window is shown to the user:
– 1. Window is created => 2. Window is activated => 3. Window is displayed
 (3) When a window is displayed (Window is shown)
– Used when you want to detect when a window is shown to the user.
– Corresponds to the WM_SHOWWINDOW windows message.
– Typically NOT used to detect login, change password windows.
– Widely used when you want to detect a success window that might come up after logging on
to an application or used to detect windows of interest that might be shown after you log on.
– However, this is not widely used because, you can use “When a window is activated” in
ALL cases.
– For detecting windows that come up after logging in to an application (e.g. success screens),
this trigger can be used.
 What does the trigger need? [Basic]
– Signature of the window to be displayed
 Advanced Options
– None
IBM Software Group | Tivoli software
Trigger usage summary: When a window is displayed
 Two most commonly used triggers
– (1) When a window is activated (Window is activated)
– (2) When a window is found (Window is found)
 Things to note
– 1. The window title might not be set in some cases when the window is activated. In such
cases, consider writing the signature without including the @title attribute or just say
@title#”.*” with other attributes like @class_name.
– 2. Even when a window is brought to the foreground from the background by clicking on the
window or when you bring a minimized window to foreground, the “When a window is
activated” trigger will fire.
• So, after a “When a window is activated” or “When a window is found” trigger you will
typically transition to a different state ID. (next state not equal to not the same state ID)
– 3. (1) is more optimized as it does not keep polling/checking, so you should definitely use that
first. (2) is a polling trigger, so use it only when (1) is not sufficient.
– 4. (2) “When a window is found” is used when you want to identify a control inside a window
or a window that is not necessarily a top level window.
IBM Software Group | Tivoli software
Triggers: Detect the presence of child control inside a window?
 (2) When a window is found (Window is found)
 (4) When a window is created (Window is created)
 (2) When a window is found
– This is exactly the same trigger discussed on Slide 22.
– This trigger is used to detect the presence of any child control inside a window.
– Used to also detect any child window (non-top level window) displayed to the user.
– Mostly used when you want to detect successful logons or a successful change password
occurrence as some child control inside the main window will indicate that.
– If a new main window is displayed, then you can use (1) or (2) for detecting the window
– (1) and (3) only work for main windows but (2) will work for main windows, child windows,
and child controls inside a window.
 (4) When a window is created
– Used to watch the creation of a child control inside a window
– Used to watch the creation of any window.
– Corresponds to the WM_CREATE windows message
– What does the trigger need? [Basic]
• Signature of the control/window for which you want to detect creation.
– What does the trigger need? [Advanced]
• None
IBM Software Group | Tivoli software
Trigger usage summary: Detect the presence of a child
window
 Two most commonly used triggers
– (1) When a window is found (Window is found)
– (2) When a window is created (Window is created)
 Things to note
– (2) is used to detect the creation of a child control or even a window. Used rarely.
– (1) is used very extensively when you want to detect a child control or window that might
appear on a successful log on or a successful change password occurrence.
– (1) is a polling trigger that keeps typically keeps checking for a child control or a window.
– (2) occurs even before you see a window. It is the 1st step in the three step sequence
(discussed on Slide 24) before a window is shown to the user.
– @title will NOT be set for the window/control at the time of creation. Use the @ctrl_id or
@class_name attributes
– @class_name is the most reliable attribute that you can use in the signature of a “When a
window is created” trigger.
IBM Software Group | Tivoli software
Trigger: When a main window is closed
 (5) When a window gets destroyed (Window gets destroyed)
– Used when you want to detect closing and destruction of a window
– Typically when a window is closed it is also destroyed
– A window is closed by click on ‘X’ at the top right corner or by clicking on a ‘Cancel’ button or
by just hitting the ‘Esc’ key
– Irrespective of how a window is closed, you will be able to use this trigger to detect this
event.
– In some cases, the window when closed will be hidden and not destroyed. In these cases
you cannot use this trigger. A window when hidden still “exists” and is not “destroyed”. The
only way you can know this is to open up WinSpector or Spy++ at that point to see if the
window is hidden versus destroyed
 What does the trigger need? [Basic]
– Signature of the window
 Advanced Options
– None
IBM Software Group | Tivoli software
Trigger: When a main window is hidden (not destroyed)
 (6) When a window is hidden (Window is hidden)
– Used when a window is hidden and not destroyed.
– In some applications, after you click on ‘OK’ on the main window, it may not be closed and
just be hidden. Upon logout, the same hidden window would come up. So, it is essentially
not a new window. [Rarely happens but possible in some applications]
– You will not be able to tell visually if a window is getting destroyed versus getting hidden.
– Use WinSpector or Spy++ to tell if is hidden.
– Corresponds to the WM_SHOWWINDOW windows message with wParam=FALSE
– In most cases, window is destroyed versus hidden. But, the only way you can tell is by
using a tool like WinSpector or Spy++
 What does the trigger need? [Basic]
– Signature of the window
 Advanced Options
– None
IBM Software Group | Tivoli software
Trigger: When a button is clicked
 (7) When a button is clicked (Button is clicked)
– Used when a button is clicked
– Typically used when you click on the ‘OK’, ‘Cancel’, ‘Connect’ etc. button on a login or
change password window.
– Used when you want to detect when a button inside a window is clicked.
– Corresponds to the WM_COMMAND windows message. WM_COMMAND message is
sent to the window with the button identifier, when a click occurs.
– Window application (#32770), Visual Basic (Thunder control).
 What does the trigger need? [Basic]
– Signature of the window
• This is the signature of the window that has the button
• This is the window that receives the command notification that the button was clicked
• This window receives the WM_COMMAND message informing it of the button click
• Typically this is the immediate parent window of the button and it is the main window
under which the button is present.
– Signature of control (Signature of the button)
• This is the signature of the button being clicked
 Advanced Options
– None
IBM Software Group | Tivoli software
Trigger: When a button is clicked continued (when a left mouse
button is clicked)
 (8) When a left mouse button is clicked (pressed down) on a window (Left mouse button
is pressed down)
– Used when a button is pressed down (left-click) using your mouse
– Used when a input box or child control is clicked (left-click)
– Used to detect any button click that cannot be detected using (7), as long as you can
identify the button (using a signature)
– (7) typically works for buttons inside a window dialog (@class_name=“#32770”) but for
buttons in any other window dialogs, as long as you can identify the button, you can use
(8) to detect a click on the button.
– Corresponds to the WM_LBUTTONDOWN windows message
– A left click from a mouse involves a press ‘down’ followed by release ‘up’ of your mouse
button. The match on a button or window (depending on where you click) occurs as soon
as you press ‘down’ your left mouse to do the click. So the trigger match occurs on a
mouse down of the click before the click can complete with a release ‘up’.
 What does the trigger need? [Basic]
– Signature of the button (or window) on which you do a left-click using your mouse.
 Advanced Options
– X:- X position of the exact point of click within the button/window (top left X=0)
– Y:- Y position of the exact point of click within the button/window (top left Y=0)
IBM Software Group | Tivoli software
Trigger: When a button is clicked continued (when a left mouse
button is clicked)
 Things to note for using “When a left mouse button is pressed down”
– First use (7) “when a button is clicked” and given the signatures for (7) are
correct, if it does not match, then use (8) “When a left mouse button is clicked”.
– X & Y should not be used for buttons and controls that can be identified using a
signature.
– X & Y for (8) only need to be used when you want to detect the click on a
certain region in a window (containing the button) which cannot be identified
using a signature. It could be a button, an image or a button-like region that
can be clicked but cannot be identified using a signature.
– Top left corner of the window X=0 and Y=0. X in this case for a button is the X
position top left corner of the button that can be clicked.
– Y = bottom right corner of the button that can be clicked.
– Since you are not able to identify the button using a signature because it is
embedded in the window, you are using X and Y to detect the bounds of the
button region.
– Only one window where the child controls cannot be identified.
IBM Software Group | Tivoli software
Hands on exercise – Part One
 Use of triggers that we’ve studied
 Window shown
 Button click
 Owner drawn button click
 Use LoginTester under Desktop - ESSO_SampleApps – Test
Applications – Windows to illustrate the concepts
IBM Software Group | Tivoli software
Trigger: When a key/key sequence is pressed on a window or
child control inside a window using the keyboard
 Dual purpose [trigger + collector]
– Watch keydown
– Collect keyboard input
 What does it do?
– Trigger match happens when a particular key or key sequence is detected on a window or
child control inside a window
– When this trigger in the watch list it collects the non-system keys pressed into a keyboard
buffer.
– A system key is any key pressed along with the Alt key.
 When will this trigger match?
– When a key the trigger is watching, is pressed using the keyboard, on a window or
control.
– Collected keyboard input matches the regular expression if specified under Match
Text (regex)
 What can I do with the collected keyboard input?
– This collected keyboard input can be used in the actions under this trigger.
– Typically used to “capture” credentials or any data typed into the control.
IBM Software Group | Tivoli software
Trigger: When a key/key sequence is pressed on a window or child
control inside a window using the keyboard continued
 How does it work?
– Keyboard input is always directed to the window or control that has focus.
– When the trigger for a window/control is added to the watch list, it starts collecting all the
keyboard input that is directed to the window/control.
– For each window/control for which keyboard input needs to be detected, you need one trigger
per window/control.
– If for a particular control/window you want to monitor 2 different key presses, you need to add
two different triggers, one for each key (e.g. ENTER key and TAB key).
– For each key on a window you need one trigger each.
 What does the trigger need? [Basic]
– Signature of the control/window getting the keydown message
• Signature of the control/window on which the keydown needs to be monitored
– Fire trigger on key (key press on which trigger should fire)
• Select the key press you want to detect. ( ENTER key is the default)
• You will be able to select almost any key from your keyboard.
• In most cases you will notice that either the ENTER or TAB will be used.
IBM Software Group | Tivoli software
Trigger: When a key/key sequence is pressed on a window or child
control inside a window using the keyboard continued
 Fire trigger on key
– any_key on the dropdown list
• Will match “any non-system key” press
• Used in conjunction with match text (regex) when you want to collect keyboard input
until a certain number of characters.
• If used without specifying anything in the match text (regex), the trigger will match any
non-system key pressed on the keyboard.
• Used to capture inputs of specified lengths (length specified as part of match text)
• Used to capture information of a specified length (e.g. username, password etc.)
from mainframe applications and terminal emulators.
– Example: Capture username where length of username string = 6 characters or
capture password where length of password string = 8 characters
 Match text (regex)
– Note: “Key is pressed on a window” trigger also serves are a keyboard collector
– Once the ‘fire trigger on key’ matches, the collected keyboard input needs to match this
match text which is represented as a regular expression
– By default .* matches any input. Leave the field empty and it will default to .* to match any
keyboard input.
– For more specific matches you need to write the regular expression that your collected
keyboard input should match in order for the trigger match to occur.
IBM Software Group | Tivoli software
Trigger: When a key/key sequence is pressed on a window or child
control inside a window using the keyboard continued
 Match text
– Most commonly used regular expressions:
•
•
•
•
(.*) => collected keyboard input can be anything.
([a-z|A-Z]+) => collected keyboard input is a alphabet string (upper and lowercase)
([a-z]+) => collected keyboard input needs be all lower case alphabet only string
If you want to match any keyboard input of length = n, you need to put in n dots within
parenthesis
– Example:
> (…) => collected keyboard input is 3 characters long
> (..) => collected keyboard input is 2 characters long
> (……) => collected keyboard input is 6 characters long (6 dots)
> (……..) => collected keyboard input is 8 characters long (8 dots)
– This is typically used in terminal emulators and mainframe applications when
you enter the username. The cursor automatically moves to the next field after
you enter a specified number of characters.
– You want to wait until the user enters 8 characters? In this case:
> Fire on key = any_key
> Match text = (........)
• [0-9] => collected keyboard should be a single digit.
IBM Software Group | Tivoli software
Trigger: When a key/key sequence is pressed on a window or child
control inside a window using the keyboard continued
 Match text
– ([0-9][0-9]) => collected keyboard input should be 2 digits
 For more information on regular expressions for matching specific text or strings for the
keyboard input:
– http://www.zytrax.com/tech/web/regex.htm
 Advanced Options
– Check ALT key (ALT key when pressed with another key. e.g. Alt-X, Alt-1, Alt-A)
• Set this to Yes if you want to monitor the pressing of the Alt (either left or right) key.
• You can also choose between the left and the right Alt key.
• Can be used in combination with an alphabet. e.g. Alt-S, Alt-F, Alt-1
– Check CTRL key (Ctrl key when pressed with another key. e.g. Ctrl-X, Ctrl-1, Ctrl-A)
• Set this to Yes if you want to monitor the pressing of the Ctrl (either left or right) key.
• You can also choose between the left and the right Ctrl key.
• Can be used in combination with an alphabet. e.g. Ctrl-S, Ctrl-F, Ctrl-1
– Check Shift key (Shift key when pressed with another key. e.g. Shift-X, Shift-1, Shift-A)
• Set this to Yes if you want to monitor the pressing of the Shift (either left or right) key.
• You can also choose between the left and the right Shift key.
• Can be used in combination with an alphabet. e.g. Shift-S, Shift-F, Shift-1
IBM Software Group | Tivoli software
Trigger: When a key/key sequence is pressed on a window or child
control inside a window using the keyboard continued
 Advanced Options
– Use advanced monitoring
• Always set this to the Yes (default)
• Indicates method used for capturing keyboard input (Yes = windows hook; No =
windows sub-classing)
– Clear keyboard buffer
• Yes (default) => Clear the collected keyboard buffer (if exists) for the window/control
before adding it to the watch list. No => append to already existing keyboard input (if
any) collected for a window/control
– Filter message (NOT USED for SSO because this blocks the keyboard input)
• Block the keystroke from going to the window or control identified by the trigger
signature
• Used to block keyboard input to a window or control
• When this is set to Yes, it blocks the current keystroke that is set to match the trigger
• Yes could be used to block input to a certain control/window or when you
• No is the default option, which does not block the keystroke from going to a
control/window. This is normal behavior when a key is pressed on the keyboard.
– Monitor for Unicode characters
• No (default) will not monitor Unicode characters. Used most often
• http://en.wikipedia.org/wiki/List_of_Unicode_characters
IBM Software Group | Tivoli software
Trigger: When a key/key sequence is pressed on a window or child
control inside a window using the keyboard summary
 Keystroke monitor + keyboard input collector for a control/window, terminal emulator window,
mainframe application.
 Collected keyboard input typically used for capturing username, password or any other
information in the capture action.
 Detect keystrokes like ENTER key, TAB key or any single alphanumeric key and keystroke
combinations like Ctrl-F, Ctrl-Alt, Shift-Ctrl, Alt-A etc.
 Match first matches pressed keystroke with the key to match set on the trigger. If that match is
successful, the match text regular expression (if present) is matched with the current input in
the collected keyboard buffer for the control/window. If that matches too, then the trigger
match is successful
 Choose to clear the keyboard input or append the keyboard input to the already collected
input for the control/window using the option ‘Clear keyboard input’.
 This trigger is used very extensively in mainframe applications, terminal emulators and
applications for which the input text cannot be directly extracted from the control/field/window.
 After entering username and password on a window, ENTER can be pressed on the
password/username field to submit the credentials equivalent to clicking on ‘OK’ or ‘Submit’
button. This trigger is always used to monitor this keystroke event.
 Block keyboard input to a control/window by using the option ‘Filter message’
IBM Software Group | Tivoli software
Hands on exercise – Part Two
 Use of Key is pressed on a window trigger
 Demonstrate transition on different keys
 Demonstrate setting a key sequence (e.g. Alt-V)
 Fire only when input is a certain length.
 Fire either on TAB or ENTER or CTRL
IBM Software Group | Tivoli software
Other triggers: Detect a mouse right click on a window/control
(Right mouse button is pressed down)
– Basic options:
• Signature of the window/control on which you want to detect the right mouse button
press down.
– Advanced Options
• None
– What does it do?
• Detects a right click done using the mouse on a control/window.
• Corresponds to the WM_RBUTTONDOWN or WM_RBUTTONDBCLICK windows
message
• Cursor should be inside the control/window, when the right click happens for it to be
detected
– Usage
• Rarely used
IBM Software Group | Tivoli software
Other triggers: Detect when a window/control gets keyboard
focus (Windows field gets focus)
– Trigger name to use
• “When a field on the window is clicked”
– Basic options:
• Signature of the window/control on which you want to detect keyboard focus
– Advanced Options
• None
– What does it do?
• Detects when a window/control inside a window gets keyboard focus.
• Corresponds to the WM_SETFOCUS windows message
– Usage
• Very rarely used
IBM Software Group | Tivoli software
Other triggers: When a menu item is clicked/selected.
e.g. (File->Exit)
– Trigger name to use
• “When a menu item is clicked” (Menu item is clicked)
Basic options:
• Signature
– Window/control on which the menu option exists
• Menu path
– Path of the menu item that includes the entire text you see on the menu separated by
a forward slash for every submenu.
– E.g. File/Exit when you want to detect the click of option File->Exit
– File/Save when you want to detect the click of option File->Save
– Help/Contact Us when you want to detect the click of Help->Contact Us
– What does it do?
• Detects when a menu item is selected.
– Usage
• Used when you want to detect a logoff from an application done using the menu
• Very rarely used otherwise
• Does not work for web applications, .Net applications. Works only on standard
Windows applications.
IBM Software Group | Tivoli software
Other triggers: When an MDI child window is activated
– Trigger name to use
• “When an MDI child window is activated” (MDI child window is activated)
– Basic options:
• Signature of the MDI child window which is being displayed
• Corresponds to the WM_MDIACTIVATE windows message
– Advanced Options
• None
– What does it do?
• “When a child window in a MDI (multi-document interface) application is displayed
– Usage
• Rarely used
IBM Software Group | Tivoli software
IBM Software Group | Tivoli software
Triggers you can use for a website/web page
 Triggers for identifying a web page
– When a web page completes loading
– When the browser starts navigating to a web page
– When a web element completes loading
 Triggers for detect actions on a web page
– When a web element is clicked
– When a left mouse button is clicked on a web page
– When a key is pressed on a web page
 Other triggers
– When the browser closes
IBM Software Group | Tivoli software
Triggers for identifying a web page
 When a web page completes loading (Web page completes loading)
 Used to detect a web page
 Used to detect when a web page is loaded.
 Every web page has HTML, DHTML contained in what is called a “document”
 “Document” when loaded receives a document complete web event
 Basic Options
 Web page can be identified by:
 Signature of the web page getting the document complete
 This is the signature of the web page. It could be a signature with the URL attribute.
 e.g. /child::html[@url#”http://mail.google.com/service(.*)”]
OR
 Check if HTML elements exist (i.e. HTML elements inside the web page can be used
to uniquely identify the web page)
 Add HTML elements on the web page (web document) to identify the web page
 You can add as many HTML elements for web page identification (typically username
and password fields on a web page is used)
IBM Software Group | Tivoli software
Triggers for identifying a web page continued
 Check if HTML elements exist
– For an HTML element, you can also check the value of the element in addition to the
existence of the HTML element.
 Advanced Options (Used rarely)
– Value
• When left empty, just the existence of the HTML element on the web page is checked
• If the value is specified, then the HTML element’s value is checked and must match the
specified value.
– Is value a regular expression
• No (default) => value is “as is” and not a regular expression
• Yes => value can be a regular expression. e.g. Value can be .*Sign.*
– Check inner text
• Value = value attribute of an HTML element versus check inner text?
• No (default) => check the value attribute of the HTML element.
– e.g. <input type=“text” id = “l1” value=“username”>
• Yes => check the inner text of the HTML element
– e.g. <p>This is the change password page</p>
IBM Software Group | Tivoli software
Triggers for identifying a web page continued
 Advanced Options
– Match current domain
• No (default) => @domain of web page does not need to match the @domain of
the web application for which the AccessProfile is written.
• Yes => @domain of web page needs to be same as the @domain of the web
application for which the AccessProfile is written.
– Handle document complete in embedded frames
• No (default) => monitor document loaded (document loading complete) events
only on the current web page and not in the embedded frames in the current
web page
• Yes => monitor document loaded (document loading complete) events on this
web page and on all the embedded frames containing a web document in this
web page.
 Things to note
– Used extensively for identifying a web page.
– Equivalent to the “Window is activated” trigger for windows used to identify a
window.
– Refreshing a web page does not cause this trigger to fire again.
IBM Software Group | Tivoli software
Triggers for detecting navigation to a webpage
 When the browser starts navigating to a web page (Browser starts navigating)
– Used to detect navigation to a web page
– When a button, hyperlink or any HTML element is clicked, it can cause navigation to another
web page. This trigger can be used to detect the start of the navigation.
– Typically used when the user navigates from the login web page or the change
password web page; to capture the credentials and information from the web page.
– It can navigate from a web page to another web page.
– No mechanism to identify the from and to web page. So, as long as navigation happens from
a webpage, this trigger will match successfully.
– Corresponds to the before navigate web browser event.
– As mentioned above, when you are not able to detect the specific action performed on the
webpage, this is generically used as a point to capture credentials on a login, change
password web page.
 Note: Used for capturing credentials on a login or change password page.
IBM Software Group | Tivoli software
Trigger to detect the loading of a web element
 When a web element completes loading (HTML element completes loading)
– For identifying a web page, this trigger can be used to detect the loading of a web element
inside the web page.
– The web element can be the body (web page loaded if body is loaded) identified by
/child::html
– This can only be used on certain web elements that support the onload event:
•
•
•
•
•
•
•
•
•
APPLET
BODY
FRAME
FRAMESET
IFRAME
IMG
LINK
SCRIPT
EMBED
– Typically used for the BODY object of a webpage to check if it has completed loading.
– After loading of the body, contents of web page is cleared.
– Properties of web page set only on element load. Wait for it to load and then auto-fill.
 Basic Options
– Signature of the web-element getting loaded
• Signature of any one of the above supported web elements.
• Typically /child::html indicating the BODY element of a web page
IBM Software Group | Tivoli software
Trigger to detect the loading of a web element
 Advanced Options
– Fire before javascript
• Web page might have javascript inside it. The Javascript event handler on the web page
might do some processing on the web page or form to clear the form or probably
convert the input to asterix.
• Javascript onload on a webpage might change the content of the web page as part of
the script. Example: It could clear the content of the web page or form.
• If it clears the contents on the form or web page, then you will want to detect the event
after the javascript finishes. =>Fire before javascript = No
• If Yes (default), then the trigger will match successfully before the javascript on the web
page is executed.
– Use javascript
•
•
•
•
This has nothing to do with the previous option.
Yes (default) => Use javascript mechanism to capture the web event for this trigger.
No => do not use javascript mechanism.
Typically Yes (default) is always used.
IBM Software Group | Tivoli software
Trigger to detect a click on a web element
 When a web element is clicked (HTML element is clicked)
– Used to detect when a web element is clicked
– This can be used only on web elements that generate the click event
– Typically buttons generate a click event.
– This is typically used for the submit button, log in button, log out button, change password
button on a web page.
– This can be used on any button that “submits” information.
– When this trigger matches successfully, typically credentials and information from the web
page is captured.
 Basic Options
– Signature of the web-control clicked
• Signature of the web control which is clicked
 Advanced Options
– When clicking on a button, if it has javascript to be executed, depending on what the
javascript does, you will need to use the option “Fire before javascript” accordingly
– Refer to Slide 54 on what the options mean.
– Mostly set to defaults, unless javascript modifies content after the web element is clicked.
IBM Software Group | Tivoli software
Trigger to detect a click on a web element continued
 When a left mouse button is clicked on a web element (Left mouse button is clicked on a
web page)
– Used to detect the click on any web (HTML) element.
– Typically used to detect the click on web elements on which “When a web element is
clicked” cannot be detected.
 Basic Options
– Signature of web control on which the mouse button is pressed
 Advanced Options
– None
 Things to Note
– Typically used on web elements for which “When a web element is clicked” cannot be used
– When using “When a web element is clicked”, it could have a javascript that might change
the contents of the input. When you capture the credentials under this trigger, it might
capture the changed input, which you don’t want.
– This trigger will successfully match, as soon as your mouse left button is pushed down on
the web control. So, this is matched even before the “When the web element is clicked”.
IBM Software Group | Tivoli software
Trigger to detect key press on a webpage/web element
 When a key is pressed on a web page (Key is pressed on a web page)
– Used to detect a key press (using the keyboard) on a web page (web element)
– When a key is pressed on a web element, it can be detected using this trigger
– Key press on a web element can be monitored using this trigger
 Basic Options
– Signature of the web-element getting the key-down msg
• Signature of the web element on which the key is pressed.
• e.g. Signature of the input box on the web page. Input box where you enter the
username or the password.
– Fire trigger on key
• Keystroke which needs to be monitored.
• ENTER key is the default
– Match text (regex)
• The collected keyboard input when the trigger is in the watch list can be compared with
a regular expression.
• Default => matches any collected keyboard input
 Advanced Options
• Use javascript: Refer to Slide 54 for details. Yes (default) is used in most cases.
IBM Software Group | Tivoli software
Trigger: Detect when the browser is closed
 When the browser closes (Browser closed)
– Detects when the browser window in which the AccessProfile is loaded is closed
– No signature needed
– This is used to reset any global properties
– When the browser is closed, if you want to set/reset global properties, you can do it under the
trigger.
– Any actions that need to be taken before the browser closes, can be done here.
IBM Software Group | Tivoli software
Hands on exercise
 Use of document complete trigger
 Use of other web triggers for transition
 Site with and without javascript
– https://login.salesforce.com
– http://wp6.dfw.ibm.com/wps/myportal - Validating AccessProfile
 Understand the concept of how the AccessProfile is loaded for the website.
 Illustrate load/unload of AccessProfile for a website.
IBM Software Group | Tivoli software
Triggers you can use for detecting text/output on mainframe, emulator
screens
 When a text is displayed on a window (Text displayed (mainframe optimized))
 When a text is found on a window (Text is found)
Emulator screen
identification text
IBM Software Group | Tivoli software
Mainframe/emulator trigger: When a text is displayed on a window
(mainframe optimized)
 Used to detect output or text displayed inside an emulator/mainframe screen.
 WYSIWYG – What you see is what you get => you can check for any text that appears inside
the emulator/mainframe screen
 Used to detect ‘Screen of interest’, based on what appears on the screen in an emulator.
 To detect log on/sign on screens, you will typically look for text that identifies the username,
password fields.
 To detect change password screens, you might want to look for Old Password, New
Password that might appear on the change password screen.
 When this trigger is in the watch list, it cannot be used to identify text that is already
present on the screen. It can be used to detect text to be displayed on the screen.
 For some mainframe applications, unique identifiers appear on the top right corner inside the
emulator screen. This identifier can be used to identify the screen of interest.
 Trigger will match successfully, only if it matches each of the “Text to match” specified in the
Sections match. All sections should match successfully.
 The text to match is specified as a regular expression. [One line per match text section]
 You always want to specify text such that you can uniquely identify the screen of interest. You
don’t want the trigger to match the screens on which you don’t want it to (false positives). So it
is important to pick the correct text to identify a screen.
IBM Software Group | Tivoli software
Mainframe/emulator trigger: When a text is displayed on a window
(mainframe optimized)
 Basic Options (Sections)
– Add text section for each line of text you want to match
– Match text (regex)
• Text to match for identifying the screen of interest
• If text is on multiple lines, you need multiple sections
• When the text is about to be displayed, it is compared to match text.
• At least one match text in the Match text section is NEW.
• e.g.
– .*Sign On.*
– .*Password.*
– .*Username.*
– .*Password[[:space:]]+ => Password followed by one or more spaces
– [[:space:]]+ => one or more space
– .* => one or more “any character”
• Matches this text irrespective of which line the text is displayed on the screen.
 Advanced Options (rarely used)
– Starting line, Ending line => line number of the starting line to end line until which you want to
match, instead of all lines on the screen. Specifies line boundary for match.
– Starting column, Ending column => start and end column number boundary for match
IBM Software Group | Tivoli software
Mainframe/emulator trigger: When a text is found on a window
(polling/checking every 1 second)
 The trigger’s purpose is similar to the Trigger “When a text is displayed on a window” on Slide 61
 Difference: this trigger can be used to check for existing text on a mainframe/emulator window,
that was displayed before the trigger was added to the watch list.
 It polls the screen every 1 second to compare the text in the match sections to the text on the
screen
 It is used to check for the presence of text on a screen.
 Sometimes, text is displayed on the screen, even before you can add the “When a text is
displayed on a screen” is added to the watch list. The only way you can identify such a screen of
interest is to use this trigger which inherently keeps scanning the screen and checking every
second.
 If “When a text is displayed” does not work even though you have specified the correct match text,
use this trigger.
 Using many such triggers can cause the application response to slowdown, due to constant
polling (and scanning of screen area) by the triggers.
 Basic Options
– Signature of the window where text-out is happening
• Signature of the emulator/mainframe screen on which you can see the text.
• It might not be the main window, but a child emulator window inside the main window
• Can also be an emulator window embedded in a browser.
– Sections – Refer to Slide 62
IBM Software Group | Tivoli software
Terminal emulator: Trigger to match only current line of screen output
 When a text is displayed on a window (Terminal) (Text is displayed (Terminal))
– Matches only with the current line of output text on the screen
– This trigger is typically used for terminal emulator applications on which screen is printed
line by line based on user request/command.
– e.g. PuTTY, SecureCRT
 Basic Options
– Match text (regex)
• Text to match for the current line of output text
• When the text is about to be displayed, it is compared to match text.
• e.g.
– .*Sign On.*
– .*Password.*
– .*Username.*
– .*Password[[:space:]]+ => Password followed by one or more spaces
– [[:space:]]+ => one or more space
– .* => one or more “any character”
• Matches this text irrespective of which line the text is displayed on the screen.
– Scan full screen- Recommended to set this to No (default) always.
 NOTE: If you do not want to match the just the current line of screen output,
then it is recommended that you use the mainframe triggers on Slide 60.
IBM Software Group | Tivoli software
Console window: cmd.exe – Detect text output on command prompt
 When a text is found on a console window (Text is found on a console window)
– Detects and monitors text displayed inside the command prompt window (cmd.exe)
– This is the only trigger that can be used to detect text inside a command prompt screen.
– It polls the screen every 1 second to compare the text in the match sections to the text on
the screen
– It is used to check for the presence of text on a command prompt screen.
 Basic Options
– Sections
• Refer to Slide 62
 Advanced Options
– Poll interval
• Default (1 second) – Every 1 second polls the cmd screen for text.
– Poll count
• You can limit the number of times the polling is done on the cmd screen to compare the
match text inside the sections.
• By default it is set to 0, which means polling is continuous and does not stop until this
trigger is in the watch list
 NOTE: This is the only trigger available for detecting text on a command prompt window
IBM Software Group | Tivoli software
HLLAPI Trigger: When a text is displayed on a window
(HLLAPI)
 When a text is displayed on a window (HLLAPI) (Text is displayed on a window (HLLAPI))
– Used in AccessProfile that is HLLAPI enabled for a mainframe emulator
– Used to detect text on a mainframe emulator screen.
– Matches only with the current line of output text on the screen
– This trigger is typically used for mainframe emulator applications that have HLLAPI
support using the HLLAPI DLL
– Matches the current output on the screen with the Sections in the trigger.
 Basic Options
– Sections: Same as Slide 62
 Advanced Options
– Match only differences between screens [Toggles between two behaviors (new text
versus existing text]
• Yes => (do not match full screen)
– Text output appears on the current screen and the current screen looks the same.
e.g. Screen might look the same if the user entered the wrong password. Just a text
output indicating the wrong password input will be shown on the same screen.
• No => (match contents on the whole emulator screen)
– The screen is different from the current screen. e.g. screen appearing after a
successful log on, screen appearing after a successful change password, change
password screen etc.
IBM Software Group | Tivoli software
HLLAPI – Bootstrap trigger “When a session starts” (HLLAPI)
 When a session starts (HLLAPI) (HLLAPI session starts)
– Mainframe emulators like IBM Personal Communications, Attachmate Extra, Host on
Demand that have HLLAPI support have to use this trigger as the first trigger before you
can look for text on the emulator
– Used to detect the start of the HLLAPI session
– Any mainframe emulator’s AccessProfile that uses HLLAPI should use this trigger before
using the “When a text is displayed on a window (HLLAPI)” trigger.
– Locate the correct HLLAPI DLL for the emulator and provide the path in the AccessProfile.
– Under General properties in an AccessProfile, “Enable HLLAPI support for mainframe
applications” should be checked and the “Dll relative path” to the HLLAPI DLL should be
provided.
 Basic Options
– Short name (Required field in 8.0) (From 8.0.1 TAM ESSO onwards will be * by default)
• Short name for the session that is between A-Z.
• This information can be typically found of the emulator window.
• The first emulator session is typically A.
 Advanced Options
– Long name
• Alternate name to identify the session.
• Upto 8 characters
• Rarely used.
IBM Software Group | Tivoli software
HLLAPI Triggers
 When a session starts (HLLAPI) (HLLAPI session starts)
 When a text is displayed on a window (HLLAPI) (Text is displayed (HLLAPI))
 When a session starts (HLLAPI) (HLLAPI session starts) MUST be the first trigger
used for HLLAPI applications.
Note:
- You must First use the “When a session starts” trigger. (bootstrap trigger)
- After this trigger fires (matches) “When a text is displayed on a window (HLLAPI)” can be
used to detect text on the emulator screen.
IBM Software Group | Tivoli software
Triggers you can use for Java applications
 When the JVM becomes available (Java) (JVM becomes available)
 When a window is activated (Java) (Java window is activated)
 When a window is found (Java) (Java window is found)
 When a window is clicked (Java) (Java window is clicked)
 When a key/keys are pressed on a window (Java) (Key is pressed
on a Java window)
IBM Software Group | Tivoli software
Triggers you can use for Java applications continued
 When the JVM becomes available
– This is the first trigger that MUST be used for any Java application AccessProfile, generated
using the TAM ESSO Java support.
– Java support has to be installed for the JRE (Java runtime environment) used by the
application
– Check for accessibility.properties file inside the application’s JRE’s (JRE used by the
application) lib folder. If it is present, then java support is installed for the application.
– If not, then you need to manually install java support for the JRE
• cd to %TAM ESSO INSTALL FOLDER%\JavaSupport\
• Run JSupportInstaller.bat <path to JRE>. For AccessAgent version 8.0.1 and above
run JVMSupport.vbs /d <path to JRE>
– Supports Oracle VM, Sun JVM
– This trigger checks if the JVM is available and ready for the application.
– Only after using this trigger, should you used the other Java triggers to monitor and detect
other events like presence of a window etc.
 Basic Options
– None
 Advanced Options
– None
IBM Software Group | Tivoli software
When a Java window is displayed (Java)
 Same as the window trigger “When a window is activated” on Slide 21.
 Refer to Slide 21 for details
 The only difference is the signature used to identify the window. It is a jwnd for a Java window
signature using this trigger instead of wnd
 All “Java triggers” have jwnd in the signature instead of wnd
 If this trigger does not work, you can use the polling equivalent “When a window is found
(Java)”
– Signature of the Java window to keep looking for.
– Behavior is similar to “When a window is found” window trigger on Slide 22. Only difference
is the use of jwnd for the Java window signature.
 Things to Note
– Typically used to detect Java windows that appear after sign on or log on.
– Used to detect change password Java dialogs.
– This is not used to detect a log on window immediately after the JVM available trigger.
Instead you should used “Java window is found” trigger. Note the difference between this
and a non-Java based Windows application.
– You can also use the window trigger equivalents if both the above don’t work. But the
window equivalents on Slide 21 & 22 will have window signatures (wnd).
IBM Software Group | Tivoli software
When a control/button inside a window is clicked (Java)
 Detect clicking of a Java control or button inside a Java window.
 Basic options
– Signature of the control getting the click event.
 Advanced options
– None
 Things to note
– Click event on a button or control on a Java window can be detected.
– Signature used is a Java signature (jwnd)
– Typically used for click on a button in a Java application.
IBM Software Group | Tivoli software
Detecting keystroke on a Java window/control (Java)
 Detecting keystroke and collector of keyboard input.
 Used to detect a key press using the keyboard on a Java control/window
 Similar to the window key down trigger on Slide 34, except that this is on a Java
window and uses a Java signature to identify the window.
 Refer to Slide 34 for a detailed understanding of how this trigger works and can
be used.
 Used as a method to collect keyboard input for capture and for detecting key
press on Java controls and Java windows.
IBM Software Group | Tivoli software
Hands on exercise – Java application
IBM Software Group | Tivoli software
Universal triggers – Wait and fire, fire immediately, fire on log on to
TAM ESSO, fire on logoff from TAM ESSO AccessAgent
 Fires after specified time
– Trigger fires after a specified time
– Used when you want to delay certain actions.
– Typically actions can be delayed by 0.1 or 0.001 seconds
– Used for state transition along with other triggers if no incoming event is matches other
triggers within a specified time
– Can be used to test conditions
 Fires immediately
– Trigger fires immediately
– Typically used to in cases where you only want to test conditions.
– Condition is added to this trigger. When trigger is added to watch list, it immediately fires
– Two or more of this trigger is used to test conditions and branch the application workflow
accordingly
 On logon to AccessAgent (detect log on to AccessAgent)
– When a user logs in to TAM ESSO AccessAgent, this trigger checks for the presence of
the window identified by the signature and if it matches, the trigger fires.
 On logoff from AccessAgent (typically used on kiosk workflows for graceful application
logoff) - (detect log off from AccessAgent)
– Used to detect logoff from AccessAgent to perform additional actions on an application.
– Trigger matches when user logs off from AccessAgent
IBM Software Group | Tivoli software
Hands on exercise
 Demonstrate use of logoff and log on (sign on) trigger
 Show the use of “Fires immediately” and “Fires after a specified
time” triggers
 Visualize AccessProfile framework for applications.
 Load and show examples.
IBM Software Group | Tivoli software
Where is the AccessProfile representing the state engine/workflow
engine loaded?
 Windows application (EXE)
– Loaded in the EXE
 Emulator (EXE)
– Loaded in the EXE
 Java application (EXE)
– Loaded in the EXE
 16-bit application (Task EXE)
– Loaded in the 16-bit task
 Java applet in a webpage (website/ web page)
– Loaded in the web page specified in the URL
 Web application (website/web page)
– Loaded in the web page specified in the URL
IBM Software Group | Tivoli software
Summary
 Ability to build an AccessProfile
 Trigger picking for workflow of interest for an application
 Understand trigger alternatives
 Trigger match mechanism
 Properties
 Test conditions
 Visualize overall structure of an AccessProfile.