760 likes | 1.6k Views
Pre-requisites and goals. Pre-requisite for taking this UnitTaken 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 goalsUnderstand trigger match mechanism and state transiti29971
E N D
1. TIVOLI ACCESS MANAGER FOR ENTERPRISE SINGLE SIGN ON (ESSO)(ADVANCED ACCESSPROFILING)UNIT TWO Author: Sharad Ganesh/New York/IBM
2. 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)
3. 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
4. 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.
5. Understanding the concept of a trigger by example AccessProfile
6. Understanding the concept of a trigger by example continued Triggers
7. 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.
Take an example here to show what a trigger is from an AccessProfileTake an example here to show what a trigger is from an AccessProfile
8. 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.
Introduce the concept of a watch list.Introduce the concept of a watch list.
9. 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.
10. 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.
11. 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.
12. 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 auto-fill/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} Mention initial value as NOT_DEFINEDMention initial value as NOT_DEFINED
13. 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.
14. 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>…
}
15. Conditions: Test condition example
16. Conditions: Test condition example continued
17. 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.
18. 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) Watch listWatch list
19. 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.
Give an example here- with a Fires after a specified time as another trigger.Give an example here- with a Fires after a specified time as another trigger.
20. 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
21. 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 signs-in, 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 Top level window in an application. SSO will happen only when a user is logged on to TAM ESSO AccessAgent and ‘Automatic sign on’ is enabled on the AccessAgent tray menu. Mention how all this activate can be generated – ALT+TAB, windows comes up etc.Top level window in an application. SSO will happen only when a user is logged on to TAM ESSO AccessAgent and ‘Automatic sign on’ is enabled on the AccessAgent tray menu. Mention how all this activate can be generated – ALT+TAB, windows comes up etc.
22. 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.
Do not use this by default until you try the “Window is activated” trigger.Do not use this by default until you try the “Window is activated” trigger.
23. 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.
24. 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
25. 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.
26. 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
27. 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.
28. 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
29. 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
VERY IMPORTANT: Mention that the window should exist at the time of adding to the watch listVERY IMPORTANT: Mention that the window should exist at the time of adding to the watch list
30. 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
Typically on button in a window with class_name=“#32770”Typically on button in a window with class_name=“#32770”
31. 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) Does it matter where inside a button you click? 2. X and Y will need to be used only on buttons inside a owner drawn window.
Use WinSpector or Spy++ to get X and Y.
Does it matter where inside a button you click? 2. X and Y will need to be used only on buttons inside a owner drawn window.
Use WinSpector or Spy++ to get X and Y.
32. 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.
33. 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
34. 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.
35. 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.
36. 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.
37. 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. () needed only for extraction. Parenthesis around regular expression not needed for match but only for extraction.() needed only for extraction. Parenthesis around regular expression not needed for match but only for extraction.
38. 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
When you want the Alt, Ctrl, Shift key to be pressed along with another character (key), then use Check Alt or Check Ctrl or Check Shift.When you want the Alt, Ctrl, Shift key to be pressed along with another character (key), then use Check Alt or Check Ctrl or Check Shift.
39. 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
40. 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’
41. 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
42. 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 Click refers to mouse button down for practical purposesClick refers to mouse button down for practical purposes
43. 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
44. 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.
45. 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
47. 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
48. 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)
49. 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>
50. 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.
51. 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.
52. 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
53. 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.
54. 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.
55. 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”.
56. 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.
57. 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.
58. 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.
Talk about unloading of an AccessProfile from an application a.k.a state engine thrown away. Key concept to understand.Talk about unloading of an AccessProfile from an application a.k.a state engine thrown away. Key concept to understand.
59. 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)
60. 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. Point out why it is different from typical Windows applications. Emulator is actually a windows application with an emulator screen that displays textPoint out why it is different from typical Windows applications. Emulator is actually a windows application with an emulator screen that displays text
61. 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
62. 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 Displayed trigger fires when at least one of the text in the sections is 'new'. found fires even if it was already present. that is the biggest difference between the two. all sections of course have to match in both the cases.
Displayed trigger fires when at least one of the text in the sections is 'new'. found fires even if it was already present. that is the biggest difference between the two. all sections of course have to match in both the cases.
63. 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.
64. 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
65. 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.
66. 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.
67. 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.
68. 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)
69. 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
70. 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). JVM available and then a jwnd (Java window) found. Do not use a “When a window is activated (Java)” as there's a race condition in the beginning (the activate might come first, so you won't get the jwnd activate event until you do an ALT+TAB). Use jwnd-activate for stuff like success screens or later screens once JVM is definitely there for sure. JVM available and then a jwnd (Java window) found. Do not use a “When a window is activated (Java)” as there's a race condition in the beginning (the activate might come first, so you won't get the jwnd activate event until you do an ALT+TAB). Use jwnd-activate for stuff like success screens or later screens once JVM is definitely there for sure.
71. 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.
72. 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. Highlight when to use Check Alt, Check Shift, Check Ctrl versus Alt, Ctrl, Shift in the dropdown.Highlight when to use Check Alt, Check Shift, Check Ctrl versus Alt, Ctrl, Shift in the dropdown.
73. Hands on exercise – Java application
74. 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
75. 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.
76. 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
77. 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.