Upload
rodger-adams
View
215
Download
2
Embed Size (px)
Citation preview
Agent Templates
A Single-Triggered Agent
Post Event and one or more State Update’s
(performed after Trigger, TriggerGuard, & Gaurd satisfaction)
Action
Beg
in
Disjunct, Conjunct, or Sequence of Event Specs
(evaluated for each Event Spec match)
Trigger
RecordEventData, RecordEventTransitionData,RecordEventSequenceData, RecordStateData,RecordStateVectorData, RecordStateDataPerEvent,RecordUserData
(recorded just before Action performed)
Data
SourceIsNew, SourceInSet, SourceNotInSet,SourceClassInSet, or SourceClassNotInSet
(evaluated for event satisfying Trigger)
Trigger Guard
Disjunct or Conjunct of State Check’s
(evaluated after Trigger & TriggerGuard satisfaction)
Guard
A Dual-Triggered Agent
Same as aboveGuardBeg
in
Same as aboveTrigger
RecordEventData, RecordEventTransitionData,RecordEventSequenceData, RecordStateDataPerEvent
(Event-related data recorded between Begin and EndTrigger, TriggerGuard, & Gaurd satisfaction)
Data
Same as aboveTrigger Guard
RecordStateData, RecordStateVectorData,RecordUserData
(State- and user-related data recorded just before End Action performed)
Data
Same as aboveAction
Same as aboveGuardEn
d
Same as aboveTrigger
Same as aboveTrigger Guard
Same as aboveAction
Default Agents
“Use”
Beg
in USE|*|*Trigger
RecordEventData()Data
“Use New”
PostEvent(“USE_NEW”, TriggerSource)ActionB
eg
in
USE|*|*Trigger
RecordEventData()Data
SourceIsNew()Trigger Guard
“Use Text”
PostEvent(“USE”, TriggerSource)ActionB
eg
in
KEY_PRESSED|*|javax.swing.JTextField ORKEY_PRESSED|*|javax.swing.JTextArea ORKEY_PRESSED|*|javax.swing.JTextPane
Trigger
RecordEventData()Data
“Use Non-Text”
PostEvent(“USE”, TriggerSource)Action
Beg
in
SourceClassNotInSet( javax.swing.JTextField, javax.swing.JTextArea, javax.swing.JTextPane)
Trigger Guard
RecordEventData()Data
MOUSE_PRESSED|*|*Trigger
“Use Tabs”
Beg
in USE|*|javax.swing.JTabbedPane Trigger
RecordStateData(ValueOf(TriggerSource))Data
“Value Initial”
UpdateState(“Focus Value”, ValueOf(TriggerSource))ActionBeg
in FOCUS_GAINED|*|*Trigger
“Value Provided”
Beg
in VALUE_PROVIDED|*|*Trigger
RecordEventData()Data
“Value Provided Combo”
Beg
in ITEM_STATE_CHANGED|*|javax.swing.JComboBoxTrigger
PostEvent(VALUE_PROVIDED, TriggerSource)Action
“Value Provided Non-Combo”
CheckState(“Focus Value”, “!=“, ValueOf(TriggerSource))
Guard
Beg
in
FOCUS_LOST|*|*Trigger
PostEvent(VALUE_PROVIDED, TriggerSource)Action
Stylepad Example
Menu Agents
“File Menu”
PostEvent(“MENU”, AgentSource)Action
Beg
in
USE|Window/Stylepad/MenuItem/New|* OR USE|Window/Stylepad/MenuItem/Open|* OR USE|Window/Stylepad/MenuItem/Save|* OR USE|Window/Stylepad/MenuItem/Print|* OR USE|Window/Stylepad/MenuItem/Exit|*
Trigger
RecordEventData()Data
“Edit Menu”
PostEvent(“MENU”, AgentSource)Action
Beg
in
USE|Window/Stylepad/MenuItem/Cut|* OR USE|Window/Stylepad/MenuItem/Copy|* OR USE|Window/Stylepad/MenuItem/Paste|* OR USE|Window/Stylepad/MenuItem/Undo|* OR USE|Window/Stylepad/MenuItem/Redo|*
Trigger
RecordEventData()Data
“Color Menu”
PostEvent(“MENU”, AgentSource)ActionB
eg
in
USE|Window/Stylepad/MenuItem/Red|* OR USE|Window/Stylepad/MenuItem/Green|* OR USE|Window/Stylepad/MenuItem/Blue|*
Trigger
RecordEventData()Data
“Font Menu”
PostEvent(“MENU”, AgentSource)Action
Beg
in
USE|Window/Stylepad/MenuItem/Helvetica|* OR USE|Window/Stylepad/MenuItem/Courier|* OR USE|Window/Stylepad/MenuItem/Times Roman|* OR USE|Window/Stylepad/MenuItem/10|* ORUSE|Window/Stylepad/MenuItem/12|* ORUSE|Window/Stylepad/MenuItem/18|* ORUSE|Window/Stylepad/MenuItem/24|* ORUSE|Window/Stylepad/MenuItem/Bold|* ORUSE|Window/Stylepad/MenuItem/Italic|* ORUSE|Window/Stylepad/MenuItem/Underline|*
Trigger
RecordEventData()Data
“Debug Menu”
PostEvent(“MENU”, AgentSource)Action
Beg
in
USE|Window/Stylepad/MenuItem/Dump Model|* OR USE|Window/Stylepad/MenuItem/Show Elements|* OR USE|Window/Stylepad/MenuItem/Hebrew Keymap|* OR USE|Window/Stylepad/MenuItem/Arabic Keymap|* OR USE|Window/Stylepad/MenuItem/English Keymap|*
Trigger
RecordEventData()Data
“All Menus”
Beg
in MENU|*|*Trigger
RecordEventData()Data
Toolbar Agents
“File Toolbar”
PostEvent(“TOOL”, AgentSource)ActionB
eg
in
USE|Window/Stylepad/ImageIcon/new.gif|* OR USE|Window/Stylepad/ImageIcon/open.gif |* OR USE|Window/Stylepad/ImageIcon/save.gif |* OR USE|Window/Stylepad/ImageIcon/print.gif |*
Trigger
RecordEventData()Data
“Edit Toolbar”
PostEvent(“TOOL”, AgentSource)ActionB
eg
in
USE|Window/Stylepad/ImageIcon/cut.gif|* OR USE|Window/Stylepad/ImageIcon/copy.gif |* OR USE|Window/Stylepad/ImageIcon/paste.gif |*
Trigger
RecordEventData()Data
“Font Toolbar”
PostEvent(“TOOL”, AgentSource)ActionB
eg
in
USE|Window/Stylepad/ImageIcon/bold.gif|* OR USE|Window/Stylepad/ImageIcon/italic.gif |* OR USE|Window/Stylepad/ImageIcon/underline.gif |*
Trigger
RecordEventData()Data
“Align Toolbar”
PostEvent(“TOOL”, AgentSource)ActionB
eg
in
USE|Window/Stylepad/ImageIcon/left.gif|* OR USE|Window/Stylepad/ImageIcon/center.gif |* OR USE|Window/Stylepad/ImageIcon/right.gif |*
Trigger
RecordEventData()Data
“All Toolbars”
Beg
in TOOL|*|*Trigger
RecordEventData()Data
Window Agents
“Print Window”
PostEvent(“OPEN”, AgentSource)ActionBeg
in WINDOW_ACTIVATED|Window/Print|*Trigger
PostEvent(“CLOSE”, AgentSource)Action
En
d
WINDOW_CLOSING|Window/Print|* OR USE|Window/Print/OK|* OR USE|Window/Print/Cancel|*
Trigger
RecordEventData(VALUE_PROVIDED|*|*)RecordEventSequenceData(VALUE_PROVIDED|*|*)
Data
RecordStateData( "Printer Name", "Printer Status", "Printer Type", "Print to File", "All", "Current Page", "Pages:", "Pages", "Number of Copies", "Collate")
Data
“Print Mode & Pages”
Beg
in USE|Window/Print/OK|*Trigger
RecordStateVectorData( "Print to File", "All", "Current Page", "Pages:”)
Data
“Elements Window”
PostEvent(“OPEN”, AgentSource)ActionBeg
in WINDOW_ACTIVATED|Window/Elements|*Trigger
PostEvent(“CLOSE”, AgentSource)ActionEn
d WINDOW_CLOSING|Window/Elements|*Trigger
Beg
in
RecordEventData()Data
OPEN|*|*Trigger
“All Windows”
Command Agents
“File->New”
PostEvent(“CMD”, AgentSource)ActionBeg
in USE|Window/Stylepad/MenuItem/New|* ORUSE|Window/Stylepad/ImageIcon/new.gif|*
Trigger
RecordEventData()Data
“File->Open”
PostEvent(“CMD”, AgentSource)ActionBeg
in USE|Window/Stylepad/MenuItem/Open|* ORUSE|Window/Stylepad/ImageIcon/open.gif|*
Trigger
RecordEventData()Data
“File->Save”
PostEvent(“CMD”, AgentSource)ActionBeg
in USE|Window/Stylepad/MenuItem/Save|* ORUSE|Window/Stylepad/ImageIcon/save.gif|*
Trigger
RecordEventData()Data
“File->Print”
PostEvent(“CMD”, AgentSource)ActionB
eg
in
USE|Window/Stylepad/ImageIcon/print.gif|* OR USE|Window/Print/OK|* OR USE|Window/Print/Cancel|*
Trigger
RecordEventData()Data
“File->Exit”
PostEvent(“CMD”, AgentSource)ActionBeg
in USE|Window/Stylepad/MenuItem/Exit|*Trigger
RecordEventData()Data
“Edit->Cut”
PostEvent(“CMD”, AgentSource)ActionBeg
in USE|Window/Stylepad/MenuItem/Cut|* ORUSE|Window/Stylepad/ImageIcon/cut.gif|*
Trigger
RecordEventData()Data
“Edit->Copy”
PostEvent(“CMD”, AgentSource)ActionBeg
in USE|Window/Stylepad/MenuItem/Copy|* ORUSE|Window/Stylepad/ImageIcon/copy.gif|*
Trigger
RecordEventData()Data
“Edit->Paste”
PostEvent(“CMD”, AgentSource)ActionBeg
in USE|Window/Stylepad/MenuItem/Paste|* ORUSE|Window/Stylepad/ImageIcon/paste.gif|*
Trigger
RecordEventData()Data
“Edit->Undo”
PostEvent(“CMD”, AgentSource)ActionBeg
in USE|Window/Stylepad/MenuItem/Undo|*Trigger
RecordEventData()Data
“Edit->Redo”
PostEvent(“CMD”, AgentSource)ActionBeg
in USE|Window/Stylepad/MenuItem/Redo|*Trigger
RecordEventData()Data
“All Commands”
Beg
in CMD|*|*Trigger
RecordEventData()RecordStateDataPerEvent(“File Type”)
Data
File Type Agents
“File Type (TXT)”
CheckState(“Window/Styelpad”, “Ends w/“, “.txt”)
Guard
Beg
in
USE|*|*Trigger
Action UpdateState(“File Type”, “TXT”)
“File Type (HTML)”
CheckState(“Window/Styelpad”, “Ends w/“, “.html”) ORCheckState(“Window/Styelpad”, “Ends w/“, “.htm”)
Guard
Beg
in
USE|*|*Trigger
UpdateState(“File Type”, “HTML”)Action
Menu Count Agents
“Menu Count++”
SourceIsNew()Trigger Guard
Beg
in
ITEM_STATE_CHANGED|*|javax.swing.JMenuTrigger
UpdateState(“Menu Count”, ValueOf(“Menu Count”) + 1)Action
RecordEventData()Data
“Menu Count = ?”
Beg
in USE|*|javax.swing.JMenuItemTrigger
RecordEventData()RecordStateDataPerEvent(“Menu Count”)
Data
“Menu Count > 5”
Beg
in USE|*|javax.swing.JMenuItemTrigger
RecordEventData()Data
CheckState(“Menu Count”, “>”, 5)Guard
“Menu Count Reset”
SourceClassNotInSet(javax.swing.JMenu)Trigger Guard
Beg
in
USE|*|*Trigger
UpdateState(“Menu Count”, 0)Action
Cargo Example
“Section 1”
Beg
in
USE|Window/Cargo Query/Air|* ORUSE|Window/Cargo Query/Ocean|* ORUSE|Window/Cargo Query/Motor|* ORUSE|Window/Cargo Query/Rail|* ORUSE|Window/Cargo Query/Any|*
Trigger
PostEvent(“SECTION”, AgentSource)Action
En
d
SourceNotInSet( Window/Cargo Query/Air Window/Cargo Query/Ocean Window/Cargo Query/Motor Window/Cargo Query/Rail Window/Cargo Query/Any)
Trigger Guard
USE|*|*Trigger
“Section 2”
PostEvent(“SECTION”, AgentSource)Action
Beg
inSourceNotInSet(Cargo Identification)Trigger Guard
ITEM_STATE_CHANGED|Cargo Identification|*Trigger
En
d
USE|*|*Trigger
“Section 3”
PostEvent(“SECTION”, AgentSource)Action
Beg
inSourceNotInSet(Cargo Qualification)Trigger Guard
ITEM_STATE_CHANGED|Cargo Qualification|*Trigger
En
d
USE|*|*Trigger
“Section 4”
PostEvent(“SECTION”, AgentSource)Action
Beg
inSourceNotInSet(Cargo Status)Trigger Guard
ITEM_STATE_CHANGED|Cargo Status|*Trigger
En
d
USE|*|*Trigger
“Section 5”
PostEvent(“SECTION”, AgentSource)Action
Beg
inSourceNotInSet(Cargo Location)Trigger Guard
ITEM_STATE_CHANGED|Cargo Location|*Trigger
En
d
USE|*|*Trigger
“Section 6”
PostEvent(“SECTION”, AgentSource)Action
Beg
in
SourceNotInSet( From Month, From Day, From Year, From Hour, From Minute)
Trigger Guard
ITEM_STATE_CHANGED|From Month|* ORUSE|From Day|* ORUSE|From Year|* ORUSE|From Hour|* ORUSE|From Minute|*
Trigger
En
d
USE|*|*Trigger
“Section 7”
PostEvent(“SECTION”, AgentSource)Action
Beg
in
SourceNotInSet( To Month, To Day, To Year, To Hour, To Minute)
Trigger Guard
ITEM_STATE_CHANGED|To Month|* ORUSE|To Day|* ORUSE|To Year|* ORUSE|To Hour|* ORUSE|To Minute|*
Trigger
En
d
USE|*|*Trigger
“Section 8”
PostEvent(“SECTION”, AgentSource)Action
Beg
inSourceNotInSet( List by Location, Summarize by Location, Summarize All)
Trigger Guard
USE|List by Location|* ORUSE|Summarize by Location|* ORUSE|Summarize All|*
Trigger
En
dUSE|*|*Trigger
“Section Events”
Beg
in SECTION|*|*Trigger
RecordEventData(SECTION|*|*)Data
“Section Transitions”
Beg
in SECTION|*|*Trigger
En
d USE|Window/Cargo Query/Reset|* ORUSE|Window/Cargo Query/Submit|*
Trigger
RecordEventTransitionData(SECTION|*|*)Data
“Section Sequences”
Beg
in SECTION|*|*Trigger
En
d USE|Window/Cargo Query/Reset|* ORUSE|Window/Cargo Query/Submit|*
Trigger
RecordEventSequenceData(SECTION|*|*)Data
“Section Events” Data
“Section Transitions” Data
“Section Sequence” Data
“Submit Values”
Beg
in USE|Window/Cargo Query/Submit|*Trigger
RecordStateData( Window/Cargo Query/Air Window/Cargo Query/Ocean Window/Cargo Query/Motor Window/Cargo Query/Rail Window/Cargo Query/Any Cargo Identification Cargo Qualification Cargo Status Cargo Location From Month, From Day, From Year, From Hour, From Minute To Month, To Day, To Year, To Hour, To Minute, List by Location, Summarize by Location, Summarize All)
Data
“OK to Select Mode”
UpdateState(“Ok to select mode”, True)ActionB
eg
in
BEGIN_EVENT|*|* OR USE|Window/Cargo Query/Reset|* OR USE|Window/Cargo Query/Submit|*
Trigger
“Not OK to Select Mode”
UpdateState(“Ok to select mode”, False)Action
Beg
in
USE|*|*Trigger
SourceNotInSet( Window/Cargo Query/Air Window/Cargo Query/Ocean Window/Cargo Query/Motor Window/Cargo Query/Rail Window/Cargo Query/Any Window/Cargo Query/Reset Window/Cargo Query/Submit)
Trigger Guard
“Mode of Travel Reselected”
UpdateState(“Ok to select mode”, True)Action
Beg
in
CheckState(“Ok to select mode”, “!=“, True)Guard
USE|Window/Cargo Query/Air|* ORUSE|Window/Cargo Query/Ocean|* ORUSE|Window/Cargo Query/Motor|* ORUSE|Window/Cargo Query/Rail|* ORUSE|Window/Cargo Query/Any|*
Trigger
RecordUserData(“Mode of Travel Reselected”, “Reselecting the ‘mode of travel’ after making subsequent selections resets all selections."
Data
Phone Example
Beg
in VALUE_CHANGED|Window/Phone/Control/City|* ORVALUE_CHANGED|Window/Phone/Control/State|*
Trigger
RecordStateVectorData( ValueOf(TriggerSource), Window/Phone/Control/ZIP)
Data
“City/State Edited by Hand”
Beg
in
CheckState(Window/Phone/Control/ZIP, “=“, “”)Guard
VALUE_CHANGED|Window/Phone/Control/City|* ORVALUE_CHANGED|Window/Phone/Control/State|*
Trigger
RecordUserData(“Enter ZIP to Complete City/State”, “The City and State can typically be completed automatically based on the ZIP.”
Data
“Enter ZIP to Complete City/State”
Other Agents
“Message Dialogs”
Beg
in WINDOW_ACTIVATED|*|javax.swing.JDialogTrigger
RecordStateData(JOptionPane)Data