Advanced Features
This section describes some additional features you can use to define an expression editor grammar.
ATG Personalization Programming Guide
.
Documentation Home
Feedback
Highlighting
Prev
Up
Next
Contents
Search
Personalization Module Programming
Setting Up a Profile Repository
Introduction to Profile Repositories
Internal and External User Profiles
Profiles in a Multisite Environment
Profile Repository Administration Interfaces
Defining the Profile Repository
Defining Profile Sub-Types
Profile Repository Caching
Standard User Profile Repository Definition
Modifying Standard Profile Properties
Configuring the Property Manager Component
Configuring the Profile Tools Component
ACC Sorting Attributes
ACC Display Name Attribute
Extending the Standard User Profile Repository Definition
Adding Properties to a Database Table
XML File Combination and the User Profile Repository Definition
Moving Properties to a Different Database Table
Debugging Repository Definition Files
Replacing the Standard User Profile Repository Definition
Using a Different Definition File
Replacing userProfile.xml
Configuring a Profile Repository Component
Migrating Profiles for Use with an Internal Profile Repository
Profile Migration Manager Properties
Setting Up an LDAP Profile Repository
Creating the LDAP Profile Repository Component
Configuring the Personalization Module to use the LDAP Repository
LDAP Password Encryption
Sample LDAP Profile Repository Definition File
Setting Up a Composite Profile Repository
Introduction to Composite Profile Repositories
Creating Composite Profile Items
Basic Process for Setting Up a Composite Profile Repository
Resolving Property Names in a Composite Repository
Sample Definition File for a Composite Profile Repository
Configuring Your Personalization Module for a Composite Profile Repository
Overriding the ProfileAdapterRepository Component
Creating a Separate Composite Profile Repository
Updating the PropertyManager for a Composite Repository
Configuring Targeted E-mail for a Composite Repository
Configuring the Scenarios Module to Use a Composite Profile Repository
Performing Queries against a Composite Profile Repository
Working with User Profiles
Tracking Users
Tracking Guest Users
Tracking Registered Users
Profile Cookie Configuration
Security Status
Using Security Status in Content Pages
User Profiling Tools
/atg/userprofiling/Profile
/atg/userprofiling/ProfileRequest
/atg/userprofiling/ProfileTools
/atg/userprofiling/PropertyManager
/atg/userprofiling/ProfileEventTrigger
/atg/userprofiling/ProfileUpdateTrigger
Profile Form Handlers
The ProfileForm Class
The ProfileFormHandler Class
Ensuring Transactions in Form Handlers
Multiple Profile Form Handlers
The MultiProfileForm class
The MultiProfileAddForm class
The MultiProfileUpdateForm class
Managing User Logins
Using Case Insensitive Login Names
Password Hashing
Password Management Features
Using Password Expiration
Using Strong Password Rule Checks
Handling Forgotten Passwords
Access Control
Configuring the Access Control Servlet
AccessRightAccessController
GroupAccessController
RuleAccessController
Controlling Anonymous User Access
Configuring Derived Properties that Calculate Time and Date
TimeInterval
YearMonthDay
DaysBeforeAnnualEvent
Managing Preview User Swapping
PreviewProfileRequestProcessor Component
Preventing Profile Swapping in Non-Preview Web Applications
Working with the Dynamo User Directory
User Directory Architecture
Creating Organizations and Roles
User Directory Security
Configuring a User Authority
Setting ACC and Object Access Rights through Access Control Lists
Using Roles for Access Control
User Directory API
atg.userdirectory
atg.userdirectory.droplet
atg.userdirectory.repository
Dynamo User Directory Implementation
User Directory Repository Definition
Standard User Directory Definition File
Configuring User Directory Components
Caching and the User Directory
Setting Up an LDAP User Directory
Setting Up a Linked Repository
Removing Information from an LDAP User Directory
Sample XML Files for an LDAP User Directory
Configuring LDAP User Directory Components
ProfileUserDirectory
ProfileUserDirectorySpider
LDAPOrganizationItemFinder
ProfileItemFinder
PropertyManager
ProfileUserDirectoryProperties
Caching an LDAP User Directory
Linking SQL and LDAP Repositories
Using Implicit Repository Linking
Defining the SQL/LDAP Linked Repositories
Sample SQL/LDAP Linked Repository Definitions
Configuring Personalization Module Components for Linked Repositories
PropertyManager Component
ProfileItemFinder Component
Creating Rules for Targeting Content
Elements of Rule Sets
Accept Rules
Reject Rules
Combining the Accept Rules and Reject Rules
Sorting Directives
Including Elements from Other Sources
Rule Set Structure
Rules Tag Syntax
<ruleset> Tag
<accepts> Tag
<rejects> Tag
<includes> Tag
<rule> Tag
Rule Tag Attributes
Referring to Profile Attributes in Rules
Rule Tag Operations
<valueof> Tag
valueof Types
Using Indexed Property Values
Target Nodes Inside Boolean Expressions
<sortby> Tag
<sortbyvalue> Tag
<site> Tag
Null Values in Rules
Creating a Rule Set for a Profile Group that Includes Roles
Including Rule Sets, Rules, and Sorting Directives
Examples: src Attribute
Complex Rules Example
Setting Up Targeting Services
Setting Up a RuleSetService
Setting Up a RuleBasedRepositoryTargeter Service
Setting Up a RuleBasedRepositoryItemGroup Service
Setting Up a TargetingSourceMap Service
Using TargetingResults
Defining Profile and Content Groups
Profile Groups
Content Groups
Managing User Segments
How Segment Lists Are Used
Conflict Resolution
Programming Interface
Architecture and Implementation
Invoking in Servlet Beans
Using Slots to Deliver Content
Using Targeted E-mail
Creating Targeted E-mail
Creating a Targeted E-mail Template
Specifying a MessageContentProcessor
Sending Message Content as Both Text and HTML
Creating the Recipient List
Sending Targeted E-mail
Sending E-mail to Users Without Profiles
Viewing, Canceling or Resuming a Mailing
Avoiding E-Mail Fatigue
Improving Performance for SQL JMS Mailings
Handling E-mail Problems
Failed E-mail
Bounced E-mail
Stopped E-mail Campaigns
Distributing a Mailing across Multiple Servers
Configuring a Distributed E-mail Server
Setting Up a Mailing to Use Distributed E-mail Features
How Distributed Mailings Work
Performance Tuning Considerations for Distributed E-mail
Deleting Mailings
Targeted E-mail Demo
Personalization Module Tracking
Personalization Events
Event Triggers
Setting Up Event Triggers
Event Action Queue
Action Handlers
Event Properties
ConfigurableAction Properties
Default Action Handlers
Personalization Module Logging
Logging Events
Logging Services
Request Logging
User Event Logging
Content Viewed Logging
Log Entry IDs
Data Listeners and Queues
Configuring QueueSinks
Log Files
Configuring Log Operations
Enabling and Disabling Logging
Logging to a Database
Limiting Input to the Database
Generating Reports
Batch Reporting Service
Setting the Schedule
Pointing to a Repository (Content)
Pointing to a Registry Service
Fine Tuning Updates
Scenarios Module Programming
Overview of the Scenarios Module
Scenario Basics
Scenario Processing
Scenario Definition Files
Scenario Execution
Individual Scenario Instances
Collective Scenario Instances
Scenario Initialization
Scenario Event Handling
Workflows
Internal Scenario Manager
Configuring Scenarios
Configuring the Scenario Manager
Scenario Manager Configuration File
Global, Individual, and Process Editor Servers
Configuring the Process Editor Server
Configuring Global Scenario Servers
Configuring Individual Scenario Servers
The Scenario Registry and Scenario Definition Files
Configuring the ScenarioManager Component
Configuring the SDLParser Component
Configuring SQL Repository Caching for Scenarios
Scenario Caching with Session Federation
Setting Up Scenario E-mail Sender Components
Setting Up TemplateEmailInfo Objects for Scenarios
Configuring BatchEmailListener and EmailListenerQueue Components
Monitoring and Debugging Scenarios
Viewing Scenario Information in the ATG Dynamo Server Admin Page
Setting the Web Application Context Root for Scenarios
StaticWebAppRegistry
ServletContextWebAppRegistry
Updating the Context Root for Scenarios
Disabling the Scenario Manager Component
Setting Up Security Access for Scenarios
Using the ACC to Set Scenario Access Rights
Defining Access Control for Scenario Folders
Defining Access Control for a Scenario
Making a Scenario Read Only
Designing Effective Scenarios
Excluding Anonymous Visitors
Minimizing the Number of Visitors Included
Minimizing the Number of Collective Elements
Avoiding Scenarios that Run Indefinitely
Combining Scenarios Wherever Practical
Minimizing the Number of Paths through a Fork
Using Scenario Events
InboundEmail Event
Shutdown Event
Startup Event
GSAInvalidation Event
ClickThrough Event
FormSubmission Event
SlotItemRequest Event
Referrer Event
Login Event
Logout Event
Register Event
AdminRegister Event
StartSession Event
EndSession Event
ProfilePropertyUpdate Event
AdminProfilePropertyUpdate Event
ProfileUpdate Event
AdminProfileUpdate Event
ViewItem Event
PageVisit Event
ScenarioEnd Event
SiteChanged Event
ProfileMarkerAdded Event
ProfileMarkerRemoved Event
ProfileMarkerReplaced Event
Business Stage Reached Event
Scenario Events and Transient Properties
Scenarios and Anonymous Users
Using Scenario Actions
Modify Action
Set Variable Action
SetRandom Action
Redirect Action
RedirectActionConfiguration Component
FillSlot Action
SlotActionConfiguration Component
EmptySlot Action
DisableScenario Action
DisableScenarioConfiguration Component
RecordEvent Action
RecordActionConfiguration Component
Record Audit Trail Action
Filter Slot Contents Action
Add Marker To Profile Action
Remove All Markers From Profile Action
Remove Markers From Profile Action
Add Stage Reached Action
Remove Stage Reached Action
E-mail-Related Actions: EmailNotify and SendEmail
EmailNotify Action
SendEmail Action
Accessing Scenario Variables in an E-mail Template
Sending Attachments with Scenario-Based E-mail Messages
Using Slots
Creating a Slot as a Nucleus Component
Content Source
Content Type
Event Generation
Scope
Item Retrieval
Ordering
Limit Number of Items Rendered by Slot
Permit Duplicate Content Items
Store Slot Persistently in Repository
Creating a Slot Component for Objects other than Repository Items
Editing Slot Components
Deleting Slot Components
Creating a Slot as a Property of a JMS Message
Using Slots in a Multisite Environment
Using Scenario Recorders
Creating a Custom Recorder
Creating a New Data Collection Object
Creating the New Mapper
Creating a New Dataset for a Custom Recorder
Creating a Scenario for a Custom Recorder
Mapper XML Definition Language
Sample Mapper XML File
Adding Custom Events, Actions, and Conditions to Scenarios
Adding Custom Events
Example: Adding Clickthrough Tracking To Your Application
Creating the LinkMessage class
Creating the LinkMessageSource Component
Adding Your Message to the Appropriate DMS Configuration File
Configuring the Message Source
Configuring the Scenario Manager to Receive Your Message
Adding Your Message to the Scenario Event Registry
Adding the Message to the DMS Message Registry
Declaring the Local DMS Topic
Declaring the SQLDMS Topic or Queue
Putting It All Together
Associating Profiles with Individual Custom Events
Adding Custom Actions
Adding the Action to the Scenario Manager Configuration File
Specifying the <action-execution-policy> Tag
Specifying the <action-error-response> Tag
Adding Parameters to a Scenario Action
Implementing the Action Interface
Putting It All Together
Adding Custom Conditions
Adding the New Condition to the Scenario Manager Configuration File
Extending the ExpressionFilter Class for the New Condition
Extending the Expression Editor
Configuring Actions and Conditions through Properties Files
Exposing Nucleus Components for Use in Custom Bean Expressions
Filtering Collections
How Collection Filtering Works
Using Collection Filtering Classes
Using StartEndDateFilter
Using ChainedFilter
Caching Filtered Content
Caching For Chained Filters
Determining When To Cache Filter Content
Configuring FilterCache
Implementing Custom Collection Filters
Creating Custom Collection Filters
Configuring Custom Collection Filters
Accessing a Collection Filtering Component
Passing Additional Parameters to a Filter (Filtering in a Multisite Environment)
Using Profile Markers
Configuring the Profile Marker Manager
Setting a Duplication Mode
Setting up Marker Validation
Defining Profile Marker Manager Properties
Marking a User Profile
Using Marked Profiles
Using Servlet Beans to Find Markers on Profiles
Advancing a Scenario If a Profile has Markers
Advancing a Scenario Based on Profile Marker Events
Removing Profile Markers
Specific Profile Markers From a Profile
All Profile Markers on a Profile
Defining and Tracking Business Processes
How Business Process Tracking Works
Defining a Business Process
Creating a BusinessProcessConfiguration Component
Configuring the BusinessProcessManager Component
Marking Business Process Stages
Deleting Business Process Content
Reporting on Business Processes
Creating and Configuring Workflows
Overview of Workflows
Creating a Workflow Type
Workflow Classes
Shared Components
Registration Workflow
Configuring the Registration Workflow Type
Workflow Servlet Beans
WorkflowTaskQueryDroplet
WorkflowInstanceQueryDroplet
ItemLookupDroplet
GetDirectoryPrincipal
Workflow Task Form Handler
Updating Subject Properties
Firing Task Outcomes
Managing Workflows on Multiple Servers
Designating a Process Editor Server for Workflows
Designating Global and Individual Workflow Servers
Configuring Caching for Workflows
Setting Up Security Access for Workflows
Allowing ACC Users to Edit Workflows
Allowing Site Users to Execute Workflows
Giving Site Users Access to Workflow Tasks
Configuring the ATG Expression Editor
Overview of the ATG Expression Editor
Grammar Template Files
Templates, Filenames and Localization
Stylesheet Preamble
Textual Inclusion
Grammar Templates in the ATG Product Distribution
Serialization of Templates
Grammar Definition Fundamentals
Tokens
Literals
Choices
Sequences
Creating a Grammar by Composing Constructs
Structure and Presentation of Choices
Defining and Referring to Labeled Constructs
Advanced Features
Custom Expression Classes
Custom Editor Classes
Custom Assistant Classes
Placeholders
Required Terminals
Eliminating Spaces
Verbose Terminals
Unsigned Integer
Scenario UI Expression Grammar Configuration
Scenario Grammar Extension Header
Defining Expressions for Custom Events
Defining Expressions for Custom Actions
Defining Expressions for Custom Conditions
Associating XML Templates with Grammar Elements
Specification of XML templates
Standard XML Template Patterns
Special-Purpose Grammar Extension Tags
Commerce-Related Grammar Configuration
Constraining a Sequence to an Order-Related Event
Constraining a Sequence to a Commerce-Item-Related Event
Suggestions for Localization
Supported Character Encodings
Web Services for Personalization and Scenarios
Database Tables
Personalization Module Database Schema
User Data Tables
User Directory Tables
Logging and Reporting Tables
Targeted E-mail Tables
Personalization Module Scenario Tables
Scenarios Module Database Schema
Collective and Individual Scenario Instance Tables
Scenario Info Tables
Template Info Tables
Scenario Transition and Deletion Tables
Slot Tables
Server ID Tables
Scenario Xref Tables
Scenario Migration Tables
Event Message Tables
Business Process Tracking Tables
Index
Search Terms