Agent Templates. A Single-Triggered Agent Post Event and one or more State Update’s (performed...

Preview:

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

Recommended