WO2000026844A1 - Method and apparatus for data management using an event transition network - Google Patents
Method and apparatus for data management using an event transition network Download PDFInfo
- Publication number
- WO2000026844A1 WO2000026844A1 PCT/US1999/012115 US9912115W WO0026844A1 WO 2000026844 A1 WO2000026844 A1 WO 2000026844A1 US 9912115 W US9912115 W US 9912115W WO 0026844 A1 WO0026844 A1 WO 0026844A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- database
- objects
- customer
- state
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0241—Advertisements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/08—Insurance
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99937—Sorting
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
Definitions
- the present invention relates generally to data processing, and more particularly thod and apparatus for data management using an event transition network.
- this background of the present invention is described in connection with management of marketing data using an event transition network.
- the present invention is not limited to the management of marketing data.
- the present invention is applicable to the management of any type of data where it is desirable to implement a flexible architecture that is adaptable by changing rules rather than changing programs.
- the present invention provides a method for managing data by storing one or more data records in a database, creating a management plan having one or more states, selecting one or more data records from the database and assigning each of the selected data records to an initial state in the management plan, updating the values of the one or more elements of each data record with new data, and moving each selected data record to the next state whenever the trigger value matches the updated value of the trigger element.
- Each data record has one or more elements.
- Each state has one or more rules. Each rule has a trigger element, a trigger value and a next state.
- the present invention also provides a computer program embodied on a computer-readable medium for managing data.
- the computer program comprises code segments for storing one or more data records in a database, creating a management plan having one or more states, selecting one or more data records from the database and assigning each of the selected data records to an initial state in the management plan, updating the values of the one or more elements of each data record with new data, moving each selected data record to the next state whenever the trigger value matches the updated value of the trigger element.
- Each data record has one or more elements.
- Each state has one or more rules. Each rule has a trigger element, a trigger value and a next state.
- Figure 1 is a block diagram of a single machine configuration in accordance with a preferred embodiment of the present invention
- Figure 2 illustrates the basic anatomy of an agent process in accordance with a preferred embodiment of the present invention
- Figure 3 illustrates the basic anatomy of a minion in accordance with a preferred embodiment of the present invention
- Figure 4 illustrates minions and minion proxies in accordance with a preferred embodiment of the present invention
- Figure 5 is a block diagram of a multiple machine, multiple database configuration in accordance with a preferred embodiment of the present invention.
- Figure 6 is a block diagram of the persistent objects comprising the system objects 122 ( Figure 1) in accordance with one possible relational embodiment of the present invention
- Figures 7A and 7B are block diagrams of the persistent objects comprising the client objects 124 ( Figure 1) in accordance with one possible relational embodiment of the present invention
- Figure 8 is a block diagram of the EOFL-ite components 126 ( Figure 1) in accordance with a preferred embodiment of the present invention
- Figures 9A and 9B are block diagrams illustrating the import and update processes in accordance with one possible relational embodiment of the present invention.
- Figure 10 is a block diagram illustrating the query and extraction processes in accordance with one possible relational embodiment of the present invention.
- Figure 11 is a block diagram illustrating a database maintenance process in accordance with one possible relational embodiment of the present invention.
- Figure 12 is a block diagram illustrating, a project maintenance process in illustrated in accordance with one possible relational embodiment of the present invention.
- Figure 13 is a flow chart illustrating the campaign management processes in accordance with one possible relational embodiment of the present invention.
- Figure 14 is a block diagram of a possible event transition network example is illustrated in accordance with one possible relational embodiment of the present invention.
- the present invention provides a system software architecture that supports a wide variety of hardware configurations. These configurations range from single machine, single database installations to large installations with multiple machines and databases. As a result, the present invention can be easily scaled up to meet added demand by increasing the number of machines and databases that participate in the system, and distributing agent processes to wherever it's most appropriate for the agent processor to run, e.g., closer to the data they manipulate.
- FIG 1 a block diagram of a single machine configuration, in accordance with a preferred embodiment of the present invention, is designated generally by the numeral 100.
- the single machine configuration 100 includes a physical machine 102 connected to a display 104 and keyboard 106. Regardless of the physical configuration, the present invention provides a system software architecture that is composed of three "logical" tiers 110, 120 and 140.
- the first tier is the data storage tier 110, which handles persistent storage of information through one or more databases 112 and 114.
- the second tier is the object tier 120, which captures and converts row data from the data storage tier 110 to objects and then executes business rules against the objects.
- the third tier is the user interface tier 140, which presents raw and/or object data to the system user via the display 104 and receives commands and data from the system user via the keyboard 106.
- These three tiers 110, 120 and 140 are "logical" because they are not confined to a single machine or process. Accordingly and as illustrated in Figure 5, each of the tiers 110, 120 or 140 may simultaneously span many physical machines and processes across one or more networks.
- one or more database processes can be executed concurrently by the system database server 116, which controls access to the system database 112, and/or the client database server 118, which controls access to the client database 114.
- the database servers 116 and 118 will typically be high- performance database servers, such as Informix or Oracle, that combine high-volume data storage and querying capabilities with network-transparent access.
- the flexibility of the current invention is increased by selecting database servers 116 and 118 that are capable of running on a variety of hardware platforms and are easily scalable from single- user installations with a small number of records up to large installations with many users and gigabyte databases.
- the database servers 116 and 118 may also be supported by a variety of front-end data access, analysis tools and applications.
- a single multiple-processor server hosting the two databases 112 and 114 may also be used.
- the system database 112 includes tables for: user accounts; system security; session management; job management; media, file, and table tracking; billing; and sundry system support.
- the client database 114 includes information such as: customer information; product descriptions; purchasing history; marketing campaign structure; promotion communications; reporting summary tables; and others on a per- client basis. Although two databases 112 and 114 are illustrated, the present invention can use as many as may be required.
- the data storage tier 110 may include the following components, procedures, and processes: (1) database schema design and maintenance; (2) database creation and maintenance; (3) database disk layout and component distribution; (4) design and implementation of any required server-specific components (such as triggers and stored procedures); (5) the database server itself; (6) database network access; (7) data loading and unloading; and (8) database backups.
- the object tier 120 is divided into two distinct subsystems: system objects and processes 122, which control system operation and administrative functions; and client objects and processes 124, which control all data operations on the marketing data.
- system objects 122 are "persistent objects," which are usually stored in the system database 112 and are instances of classes for which a mapping is defined between the attributes of the class and columns in a database table. The values of the object attributes are stored in the database table through this mapping.
- the object tier 120 may also include EOFLite components 126 to provide a "lightweight" binding layer for moving data back and forth between the client database 114 and minions 128 executing high-volume "batch processes.”
- the EOFLite components 126 create instances of custom classes without having to live with the overhead inherent in the lower-level EOF frameworks, which are designed more for OLTP-type processing than for record-by-record batch processing.
- Persistent objects can be instantiated from an arbitrary combination of database columns into "generic records," or can be instances of predefined classes containing attributes that are associated with particular columns in a table. Whether instances of generic records or instances of pre-defined classes are built is determined by the attribute-to-table mapping. In either case, the instances are created through a "database access layer,” and made available to custom processes that can observe, manipulate, and save the instances back to the database.
- the object tier 120 also contains minions 128, which provide services and sets of persistent objects to external client objects.
- these objects can exist in both client-side end-user applications and in "interface-free" server-side applications called “agents.”
- the agents exist to provide an executable wrapper around the minions 128.
- a particular agent can host an arbitrary combination of minions 128, and can be executed on any machine in a given installation of the present invention for which an executable has been built.
- the minions 128 in these agent processes use the database access layer to convert database information between row form and persistent object form, and share these persistent objects with interface tier clients and/or other object tier clients.
- the minions 128 may also provide services that manipulate the objects locally and send the objects back to the database for storage.
- the minions 128 and persistent objects encapsulate business logic, and insulate the user applications 142 in the user interface tier 140 from data storage tier 110 dependencies.
- Minions 128 can exist in either remote agent processes or in the local address space of a client process. Client processes can also receive persistent objects directly from the database access layer.
- the first category consists of objects that oversee the control and administration functions of the present invention, such as the agent manager 130, job queue manager 132, notification manager 134, security guard 136, session management (not shown), and resource tracking and manipulation (not shown).
- the second category of objects import, export, report on, clean, maintain, and represent client data. All agent processes in the object tier 120 are controlled by a special minion called the "agent manager" 130. All access to remote agents and minions is granted through the agent manager 130.
- the object tier 120 can be implemented using OpenStep object technology.
- This technology provides a database-independent framework for gathering information from local and/or remote database servers and converting it to object form.
- This technology also provides a relatively transparent object distribution mechanism that allows objects to communicate with each other across process and network boundaries as easily as the objects coexisted in the same process.
- the user interface tier 140 receives object data from the object tier 120, and controls the presentation of this data to the user.
- the user application 142 in the user interface tier 140 can operate in either two-tier or three-tier modes.
- User applications 142 that make direct connections to the database server to get data will be two-tier applications.
- User applications 142 that connect to agents in the object tier 120 to get data will be three-tier applications. It is possible for user applications 142 to directly include object tier classes and use them locally, operating in two-tier mode without actually bypassing the object tier 120.
- the user applications 142 may be implemented using native OpenStep applications, web-browser-based applications and applications built using technologies such as Microsoft Visual C++, which will communicate with the object tier via an object interface standard such as DCOM and CORBA.
- the agent process 150 comprises a connection 152, an agent 154, an agent profile 156 and one or more minions 158, 160 and 162.
- agents 154 which are generic, independently executable programs that can run on any machine in the system.
- the sole purpose of an agent 154 is to serve as a distribution and control mechanism for an arbitrary combination of named class instances called minions 158, 160 and 162.
- the minions 158, 160 and 162 are objects that provide services and sets of persistent objects to external client objects through interfaces called minion formal protocols. There is a separate protocol defined for each possible minion class that needs to communicate across the network. Protocols are not classes, and are therefore never instantiated or stored in a database.
- Agents 154 do not inherently depend on the minions. During startup, an agent 154 extracts agent profile information 156 from a configuration file using a name given to it on the command line as a lookup key. The agent profile 156 specifies the minions 158, 160 and 162 that the agent 154 will manage, and any additional code that the agent 154 must load to support those objects. The agent process 150 configures itself dynamically based on the agent profile 156.
- agent 154 can execute (in other words, an agent 154 can be launched on any machine for which an agent executable has been built). This permits the logical object tier 120 to span the network across various physical machines concurrently.
- agent 154 and/or the minions 158, 160 and 162 managed by the agent 154 depend on resources on a particular machine, the agent 154 should be configured to execute on that machine to keep those resources "local.”
- External clients may gain access to the agent 154 via the connection 152, which is registered under a unique name given on the command line when the agent process 150 is launched.
- agents 154 There can be an arbitrary number of agents 154 executing at any given time on a particular machine. In practice, the total number of agents 154 that can be simultaneously executing is limited based on the types of minions 158, 160 and 162 they are hosting. For example, if an agent 154 is hosting a very resource-intensive minion (such as one that will perform a bulk address-correction job) the total number that can run simultaneously may be limited to something very small. These limits are specified in the system configuration file of the present invention. Now referring to Figure 3, the basic anatomy of a minion 128, in accordance with a preferred embodiment of the present invention, is described.
- Minions 128 are multithreaded because the minions 128 have to respond to control messages 170 while the minions 128 are doing work with some resource 172.
- a time-consuming process has been started in a minion 128 (such as a batch database update of a large number of records)
- the minion 128 should still be able to pause, resume, or stop the process on command. "Pausing” temporarily halts an operation without losing its state. "Resuming” allows an operation to continue from the point at which it was most recently paused. "Stopping" an operation causes it to be abandoned by its controlling minion, and returns that minion to an idle state.
- the minion 128 has a control thread 174 that services these control messages 170 as they arrive from external sources, and updates information in the control data block 176. It is up to the work thread 178 to monitor the control data block 176 and perform the correct function based on the data contained therein. For example, a responsible work thread 178 will check the control data block 176 every pass through it's processing loop, and either pause, resume, or stop processing based on the values in the control data block 176. When the work thread 178 discovers an instruction to stop processing, the work thread 178 will release any resources allocated to the work thread 178 for the job, then exit the thread.
- the minion 128 should also provide progress reports during time-consuming operations.
- the work thread 178 periodically updates the progress of the minion 128, which is stored in the control data block 176. These reports include a description of the operation, the estimated percentage of the operation that has been completed, the number of records processed, and the estimated completion time. These progress reports are available through direct request from the minion 128 via the control thread 174.
- Minions 158, 160 and 162 within agent process 150 on server computer 180 communicate with client processes 182 on client computer 184 using minion proxies 188, 190 and 192, respectively.
- Minion proxies 188, 190 and 192 are the client-side 184 counterparts to server-side 180 minions 158, 160 and 162.
- the minion proxies 188, 190 and 192 conform to the same protocols and allow transparent remote communication with minions 158, 160 and 162.
- Minions 158, 160 and 162 can be created directly within a client process 182 address space, coexisting with other local minions and/or minion proxies 188, 190 and 192. Minions 158, 160 and 162 are never stored persistently (i.e. they do not have a representation in any database).
- the minion interfaces are defined in this way to make local minion instances and local minion proxy instances 188, 190 and 192 have the same apparent interface.
- the proxy classes provide a convenient place to perform client-side caching, a level of indirection through which to handle disconnection/reconnection with remote minions, and a class on the client side that can be associated with formal protocols. It also makes remote minions relatively transparent to developers.
- Client processes 182 that choose to use minions 158, 160 and 162 directly in their local address space operate in "two-tier" mode.
- Client processes 182 that choose to use minion proxies 188, 190 and 192 in their local address space operate in "three-tier” mode. In either event, the client processes 182 will be able to send the same messages to either type of object.
- Forms define formal interfaces that are independent of any particular class.
- a protocol has a unique name, and declares a set of messages that can be implemented by any class.
- a particular class "conforms" to one or more protocols if it guarantees that it implements every message declared in each of the protocols.
- the interface to the minion classes is defined entirely in terms of formal protocols.
- a given minion class and its corresponding minion proxy class will both conform to the same formal protocol.
- a unique formal protocol is defined for every minion subclass.
- Minion classes, minion proxy classes, and formal protocols are uniquely named to coexist in the same address space without interfering with each other. Client processes 182 can then simultaneously perform some operations in "two-tier” mode and others in "three-tier” mode depending on whichever is more appropriate.
- FIG. 200 a block diagram of a multiple machine, multiple database configuration in accordance with a preferred embodiment of the present invention is designated generally by the numeral 200.
- Physical machine 202 having a keyboard 204, a monitor 206, a user interface tier 210 and a user application 212, is connected to a local area network 208.
- Physical machine 214 having a user interface tier 216, object tier 220 and data storage tier 222, is also connected to the network 208.
- the user application 212 of physical machine 202 is shown communicating with the agent manager 224 in the object tier 220 of physical machine 214.
- the agent manager 224 in turn communicates with agents 226, which communicate with database processes 228 and databases 230 in data storage tier 222.
- Physical machine 232 having an object tier 234 and data storage tier 236, is also connected to the network 208.
- the user application 212 of physical machine 202 is shown communicating with the agent manager 238 in the object tier 234 of physical machine 232.
- the agent manager 238 in turn communicates with agents 240, which communicate with database processes 242 and databases 244 in data storage tier 236.
- the agents 240 of physical machine 232 are also shown communicating with the data storage tier 248, database processes 250 and databases 252 of physical machine 246 via the local area network 208.
- Physical machine 254 having an object tier 256, is also connected to the network 208.
- the agent manager 258 and agents 260 of physical machine 254 are shown communicating with the database processes 242 of physical machine 232 and the database processes 250 of physical machine 246 via the local area network 208.
- Physical machine 262 having a keyboard 268, a monitor 270, a user interface tier 264 and a web browser 266, is connected to the Internet 272.
- Physical machine 214 is also connected to the Internet 272 using http 274 and a web application 276 within the user interface tier 216. The web application 276 then communicates with the agent manager 224.
- users may access any of the components of the system remotely via a dial-up line or web interface.
- Agents and Minions serve as executable wrappers around an arbitrary combination of minions. The only thing that makes one agent different from another is the kind of minions that each agent is hosting. Because the customization of an agent takes place by changing the minions that it hosts, there is only one kind of agent executable from which all executing agents are launched. Agents can be configured to run continuously, run on demand or run on a regular schedule. The present invention has five system agents that run continuously: the agent manger 130 (A ⁇ entManagerAgenf). job queue manager 132 (JobQueueManagerA ⁇ enti. the notification manager 134, which includes the NotificationCenterA ⁇ ent and the NotificationDispatcherA ⁇ ent.
- a single agent manager 130 is started at boot-up on each machine that participates in the present invention, the remaining agents in this group are started by the agent manager 130 during its start-up phase. These agents run continuously until the agents are either explicitly shut down by a system administrator, or the system on which the agents are running goes down.
- the agent manager 130 hosts the AgentManagerMinion. which controls connections to, and lifetime of, all other agents on the host computer where the agent manager 130 is running.
- the agent manager 130 also manages connections to all other minions on that machine. For example, each minion has a name that is used by a client process to request a connection to a specific minion through the agent manager 130.
- the agent manager 130 When the agent manager 130 is asked for connection information to a named minion, it performs the following steps: (1) consults the cross-reference to determine the generic name of the agent(s) that would be hosting that object; (2) examines all idle running agents with that generic name (if any), and determines if any of them report that their minion of the requested name is idle; (3) if any such agents are found, their connection information is loaded into an agent ticket and returned to the client; (4) if no agents with that generic name are running, the agent manager will simply start one and use it in the returned agent ticket; (5) if there are running agents with that generic name but none of them are idle, the agent manager will consult the present invention's system configuration file to determine how many agents with that generic name can be running simultaneously, and start a new one if limits permit; and (6) if all of that fails, no connection information is returned to the client (the client must be prepared to handle a connection refusal).
- Client processes that need to connect to a particular agent will go through the agent manager 130 to get the information necessary to make the connection.
- This connection information is vended in the form of "agent tickets” (for connection to the agent itself) and “object tickets” (for connection to a minion), which can be “redeemed” by client objects to gain direct connections to remote agents and minions.
- Client processes must always get their connection information in "ticket” form through the agent manager 130. This is because the agent manager 130 will usually be controlling more than one instance of an agent with a particular generic name, each of which will be registered with the object distribution mechanism under a unique name that is only known to the agent manager 130 and the agent itself. The single exception to this is for connections to the AgentManagerAgent. which will always register under the name "AgentManagerAgent”.
- agent profiles for that machine, which are obtained from the system configuration file.
- agent profile provides the agent manager with information it uses to control agent execution, such as which executable programs to run to launch an agent, whether or not an agent requires a "context" to launch, how many agents of a given type may be simultaneously executing, and how long to wait before killing an idle agent.
- agent manager 130 loads the agent profiles from the system configuration file, the agent manager 130 builds a cross-reference of which agent processes are hosting minions based on the names under which the minions are registered.
- Agent processes are launched and killed exclusively by the AgentManagerMinion. Agent processes may be killed on request from an external client (such as an agent monitoring application), or automatically by the agent manager 130 because they have been idle for a certain period of time and no longer need to be using system resources. An agent is considered "idle” if all minions that it manages report that they are idle. Agents that are frequently used are configured to remain idle for some period of time so if a request comes to the agent manager 130 to start up that agent, the agent manager 130 can just use the idle agent rather than have to launch another one. This is particularly important for agents that take a long time to launch.
- the job queue manager 132 hosts the JobQueueMana ⁇ erMinion. which manages manipulation of job streams in the job queue, and manages execution of the component job configurations in the job streams.
- the JobQueueMana ⁇ erMinion monitors the job queue for job streams that need to run, controls execution of the job configurations in a job stream, observes notification of job configuration completion, and passes billing information to the billing manager for completed jobs.
- the job queue manager 132 periodically examines entries in the job queue and schedules the queue entries for execution.
- Each job queue entry is composed of a "stream" of component job configurations scheduled to run at a given day and time with a particular priority.
- Job streams have optional dependencies on completion of other jobs streams in the queue (e.g. job stream "B” cannot run until job stream "A” has completed successfully).
- the job configurations in a stream can also have dependencies between them (e.g. job configuration "B” cannot run until job configuration "A” has completed successfully).
- Each job configuration specifies a particular set of commands that are to be executed by some agent process, along with the input and output parameters for that process.
- the JobQueueMana ⁇ erMinion manages the execution order of these job streams and job configurations based on the dependencies between them, and monitors the system for job configuration completion. Processing information for successfully completed job configurations is passed to the billing manager where billing records are queued for posting to the central accounting system. Only one job queue manager 132 will run in a given system of the present invention.
- the notification manager 134 includes the NotificationCenterA ⁇ ent and the NotificationDispatcherA ⁇ ent.
- the NotificationCenterA ⁇ ent hosts the NotificationCenterMinion. which serves as a central hub for distribution of advisory messages to interested observers.
- the NotificationDispatcherAgent hosts the NotificationDispatcherMinion. which packages and routes notifications to interested users via e-mail and/or pagers.
- the NotificationCenterMinion serves as a central hub for routing advisory notifications from objects that "post” the notifications, to an arbitrary number of objects that register as "observers" of the notifications.
- Each advisory message has a name, and is associated with an object and a set of supplementary "user information.”
- the names of the notifications are determined by the posting objects, and have to be known to observers so they can register as observers of the notifications.
- the object and "user information" associated with the notifications are also determined by the posting object, and can be whatever is deemed important for any particular advisory notification. Only one notification center will run in a given system of the present invention.
- the NotificationDispatcherMinion packages notifications and routes them to users using a user-specified transport mechanisms, including: e-mail; and pagers. Each system user can register to be sent an arbitrary set of notifications via any of the available mechanisms. Only one notification dispatcher will run in a given system of the present invention.
- the security guard 136 hosts the SecurityGuardMinion. which is the first line of defense in the object tier for protecting the system against unauthorized access.
- the SecurityGuardMinion determines the validity of a given userlD and password combination, and determines if a user has permission to perform a specific action. All guarded operations will obtain permission from the security guard before proceeding.
- the security guard 136 will always run in a stand-alone process so that it can be given special privileges if necessary.
- the security guard 136 thus prevents users from: (1) intentionally and/or unintentionally manipulating data without proper authorization; (2) reading data without proper authorization; and (3) making invalid changes to data whether authorized or not.
- the present invention uses an application-enforced security wherein: (1) users will each have a single user name on the system(s) hosting the present invention; (2) database privileges based on these user names will be very tightly restricted and controlled; and (3) only selected users will have any privileges on the tables (this protects the database against access via tools such as SQLplus or an arbitrary front-end process connecting via ODBC).
- processes connect to the system using an application ID that is chosen for the processes ahead of time.
- the processes are granted only the maximum set of privileges necessary to perform the task(s).
- the set of "actions" that a user can attempt to perform against the database is stored in tables that becomes part of the user's "security profile.”
- the present invention processes restricts the tasks the user can perform based on the security profile of the user on whose behalf they are operating (application enforced security).
- the agent manager 130 may limit the total number that can be executing at any given time to balance system load.
- the CommandLineAgent hosts the CommandLineMinion. which provides a wrapper around execution of system command line commands that can be messaged and scheduled for asynchronous execution.
- the CommandLineMinion provides a capability similar to that provided by the "system” call commonly available in "C” language programming environments.
- the CommandLineMinion can be remotely messaged and scheduled for deferred execution.
- the FileManagerAgent hosts the FileManagerMinion. which provides basic filesystem interrogation and manipulation services on local or remote machines, including: checking for existence of a file; reporting on file size; reporting on file access permissions; creating a file; and deleting a file.
- the FileManagerMinion can be embedded in an agent process and scheduled for deferred execution by the job management system.
- the FileManagerMinion can manipulate and return information about files that are not on the local machine.
- the FileTransferManagerAgent hosts the FileTransferManagerMinion. which controls the movement of files between source and destination file system locations.
- the FileTransferManagerMinion provides services for: transferring files between locations on the same machine; transferring files between locations on different machines; and moving files between projects. These services are similar to those provided by the "ftp" command-line utility.
- the FileTransferManagerMinion can be embedded in an agent process and scheduled for deferred execution by the job management system.
- the MediaPataTransferManagerAgent hosts the MediaPataTransferManagerMinion. which controls movement of data between incoming physical media (e.g. tapes, disks) and the file system.
- the RoboPBAAgent hosts the RoboPBAMinion. which controls manipulation of database objects.
- the RoboPBAMinion provides services for: creating and dropping tables; creating and dropping indexes; unloading table schemas; and loading and unloading table data.
- the RoboPBAMinion can be embedded in an agent process and scheduled for deferred execution by the job management system.
- the RoboPBAMinion can also be given special database privileges that are not provided to any other process because the minion can run in a separate agent process.
- the only kinds of database tables that will be created through this minion are temporary database tables called "project tables" that provide work areas while processing the data for particular projects. Client production tables will always be created by external scripts when setting up the present invention for new clients.
- ArchiverAgent CustodianAgent. PiskUsageBillinoAgent. and the MatterNumberlmportAgent. These agents are started by the job queue manager 132 on regularly scheduled intervals. The agents and the intervals are specified in an external system file.
- the ArchiverAgent hosts the ArchiverMinion. which supports the client and project multi-step archiving procedure.
- the ArchiverMinion will be configurable from the command line to perform a variety of archiving tasks, each of which may be scheduled with the job management system to run at regular intervals that vary with the type of archiving functions being performed.
- the archiving process may require operator intervention because physical media such as tapes and disks must generally be moved between racks and drives.
- the archiving procedure consists of the following general steps: unloading relevant data from the database; updating selected tables to reflect that the client or project has been archived; notifying operators to move data to tape; and removing archived files.
- the CustodianAgent hosts the CustodianMinion. which performs general clean-up tasks in the system.
- the CustodianMinion will be configurable from the command line to perform a variety of cleaning tasks, each of which may be scheduled on regular intervals, such as cleaning temporary files and data tables, physical media that have passed their expiration dates, "orphaned" user application sessions that might be lingering in the database because of an abnormal process termination, and others as the system grows.
- CustodianAgents are typically scheduled with the job management system to run at intervals that vary with the type of clean-up functions being performed.
- the PiskUsageBillingAgent hosts the PiskUsageBillingMinion. which examines the amount of disk usage for each active client on the system, and computes appropriate billing entries.
- the PiskUsageBillingMinion examines the file system and computes the amount of disk space occupied by the files and database tables associated with various clients.
- the PiskUsageBillingMinion then creates billing table entries for each client based on the amount of disk space they are using. Note that billing table entries for scheduled batch jobs are created by the job queue manager 132 when it is notified that a job configuration has successfully completed processing.
- PiskUsageBillingAgents are typically scheduled in the job management system to run once per week.
- the MatterNumberlmportAgent hosts the MatterNumberlmportMinion. which moves matter number information from the central accounting system into the system tables.
- the MatterNumberlmportMinion reads matter number information from tables in the central billing system, and merges new and modified records into the matter number tables of the present invention. MatterNumberlmportAgents are typically scheduled in the job management system to run either once per day or once per week.
- the SessionManagerAgent hosts the SessionManagerMinion. which establishes sessions for system users and makes sure no more than one session is in effect at any given time for a user on a particular workstation.
- the SessionManagerMinion also ensures that sessions are persistently tracked in the database.
- System minions can run locally or run remotely in an agent process. It is, however, desirable to minimize the number of minions that run in remote processes to reduce complexity in the implementation, and to minimize the number of separate database connections in effect at any given point in time because licenses for database connections are expensive to buy. Accordingly, the LibrarianMinion and the EventLogMinion are combined into a central library that will be loaded locally by all processes needing their services.
- the LibrarianMinion handles creation and tracking of all external physical media and files used by the present invention. Each of these items is tracked as it enters and exits the system. External physical media enter the system in the form of tapes and disks sent in by clients. Files (such as reports and error logs) are generally created as a side-effect of system processes. Files also enter the system in the form of externally created documents, such as word processor documents and spreadsheets.
- the EventLogMinon provides a central point of access for all advisory messages that need to be stored persistently in the database.
- the "events" in the log are descriptions of some event in time, such as the observed failure of a critical component, or the failure of a job stream to complete.
- the events stored in the log to describe unusual conditions that require the attention of a user or system operator.
- Initial deployments of the present invention will include an event log object as a simple local convenience object in each application that needs to access the log, rather than have a single central event log that runs in a remote agent.
- FIG. 6 a block diagram of the persistent objects comprising the system objects 122 (Figure 1), in accordance with one possible relational embodiment of the present invention, is illustrated.
- the present invention is not limited to the specific system objects 122 described or to the relational embodiment illustrated in Figure 6.
- Those persons skilled in the art will recognize that the present invention is designed to allow system objects 122 to be added, deleted or changed, and the relationships between the system objects 122 to be changed according to the intended application of the present invention.
- the relational nature of the system objects 122 allow the present invention to be modified without extensive recoding.
- the system objects 122 comprise a number of interrelated persistent objects that are the object tier representation of rows in database tables.
- the persistent objects are grouped according to the minions that are primarily responsible for manipulating themdescribed.
- Activity objects 302 associate an accounting activity code with a description. In this regard these objects are very similar to the CodeMaster 310 and CodeLook 312 objects. Activity objects 302 are a separate class because it is closely associated with the accounting department, and is updated periodically with data obtained from the accounting system. The CodeMaster 310 and CodeLook 312 objects are relatively static and are associated exclusively with the present invention.
- Billing objects 304 contain transaction information that is used to bill clients for services provided on their behalf.
- Billing objects 304 include such information as: an account number to bill against; tracking information about when the transaction occurred and when it was posted to the accounting department; a description of the services being billed; and billing units and amounts.
- Clients are billed for both processing storage and disk space usage.
- Billing objects 304 for processing are created at the end of process execution; whereas Billing objects 304 for disk storage are created on weekly intervals by the PiskUsageBillingAgent.
- a given Billing object 304 is associated with one MatterNum 308 and ClientBase 314 object.
- BillingSummary objects 306 represent Billing objects 304 summarized over some period of time by client, project, matter number, and accounting activity code.
- MatterNum objects 308 contain billing information and activity status for a particular ClientBase object 314.
- a ClientBase object 314 has a matter number for disk storage billing and a matter number for data processing billing.
- Project objects 316 also have a matter number for disk storage billing and a matter number for data processing billing.
- a JobConfig object 318 is a description of a process to be executed that may include a text description of the job configuration, an identifier associating it with the process configuration object that was used to create the job configuration, the name of the agent to run; command line arguments to send to the agent when it is launched; the messages the agent must process; a description of any dependencies on other job configuration objects; tracking information about when the job configuration started and ended processing; and result information about the volume of records processed and success or failure of processing.
- a JobConfig object 318 is associated with one JobStream object 322 and one ProcessConfig object 324.
- a JobQueue object 320 associates a single JobStream object 322 with a date, time, and priority at which to run, and context information to use during execution. Once a JobQueue object 320 has been saved in the database, it can be modified or deleted. Peleting the JobQueue 320 entry removes the associated JobStream 322 and JobConfig 318 objects from the database. Modifications that can be made to the JobQueue object 320 include changing any of the date, time or priority.
- a JobStream object 322 associates a group of JobConfig objects 318 together into a stream, where the JobConfig objects 318 can have dependencies between them.
- a JobStream object 322 is associated with one or more JobConfig objects 318 and may include information such as a text description of the job stream, information about dependencies on other job streams, tracking information about when the job stream started and ended execution, control information about expected execution times, and job stream completion status information.
- a ProcessConfig object 324 is a "template" from which JobConfig objects 318 are created. When a system user of the present invention wants to submit a new JobConfig object 318 to the system, an existing ProcessConfig object 324 can be used as a template, or a new ProcessConfig object 324 can be created.
- ProcessConfig object 324 is saved back to the database.
- ProcessConfig objects 324 are essentially JobConfig objects 318 without the dynamic attributes, but may include such information as a text description of the process configuration, the name of the agent to run, command line arguments to send to the agent when it is launched, the messages the agent must process, and a description of any dependencies on other job configuration objects.
- a ProcessConfig object 324 is associated with one ProcessStream object 326.
- a ProcessStream object 326 and its associated ProcessConfig objects 324 never become part of the job queue.
- ProcessStream 326 and ProcessConfig 324 objects are used to create JobStream 322 and JobConfig 318 objects; those are the objects actually submitted to the queue.
- a ProcessStream object 326 is a "template" from which JobStream objects 322 are created.
- an existing ProcessStream object 326 can be used as a template, or a new ProcessStream object 326 can be created. In either case, the ProcessStream object 326 is saved back to the database.
- ProcessStream objects 326 are essentially JobStream objects 322 without the dynamic attributes, but may include such information as a text description of the job stream, and information about dependencies on other job streams.
- a CartridgeTape object differs from basic Tapes in that it has compression and track count information associated with it.
- a given CartridgeTape object can be associated with one ClientBase object 314 (but a given ClientBase object 314 may be associated with many CartridgeTape objects, or more generally, with many other PhysicalMedia objects 332).
- PataFile objects 328 represent tracked data files in the system and may include files imported from external media, files created as a side-effect of a system or client process, files extracted from a database, and files created outside the system (such as a word processor document) that have been entered into the system by a user for tracking purposes.
- the PataFile object 328 records sundry information of interest about the file.
- a given PataFile object 328 is associated with one Project object 316.
- the lifetime of an PataFile object 328 is specified by the Project object 316 it is associated with.
- PataTable objects 330 represent tracked database tables in the system.
- the database tier contains both "production" tables (i.e. tables whose formats are fixed for a given client), and "project” tables that are created as a side-effect of processing the client data.
- the PataTable object 330 records sundry information of interest about the table.
- a given PataTable object 330 is associated with one Project object 316.
- the lifetime of an PataTable object 330 is specified by the Project object 316 it is associated with.
- NineTrackTape objects (not shown) represent a single-reel, nine-track tape, that is usually associated with mainframe computers.
- NineTrackTape objects differ from basic Tapes in that they have tape density information associated with them.
- a given NineTrackTape object can be associated with one ClientBase object 314 (but a given ClientBase object 314 may be associated with many NineTrackTape objects, or more generally, with many other PhysicalMedia objects 332).
- a PhysicalMedia object 332 describes the common attributes of physical media used for transporting data (such as magnetic tapes). These common attributes include not only characteristics of the physical media itself (such as its volume label), but also sundry information such as where it is physically located, when it was received, general comments, etc.
- a particular ClientBase object 314 can be associated with many PhysicalMedia objects 332 (but each of those can only be associated with a single ClientBase object 314). All PhysicalMedia objects 332 are cataloged by the Librarian so they can be tracked. PhysicalMedia objects 332 almost always have a finite lifetime, after which they are disposed of in some manner that is determined at the time they are cataloged. The lifetime of a PhysicalMedia objects 332 is determined by the Project object 316 it is associated with.
- a Tape object represents any kind of magnetic tape media such as
- a Tape object can be thought of as an abstraction that collects common attributes shared by all tape objects.
- a TapePrive object 334 represents tape drives in which magnetic tapes can be read and written.
- a TapeRack object 336 represents the racks in which magnetic tapes are stored.
- a TapeSlot object 338 represents a slot in a tape rack.
- Event object 340 represents an event that happened on the system that needs to be stored persistently in the event log database table.
- Event objects 340 describe what happened, when it happened, what operation or process was being performed at the time the event occurred, and some notion of severity (although severity is hard to convey because it is usually a function of who is observing the event). Because Event objects 340 are associated with processes, they are implicitly associated with a particular ClientBase object 314 unless the Context under which the process was operating did not include a ClientBase object 314 (which is the case for processes operating on behalf of the present invention itself).
- UserEventAssoc objects 374 contain the Event objects 340 that each User object 360 is interested in.
- a CodeLook object 312 provides a long description for a given "code” (i.e. a short single word description or mnemonic), and associates the code with a CodeMaster object 310. All codes used in the system are stored in a single CodeLook table in the database. The codes that are grouped together are associated with the same CodeMaster object 310.
- code i.e. a short single word description or mnemonic
- a CodeMaster object 310 describes the different codes that are used by the system. This description includes the name of the table column associated with the code, a long description for the code, the length of the code, and whether or not new codes can be added to the list of codes associated with this code master.
- the possible code values for a given CodeMaster object 310 are stored in the CodeLook table, and are associated with the CodeMaster object 310 through its unique identifier.
- PMAMail objects 342 represent customers who do not want to receive promotion pieces from a mail marketing campaign.
- PMAPhone objects 344 represent customers who do not want to be contacted by phone on behalf of a telemarketing campaign.
- a NotifyRegistry object 346 associates a notification name with a user who wants to have an e-mail and/or pager message sent to them when the notification occurs.
- NotifyRegistry objects 346 may include the name of the notification to dispatch, the user to dispatch the message to, and the transport mechanism to use to send the message (i.e. e-mail or pager).
- a MinionLog object 348 represents a log message written to the MinionLog table by a minion.
- the MinionLog table is a general purpose area where any minion can store persistent advisory messages.
- a MinionLog object 348 may include the name of the minion that posted the message, when the activity occurred, an "activity code," an arbitrary message, and the ClientBase object 314 and/or Project object 316 that the minion was operating on when the message was saved
- a State object 350 simply associates a standard abbreviation for a state that is a member of the USA with the full state name.
- a ZipCity object 352 is a utility object that associates zip codes, counties, and states together.
- Security Persistent Objects An Action object 354 describes the operations that a user can perform with the system.
- Action objects 354 can be grouped into ActionGroup objects 356.
- a given Action object 354 can be a member of zero or more ActionGroup objects 356.
- a given UserlP is associated with a ClientBase object 314 and an Action object 354 through a Permission object 358. In other words, a particular user can only perform a certain Action object 354 on a ClientBase object 314 if there is a Permission object 358 for it.
- ActionGroup object 356 groups one or more actions together. ActionGroup objects 356 are an administrative convenience for assigning a collection of Action objects 354 to a UserlP and ClientBase object 314 rather than having to assign them one at a time.
- a Permission object 358 associates a User object 360 with a ClientBase object
- Action object 354 There will be one of these objects for every Action object 354 that a particular User object 360 is allowed to perform on a given ClientBase object 314.
- a ClientBase object 314 contains database and system resource management information for the different clients. This information may include a client name, database connection and access information, database status, default billing information, directory locations for data files associated with the client base object, and default resource expiration information. ClientBase objects 314 may have zero or more Project objects 316 associated with them. A particular ClientBase object 314 and its associated Project object 316 are only accessible by User objects 360 that have permission to work with those Project objects 316. A ClientBase object 314 may have a finite lifetime (i.e. it may only remain active for a period of time, then be taken off the system), or may be essentially perpetual.
- PataSpace objects 362 describe the data spaces on disk where the database servers store table and index data. PataSpace objects 362 may describe the name of the data space, whether the data space is a "project” table data space or a "production” table data space, a brief description of the data space, and the ClientBase object 314 associated with the PataSpace object 362.
- a Project object 316 is a named collection of work associated with a ClientBase object 314.
- a Project object 316 may include a description of the project, a project code and status, archival information, and information about where to store flat files associated with the project.
- Project objects 316 can be associated with one ClientBase object 314, zero or more PataTable objects 330, zero or more PataFile objects 328, zero or more PhysicalMedia objects 332, zero or more JobStream objects 322 and ProcessStream objects326, zero or more Session objects 364, and one MatterNum object 308 for disk usage billing, and one MatterNum object 308 for processing billing.
- All User objects 360 that have access to a particular ClientBase object 314 are able to access all of its Project objects 316. Multiple Sessions (and therefore multiple User objects 360) may work on a Project object 316 concurrently.
- a Session object 364 is a combination of a particular Computer and Context that represents a connection from a particular workstation to a project on behalf of a User object 360.
- a Session object 364 is always associated with exactly one Project object 316 and therefor with exactly one ClientBase object 314. Sessions are created when User objects 360 connect to the present invention from some workstation application, and are used in nearly all other system messaging to establish the context in which those messages should execute.
- a User object 360 on a particular workstation computer may establish exactly one Session from that workstation. However, a User object 360 may establish concurrent sessions from different workstations.
- a SysPefault object 366 stores default values for the present invention. These default values consist of key-value pairs in the form of strings.
- a UserPefault object 368 stores user-dependent default values for the present invention. These default values consist of key-value pairs in the form of strings, and can vary from one user to the next.
- a User object 360 represents a user of the present invention. A User object 360 is allowed to work on selected ClientBase objects 314, and has access to all Project objects 316 associated with those ClientBase objects 314. A user may connect to (i.e. establish an Session with) the present invention from any workstation computer that is able to communicate with the system, and may have concurrent Sessions from multiple workstations, limited to a single Session on a particular workstation.
- the Expression object 370 contains expression and function information used by applications.
- the ClientExprAssoc object 372 contains each valid expression for each ClientBase object 314.
- the eo_sequence_table 376 keeps track of the last original identifier assigned to each object.
- the Security Guard table 378 contains the userid and encrypted password for each valid user of the system. Only the security guard 136 ( Figure 1) has access to this table.
- FIG. 7A a block diagram of the persistent objects comprising the client objects 124 (Figure 1), in accordance with one possible relational embodiment of the present invention, is illustrated.
- the present invention is not limited to the specific client objects 124 described or to the relational embodiment illustrated in Figure 6.
- the present invention is designed to allow client objects 124 to be added, deleted or changed, and the relationships between the client objects 124 to be changed according to the intended application of the present invention.
- the relational nature of the client objects 124 allow the present invention to be modified without extensive recoding.
- Ori ⁇ Source 402 provides a tracking mechanism for changes in the Source 404 of a given Customer 400.
- the same Customer 400 information may be obtained from a number of different Sources 404 over time, often it is ignored as duplicate data.
- OrigSource 402 can be used to determine whether to quit buying from a particular source if a high percentage of duplicates with a different (cheaper) Source 404 are produced. If such a determination is desired, a row is inserted into OrigSource 402 each time information from an existing Customer 400 is received that indicates a different Source.404
- HouseHold 406 is a grouping table wherein each row represents a group of
- HouseHold 406 carries information that is common to all customers at a given address, such as whether the property is owned or rented.
- HHoldSuppress 408 provides a method of suppressing mailings to particular HouseHolds 406. HHoldSuppress 408 can be used to suppress mailings for specific Brands 412, but not for other Brands 412. Typically, mailings are only suppressed for a specified period of time. Thus a cleanup process is periodically used to delete expired rows from the table.
- Source 404 is a look-up table used to identify the information "source" for a given customer. A row cannot be inserted into the Customer table 400 without referencing an existing entry in the Source table 404. Prior to loading customer data, the Source table 404 is populated with all potential sources of customer data. Source 404 can also be used to provide a way to give one source "priority" over another. In such a case, two or more sources are received from the same Customer 400. Thereafter, a rules such as "If I get two sources within one week of each other, pick source A over source B" can be used.
- Customer 400 and CustNameAddress 410 are two tables that combine to provide information specific to each customer.
- the Customer table 400 contains most of the demographic data.
- the CustNameAddress table 410 contains the name and address components. In general when the generic term "customer" is used, it is referring to the combination of three tables: Customer 400, CustNameAddress 410, and RentalExpire 414.
- a unique identifier for the customer called the PIP which stands for Person Identifier, is stored in Customer 400.
- Mailings are designed such that when a customer response comes in, it will contain the PIP for that customer so that the response can be cross-referenced back to the right customer in the database.
- RentalExpire 414 is only used if the Customer 400 is a "rental", which means that it was purchased from a list provider.
- a rented name can only be used for a specific period of time, unless the customer converts from being a prospect to an actual customer during that time. Conversion typically occurs as a result of responding to a promotion, or purchasing the client product.
- This table has a one-to-one relationship to the Customer table 400.
- CustCustAssoc 416 is an association table that records how one customer is related with (i.e. associated to) another customer. Examples include: "Cust A referred Cust B to this brand" or "Cust A is a parent of Cust B.”
- CollapsePIP 418 is a table wherein a row is inserted when two or more
- MarketScheme 422 is a grouping table that allows a business unit to define different schemes for dividing their market into different areas. For example, business unit “AA” may use a "SCHEME-1 " which is a hierarchy of regions, districts, and zones to identify the market areas; whereas business unit “BB” uses "SCHEME-2" which is a more flattened approach of North/South/East ⁇ /Vest.
- BusinessUnit 424 identifies each business unit within a client Organization.
- Business units can range from departments to whole companies, depending upon how the company needs to do reporting.
- Market 426 is a grouping table that describes (i.e. gives a name to) a given market or market area. It allows for a hierarchy of up to five levels to be defined, although the hierarchy needs to be inverted when this table is populated. For example:
- MarketZip 428 provides a way to assign zip codes to particular markets. Zip codes are often used to assign customers to market areas. There are a number of other possibilities, such as FIPS code, county, etc. The standard data model will provide this table for zip code, but other methods will have to be tailored to each client according to their needs. Alternatively, the database may allow for zip code "ranges" rather than individual zip codes. Brand Tables:
- Segment 430 is a grouping table that gives a name to the segments that customers may be assigned to. Most often, the segment is an indication of how often a customer uses products in the client's brand category. Examples of this type could be "Heavy,” “Medium,” or “Light.” Accordingly, Segment 430 can be used to categorize customers according to their potential use of a client's brand category.
- BrandCategory 432 is a grouping table that names the general brand category that the client competes in. An example might be "SOFT PRINKS.” BrandCategory 432 may also include data that tells how the client wants to measure customer use of products in this brand category. For example, they may want to measure "cases per month”, “uses per week”, or "nights stayed in last 12 months”.
- CustTarget 434 is an association table between Customer 400 and BrandCategory 432 that can store which particular segment a customer is in for this brand category. CustTarget 434 may also contain volume information that can be later used to segment (or re-segment) the customer.
- Brand 412 is a grouping table that names the brands being tracked on behalf of the client. Note that competitive brands may be included.
- CustBrandAssoc 436 is an association table between Customer 400 and Brand
- CustBrandAssoc 436 stores data about the relationship a customer has with a given brand. For example, "Out of the last 10 times you have used a product in this brand category, how may were for brand X"?
- BrandFamily 438 represents brand families for a particular client. Products and Purchase Transactions Tables:
- ProductGroup 440 is an optional grouping table that can be used to group related products. For example, a client that sells several printer models and accessories may wish to group their products according to product lines, such as "laser printers", “ink jet printers”, or “printer accessories”.
- Product 442 lists information about each client product or service. A specific product should not be in more than one product group. For example, if the product was a printer model "XLT-1200", it should not be in both the "laser printers” product group and the "business use” product group.
- PurchaseTrans 444 is an association table that associates a Customer 400 with a particular Product 442 in the form of a purchase.
- ProductOwner 446 associates a particular customer with particular products that the customer owns.
- ProductOwner 446 also indicates of the type of ownership (e.g. "owned by” or “used by"), and the serial number of the owned product.
- ProductStageOwn 448 defines "stages" of product ownership. Each ProductOwner 446, which associates a customer with an owned product, is also associated with a ProductStageOwn 448 that defines the stage of the ownership.
- NextSta ⁇ eOwn 450 represents the next possible stage of ownership.
- PrevStageOwn 452 represents the previous possible stage of ownership.
- ScrnQuestion 454 records all screener questions. Each question is recorded once, even though it may appear in several different communications. ScrnQuestion 454 allows a particular question to be dependent upon another question, or the response to that question. An example of this would be:
- ScrnQuestion 454 determines how to treat multiple responses (from the same customer) to a question that is being asked on several communications. Among the available options are (1) Keep only the last response, (2) Keep all responses, or (3) Keep all unique (different from any previous) responses.
- ScrnResponse 456 contains rows that represent a valid response to a question in the ScrnQuestion table 454. In the case of a question with four possible choices labeled A through P, there would be four rows in this table that pointed back to that question. Questions allowing open-ended responses will have a value of "OPEN.” Note that questions should either be open-ended or multiple choice, but not both. In other words, questions should not allow a choice such as "Other" where the customer supplies a value not listed among the other choices.
- CustScmResp 458 is an association table between the Customer 400 and ScrnResponse 456 tables wherein each row represents a customer response to a specific question. The response must be one of those listed in the ScrnResponse table 456 as a valid response to the question.
- ETN Event Transition Network
- the event transition network is a mechanism that tracks and moves customers through marketing campaigns.
- ETN describes a data structure (a group of "states") and a set of rules that moves an item from one state to another. From a marketing perspective, a customer is moved through various states of a marketing campaign with each state being associated with specific communications and responses. After the campaign ends, the final states of all customers are analyzed.
- One advantage of the ETN approach is that a single mechanism is used to set up marketing campaigns of arbitrary complexity. Moreover, how and when customers move from one state to another can be controlled.
- the ETN approach also makes it much easier to establish and track research groups. For example, specific attributes are set up for states that describe whether customers in a given state are involved in a research group, and if so, whether the customers are part of the control group or test group.
- the ETN design also provides the following features: standardized process to ensure consistent quality; mechanisms to automatically or manually move customers through a multi-phase marketing campaign; provisions for interactive, event-driven response and subsequent communication generation; and tracking of current state and total path through the network for any single customer.
- the marketing campaign comprises the following tables:
- Campaign 460 is a grouping table that represents or gives a name to the marketing campaign or promotional program. Each campaign will consist of one or more ETNstates 462. Simple campaigns may only have one state with a single communication.
- ETNstate 462 defines all the valid "states" for the marketing campaign or promotional program. Ouring a marketing program, each customer will start at the beginning state and progress through one or more states until the terminating (i.e. last) state is reached. In a typical multi-path marketing program, all customers will start out at the same beginning state, but during the course of the program, customers will progress through the remaining states at different rates and will not necessarily take the same path to the terminating state. Entry into a particular state will typically trigger an associated communication with the customer.
- ETN Rule 464 defines the rules for progressing from one ETNState 462 to the NextState 463.
- ETN Rule 464 contains the state that the customer is currently in and the state that the customer will progress to if the rule condition is met. When the condition is met, the rule is said to "fire” or “trigger.” The rule can be based upon how much time elapsed since getting to the current state or upon the successful completion of an arbitrary SQL statement that is stored in ETN Rule 464. In addition, there can be more than one rule that moves a customer from one state to another. TransitBatchMinion performs the actual transition between ETNStates 462. Transitions from one state to another are triggered in one of the following ways: CommPescr 466 Customer responds to a communication
- ScrnResponse 456 Customer responds to a screener question
- Pefault Customer transitions to new state by default after some user specified period of time passes.
- the response mechanisms can be set to trigger for a specific range of dates.
- a default rule is required if the state is not defined as a termination state. This ensures that the customers will eventually transition into a termination state. For example, one rule for "State #2" might specify that the customer can get to "State #4" by giving a particular response to a screener question, and another rule for "State #2” might specify that the customer can get to "State #4" by satisfying an SQL statement that identifies the customer as a "heavy” user of the brand.
- ETN Rule 464 also provides the capacity to determine the order in which rules are evaluated.
- ETNCommPescr 468 is an association table between the CommPescr 466 and ETNState 462 tables. ETNCommPescr 468 specifies which communication(s) are tied to which state(s) in a marketing campaign. When the customer progresses through the various states in a marketing campaign, this table is used to identify which communications are sent to the customer.
- CustCampgnAssoc 470 is an association table between the Customer 400 and ETNState 462 tables.
- CustCampgnAssoc 470 specifies which state a particular customer is in for a given marketing program because a customer may be participating in more that one marketing program at a time, and therefore would potentially be at different states for each program. All customers are enrolled in the campaign using standard processes. It is possible to add customers to the campaign at some later time or to remove them from participation. Once placed in an initial "starting" state, customers can be moved in to specific states associated with the initial communication based on a set of transition rules.
- ETNTransLog 472 provides an optional audit trail that tracks the path each customer took through a marketing program and the most commonly travelled paths through a marketing campaign to be determined. ETNTransLog 472 is optional in that it is only populated if the ETN Rule 464 specifies that it should be logged when this rule fires (i.e. condition is met). CommPescr 466 describes each communication that can be sent to a customer.
- CommPescr 466 can also be used to describe incoming communications either from the customer, client, or a vendor.
- PBCommOut 474 is an association between Customer 400 and CommPescr 466 that records which communications have been sent to each customer. This information can be moved to a log file after some period of time. Archiving of customer data will also force the archive of all related communications records.
- PBCommln 476 records the response by the customer to a marketing communication. The response can be quite simple, such as "responded", or more complex where there are multiple responses to the campaign possible.
- InMarketComm 478 is an association between Customer 400 and CommPescr 466 that records incoming communications.
- CommBrand 480 is used to identify which communications have been set up for a given brand or product. And conversely, CommBrand 480 can be used to look up what brands and/or products are being marketed in a given communication.
- Cell 482 is an arbitrary grouping into which customers are placed for a promotion event. These groupings are created for research purposes, and can be queried during later data processing. An example of a cell might be "white females under the age of 30," or "people who live in Texas.”
- the QeJl 482 basically consists of an arbitrary code and description. Cell 482 coding is typically performed during the data extract process.
- PIT information can be pulled for test, control or the target group for use on post-analysis.
- the PIT information is exported from the database and delivered to the analysis user. No further tracking of the PIT project table of exported data is maintained.
- Uniqueness requirements can specify that the communications should be unique by customer id or by household id. Further a household can be defined as a single building address or all people with the same last name living at the same address.
- Campaign Management includes tasks that track an individual customer through the stages of a marketing campaign. Examples of Campaign Management processes include EtnPrep. EtnAssign. EtnEnroll. CommGenerate. CommReversal, and EtnTransitBatch.
- CommGenerate generates one or more communication records for unposted communications.
- the communications are placed in a new project table with added delivery information such as name, address, phone, e-mail and the relevant communications codes.
- the necessary rows are posted to the commOut table, and suppression by household is also performed.
- CommReversal assists the user in reversing a communications posting. It will remove rows from the dbcommout table, and clear suppressed households.
- EtnAssign assigns ETN states to customers based on a set of parameters specified by the user. The user can elect to assign states to all customers or choose among customers based on priority.
- EtnEnroll enrolls customers in a marketing program. The customers will already have been assigned an ETN state by the minion EtnAssign.
- the enrollment process creates associations between customers and ETN states within the client database. These associations are stored in the table CustCampgnAssoc EtnPrep prepares a user-specified project table for ETN state assignment. This preparation involves adding a column for ETNstate and then removing suppressed and duplicate customer rows.
- EtnTransitBatch performs the transition from one state to another for all eligible participants in the custETNassoc table. These transitions are based on the ETN transition rules as defined by the user.
- FIG. 7B another block diagram of the persistent objects comprising the client objects 124 ( Figure 1), in accordance with one possible relational embodiment of the present invention, is illustrated.
- the following tables are similar in that none of them are used to store client data. Instead, they are used to help direct the application software processes that need to validate and load incoming client data.
- CodeMaster 484 contains a list of column names that appear in one or more other tables and have a pre-defined set of valid values that can be assigned to them. This table, along with the CodeLook table 486, provides a convenient way for the application to validate incoming data.
- CodeLook 486 stores the list of valid values for columns named in the CodeMaster table 484.
- the application compares incoming data for a column named in CodeMaster 484 against this list of valid values.
- Each row contains one valid value for a given column in CodeMaster 484.
- RecodeMap 488 is used by the application to translate certain incoming column values into other values.
- an input file may contain the words MALE or FEMALE to indicate the sex of the customer, but information needs to be stored as M or F.
- Eo_sequence_table 490 assigns the next sequential value to a given table's primary key column.
- every table has an "artificial" primary key called an "Object IP” (OIP).
- OIP Object IP
- the value stored in the primary key of each table is a system generated sequential number.
- the application uses Eo_sequence_table 490 to determine the next primary key value that is to be assigned for each table in the client objects 124.
- PPColumn 492 is one of three tables used together to group related column names. PPColumn 492 stores the name of each column used throughout the client objects 124. Along with the column name, it also stores a brief description and what
- type of data it contains (e.g. PATE, CHAR(8), INTEGER, etc.).
- PPGroup 494 is one of three tables used together to group related column names. PPGroup 494 names each group of columns to improve consistency in the various data pulls that are requested. A special group called "WORKING" is reserved and should be used to add columns that are temporary or are not yet added to the data model.
- PPGroupColumn 496 is one of three tables used together to group related column names. It is an association table between PPGroup 494 and PPColumn 492.
- PPGroupColumn 496 identifies which columns are in a given group.
- SumCustDescr 498 represents descriptions of a table summarization that can be made for reporting purposes.
- SumCustDetaiH 500 and SumCustPetail2 502 represent particular runs of a summarization.
- Chain 504 represents a particular retailer chain and Retailer 506 represents represent retailers associated with a retail chain.
- Seeds 508 are persons who are intentionally added as the destination of promotion pieces to aid in tracking when pieces get delivered.
- SeedGroup 510 is a group of seeds and SeedGroupAssoc 512 is an association table between Seed 508 and
- FIG. 8 a block diagram of the EOFLite components 126 ( Figure 1), in accordance with a preferred embodiment of the present invention, is illustrated.
- EOFLite components 126 are designed to provide a "lightweight” binding layer for moving data back and forth between the client database 114 and high-volume “batch” processes.
- the EOFLite components 126 creating instances of custom classes without having to live with the overhead inherent in the lower-level EOF frameworks, which are designed more for OLTP-type processing than for record-by-record batch processing.
- the EOFLite components 126 are designed to work with the same enterprise object classes that are used with EOF, so that a single object model can be developed that works the same for both interactive and batch processing (i.e. the same business logic will be used by both).
- the major classes in EOFLite are designed to model familiar database concepts, such as the database itself, connections to the database, cursors in a connection, and bindings between the data being manipulated by a cursor and some object that is to be populated with that data.
- These components supplement the basic EOF "primitive" classes, such as EOModel 602, EOQualifier 604, EOEntity 606, and EOAttribute 608, and when used together result in a much more efficient mechanism for performing batch processing.
- the EOFLite components 126 are as follows: EOModel 602 describes the database that is represented by this PBPatabase
- the model contains connection information, and a description of the tables in the database and the relationships between them.
- EOQualifier 604 is the qualifier that the receiver uses to qualify data selects.
- EOEntity 606 for which the receiver is configured to retrieve data. This entity describes which table to operate on, and the columns in the table that should be retrieved when the receiver fetches data.
- EOAttribute 608 represents the table column whose data the receiver is binding to its object.
- PBPatabase 610 represents a single physical database. Each instance of this class can be associated with zero or more PBConnection 612 instances.
- PBConnection 612 represents a physical connection to a single database. Each connection can have zero or more cursors operating through it.
- PBCursor 614 represents data cursors operating through a connection. These instances are configured for a single entity and an associated class of objects whose instances will be populated with the data retrieved by the cursor.
- PBBinding 616 represents bindings between a single EOAttribute 608, which represents a single column in a table, and a single instance variable of an object. These "bindings" are used by instances of the PBCursor 614 to map data between the attributes of an EOEntity 606 and the instance variables of the cursors prototype object.
- NSObject 618 is the object to and from which data is being mapped by the receiver.
- String is a lightweight implementation of NSString that provides more external access to the internal representation of the string, and minimizes the amount of memory allocation overhead that takes place during string manipulation. This class is primarily provided as an optimization for batch processes that cannot afford the performance overhead of the NSString class.
- Number is a lightweight implementation of NSNumber that minimizes the amount of memory allocation overhead that takes place during data manipulation. This class is primarily provided as an optimization for batch processes that cannot afford the performance overhead of the NSNumber class.
- CalendarPate is a lightweight implementation of NSCalendarDate that minimizes the amount of computation overhead involved to manipulate dates. This class is primarily provided as an optimization for batch processes that cannot afford the performance overhead of the NSCalendarDate class.
- the user interface tier comprises native OpenStep applications running on the end-user workstations.
- the system can include web-brower interfaces to support connections to the system over the Internet.
- the front-end applications in the user interface tier are Production. SysAdmin. and OpCon.
- the Production application is the interface that provides access to the following production processes and procedures: importing client data; reformatting and recoding of client data; making name and address corrections to incoming customer information; suppressing selected incoming records from inclusion in the client database; merging incoming customer records with existing records in the client database; and extracting selected client data for various purposes.
- the SvsAdmin application is the administrative interface to the present invention, and provides support for the following processes and procedures: administration of the agents running on the various machines in the system; administration of the job management system; maintenance of the user and security tables; and sundry table maintenance.
- the OpCon application is the interface to the present invention for the Operations group, and provides support for the following processes and procedures: maintenance of tape tracking information; and posting messages to system operators (such as a requesting a tape mount or alerting the operator about an observed system malfunction).
- Import and Update The four major processes in the user production application are: Import and Update; Querying/Extraction; Reporting; and Campaign Management. These processes are grouped according to the results they produce for the user.
- the user of the present invention can create job streams (sets of work process configurations grouped together so that they can execute without user intervention) to support these major processes. Some of the tasks within job streams, such as TapeContents and DataDump, can be used to support all four categories listed above.
- Import and Update This process includes all the tasks necessary for adding data to the client's database. Data comes in from various sources like list brokers, client-provided data and customer response data. The data is standardized and cleaned before being added to the database through the update. Examples of processes used in the Import and Update include ACEUSBatch. CustRefresh. DbMatch. NameParse. QAMacro. QAMicro. Recode. Reformat. TapeRead, and Update.
- ACEUSBatch handles address correction and coding of all US address records in a project table, the customer name and address table or the DMA suppression table. It also generates the matchString and parseAddress data used by DbMatch to match customers against the database. CustRefresh provides address correction to new or changed database records.
- DbMatch matches incoming customer records in a project table against the database. Matches by household, and individual within the household can be requested.
- NameParse parses customer names into standard components and then optionally assigns a sex code based on either the name prefix or the first name.
- QAMacro determines if the input file is of the expected size and record length.
- QAMicro examines the contents of a project table at a detailed level. Individual columns are examined for specific content to verify the validity of the data.
- Recode re-codes existing data columns or creates contents for empty columns (known as working fields) based on the input data contained in other columns.
- Reformat imports data from flat files into project tables.
- the source of this data is typically from tape.
- TapeRead moves data from tape to disk in flat file format. The capability exists to handle cartridge or round reel tapes.
- Update processes additions or changes to the database based on the data contained within the project table. This process modifies data content for cleansing purposes.
- This type of process includes all the necessary tasks for viewing the data that is in the database.
- the user can look for a combination of data from various tables in the client's database in order to determine what to extract and use for project tables.
- Project tables allow the user to house queried data extracted from the client's database in order to meet the information needs of the client. Examples of processes used to query and extract data include Export. Layout. SqlDelete. SqlSelect. SqlUpdate. SuppressDMA. TableCombine. TableDedup. TableMatch. and TapeWrite.
- Export sends a project or database query to a flat ASCII data file. This process is usually performed in preparation for a job to write the exported data to tape for delivery to an outside vendor.
- Layout produces a document detailing the contents of a project table. Normally, the layout is produced as part of the Export minion output, but this feature allows structure analysis of a project table at any point in the process. SqlPelete deletes specific rows in a specified project table. Batch deletions on client data tables are not supported for security reasons.
- SqlSelect runs requested SQL query expressions against the appropriate client database.
- the results of the query are placed in a project table.
- SqlUpdate accepts a Where clause from the user and a list of columns and update expressions. The updates are then applied to all rows in the table satisfied by the Where clause.
- SuppressPMA matches incoming customer records against the suppression table supplied by the Pirect Marketing Association (PMA).
- PMA Pirect Marketing Association
- the two types of suppression are Mail and Phone. This minion will remove records from a project table or just count the number of matches.
- TableCombine combines multiple project tables into a single table.
- the user has the option of adding all contents to the first table in the list or creating a new output project table. Removal of all combined tables, except for the destination table, is also provided as an option. Only columns in common with the first project table in the user specified list are carried forward to the destination table. This minion performs a raw merge of data from multiple tables on common column names. There is no check for duplicate data.
- TablePedup removes or updates duplicate rows in a single project table. This simple duplicate removal process can be used to keep the 'best' record of a group of matching records provided some priority column exists to order the records from best to worst.
- TableMatch matches a project table (table A) against another project table (table
- TapeWrite moves data from disk to tape in flat file format. The capability exists to handle cartridge or round reel tapes. Reporting:
- Reporting includes all the tasks for reporting the results of the extraction, data import, update and ad hoc requests.
- List produces a quick report of a select set of columns and rows. This process is often used to provide a quick, readable dump of a set of records from the database. For example, List the customers that have a source of "ONLINE" and have been updated within the last week. Scan produces a frequency distribution report of the contents of one or more columns in the selected data table or view. The user can elect to perform multiple single- level scans or a single multi-level scan. For example, Scan the first three zip code characters (also known as SCF) of all customers to be included in a marketing campaign.
- SCF zip code characters
- the System Configuration File describes the possible named configurations of the present invention.
- Client processes e.g. user applications or other processes of the present invention
- a system configuration consists of a system name with an associated list of the names of the hosts that participate in that system.
- a host description consists of a host name with an associated list of agent descriptions, and a list of the names of the agents that should be launched immediately when the agent manager agent starts on that host.
- An agent description consists of an agent name with an associated agent profile (discussed in a previous section), list of object descriptions, and list of additional frameworks to load to support the objects the agent will manage.
- the System Configuration File is used both by interface-layer minion proxies (to locate their corresponding remote objects), and by object-layer agents (to determine their profile). This means that the System Configuration File must be in at least one shared location that is accessible across all machines that participate in the system.
- System Configuration File The exact location of the System Configuration File is configurable from the runtime environment variable CONFIGFILE, which will contain the full path the directory where the system configuration file is located.
- CONFIGFILE runtime environment variable
- the system must rely on this environment variable because we are running on both UNIX and NT platforms, which have differing file path syntax (in other words, it's hard for the system to assume default locations because it's not safe to assume anything about the file configuration on which the system software is running).
- System executable files are located in either local on every machine or in a shared directory that is accessed over the network.
- Client-Specific Executable Files Client-specific executable files for context-dependent agents are located in a path that is obtained from the client object in the context of the session that is making use of the agent (specifics forthcoming).
- the present invention may use a hardware configuration consisting of a four processor Sun UltraEnterprise 4000 Unix server running SunOS 5.5.1 , connected to desktop PCs running Microsoft Window NT Workstation 4.0.
- the network connection between the machines is 10Mbit Ethernet.
- the Sun Unix server hosts a disk array of 34 4.2GB hard disks for storage of database information.
- FIG. 9A a block diagram illustrating the import and update processes begins in block 902.
- the incoming data is read from tapes in block 904 and if the read was unsuccessful, as determined in decision block 906, the inbound data set is rejected in block 908. If, however, the read was successful, a data dump is performed in block 910, the data is reformatted in block 912 and recoded in block 914. If the reformatting and recoding of the data was not successful, as determined in decision block 916, processing loops back to the reformatting process of block 912 and processing continues as previously described.
- the Scan process is performed in block 918, the names are parsed in block 920 and the ACEUS Batch process is performed in block 922. If the data is not ready to update the database, as determined in decision block 924, processing loops back to the reformatting process of block 912 and processing continues as previously described.
- the user specifies the Project table to be executed in block 926. If a customer update is enabled, as determined in decision block 928, the user may select one of six mutually exclusive processes to perform. More specifically, the user may select a national change of address update 930, a telematch update 932, a PIP suppression update 934, a name & address suppression update 936, an add & overlay customer update 938, and an add rentals & prospects update 940. The update process is then completed in block 942 after performing the national change of address update 920, the telematch update 932, the PIP suppression update 934 and the name & address update 936. The update process continues after the add & overlay customer update 938 and the add rentals & prospects update 940.
- the database is updated with customer responses in block 946 if the campaign update is enabled, as determined in decision block 944.
- the database is updated with customer purchase transactions in block 950 if the purchase update is enabled, as determined in decision block 948.
- the database is then updated with customer brand preferences in block 954 if the brand update is enabled, as determined in decision block 952.
- the database is updated with customer screener responses in block 958 if the screener update is enabled, as determined in decision block 956.
- the screener update of block 958 is complete, or if the campaign update is not enabled, as determined in decision block 956, the update is complete in block 960.
- Query and Extraction Process begins in block 1002.
- the Count process is performed in block 1004 and the SQL Select process is performed in block 1006.
- the user may select a table combine process in block 1008, a table delete duplications process in block 1010 or a table match process in block 1012.
- the user may execute another of these processes, as determined in decision block 1014. If another process is to be run, processing loops back to the SQL Select process in block 1006 and the above described process repeats. If, however, the user elects not execute another, as determined in decision block 1014, the Scan process is performed in block 1016 and the Ust process is performed in block 1018.
- processing returns to the SQL Select process in block 1006 and the above described process repeats. If, however, the extracted data is acceptable, the data is exported in block 1022, subjected to a layout process in block 1024. The data is then dumped in block 1026 to either an electronic data shipment, such as ftp, uucp, zmodem, disks, etc. in block 1028 or to tape in block 1030. In either case, processing ends in block 1032.
- an electronic data shipment such as ftp, uucp, zmodem, disks, etc.
- a database maintenance process is illustrated and begins in block 1102. Thereafter, the user can run a customer refresh process in block 1104, a rental expression removal process in block 1106 or a segmentation post-process in block 1108. After the completion of the selected process, the user can execute another process as determined in decision block 1110. If another process is to be executed, processing loops back and the above describe process repeats. If, however, another process is not to be executed, as determined in decision block 1110, processing ends in block 1112.
- a project maintenance process begins in block 1202. Thereafter, the user can run a SQL delete process in block 1204, a SQL update process in block 1206, an index process in block 1208, an archive project process in block 1210, and a un-archive process in block 1212. After the completion of the selected process, the user can execute another process as determined in decision block 1214. If another process is to be executed, processing loops back and the above describe process repeats, if, however, another process is not to be executed, as determined in decision block 1214, processing ends in block 1216.
- a flow chart illustrating the campaign management processes is generally denoted by the numeral 1300.
- the illustrated process can be started either in block 1302 or block 1312.
- the EtnPrep process prepares a user-specified project table for ETN state assignment by adding a column for the States (ETjNstate), removing suppressed customer rows and enforcing uniqueness by removing any duplicate customer rows.
- the user then may perform various queries and extraction processes in block 1304.
- the query and extraction processes were previously described in reference to Figure 10.
- the EtnAssign process assigns ETN states to rows (customers) in the extracted table and create an assignment report in block 1306.
- the user may at this point perform optional quality assurance checks beyond the assignment report in block 1308.
- the EtnEnroll process enrolls customers in a marketing program by creating ETN enrollment entries (one for each customer assigned to an ETN state) in block 1310.
- the enrollment process creates associations between customers and ETN states within the client database that are then stored in the table CustCampgnAssoc ( Figure 7A, 470).
- the EtnEnroll process in block 1310 is also performed after the EtnTransitBatch process in block 1312.
- the EtnTransitBatch process in block 1312 moves customers, using the ETN transition rules, from one state to another for all eligible participants in the CustCampgnAssoc table ( Figure 7A, 470).
- the EtnTransitBatch process in 1312 can be performed on all campaigns or just a single campaign.
- An optional SQLSelect process can be used in block 1314 to pull point in time data based on the customer ID in the communications table.
- the CommGenerate process in block 1316 generates one or more communication records for unposted communications.
- the communications are placed in a new project table with added delivery information such as name, address, phone, e-mail and the relevant communications codes.
- the necessary rows are posted to the DBCommOut table ( Figure 7A, 474), and suppression by household is also performed.
- Another quality assurance check may be run in block 1318 to count the communications assigned and the total rows in the communication table.
- the delivery information can also be checked for missing data, such as state, zip code or name.
- ETN State 0 in block 1402 is the starting point for the campaign and is used to enroll or move the customers into the campaign. As shown in this example, ETN State 0 has two ETN Rules (State 0- Rule 1 represented by line 1404 and State 0-Rule 2 represented by line 1406).
- ETNTransitBatch ( Figure 13, 1312) process is used to apply State 0-Rule 1 and State 0-Rule 2 to the customers in ETN State 0. All customers in ETN State 0 that match State 0-Rule 1 are moved to ETN State 1A in block 1408. Similarly, all customers in ETN State 0 that match State 0-Rule 2 are moved to ETN State 1B in block 1410.
- ETN State 1A in block 1408 has two ETN Rules (State 1A-Rule 1 represented by line 1412 and State 1A-Rule 2 represented by line 1414).
- ETN State 1 B in block 1410 has one ETN Rule (State 1 B-Rule 1 represented by line 1416).
- ETNTransitBatch Figure 13, 1312
- additional customers may move out of ETN State 0 to either ETN State 1A or ETN State 1 B as previously described.
- ETN State 1A that match State 1 A-Rule 1
- ETN State 2A the customers in ETN State 1A that match State 1A-Rule 2
- ETN State 2B the customers in ETN State 2B
- ETN State 1 B that match State 1B-Rule 1
- Customers may also move from any of these States (blocks 1408, 1410, 1418, 1420 or 1422) to the ETN State TERM in block 1418 based on other rules. For example, customers may move to ETN State TERM if there has been no response within a given time period, or a perhaps a negative response was received. This process repeats until the campaign is over.
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- Development Economics (AREA)
- General Physics & Mathematics (AREA)
- Marketing (AREA)
- Economics (AREA)
- Databases & Information Systems (AREA)
- General Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Technology Law (AREA)
- Entrepreneurship & Innovation (AREA)
- Game Theory and Decision Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Claims
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU42261/99A AU4226199A (en) | 1998-10-31 | 1999-06-01 | Method and apparatus for data management using an event transition network |
CA002348887A CA2348887A1 (en) | 1998-10-31 | 1999-06-01 | Method and apparatus for data management using an event transition network |
EP99926103A EP1131767A4 (en) | 1998-10-31 | 1999-06-01 | Method and apparatus for data management using an event transition network |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/183,910 US6185555B1 (en) | 1998-10-31 | 1998-10-31 | Method and apparatus for data management using an event transition network |
US09/183,910 | 1998-10-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2000026844A1 true WO2000026844A1 (en) | 2000-05-11 |
Family
ID=22674807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US1999/012115 WO2000026844A1 (en) | 1998-10-31 | 1999-06-01 | Method and apparatus for data management using an event transition network |
Country Status (5)
Country | Link |
---|---|
US (2) | US6185555B1 (en) |
EP (1) | EP1131767A4 (en) |
AU (1) | AU4226199A (en) |
CA (1) | CA2348887A1 (en) |
WO (1) | WO2000026844A1 (en) |
Families Citing this family (98)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1124907A (en) * | 1997-06-27 | 1999-01-29 | Toshiba Corp | Software development supporting method/device |
US6108653A (en) * | 1998-08-31 | 2000-08-22 | Platinum Technology Ip, Inc. | Method and apparatus for fast and comprehensive DBMS analysis |
US6185555B1 (en) * | 1998-10-31 | 2001-02-06 | M/A/R/C Inc. | Method and apparatus for data management using an event transition network |
US6330528B1 (en) * | 1998-12-16 | 2001-12-11 | Compaq Computer Corp. | Method of terminating temporarily unstoppable code executing in a multi-threaded simulated operating system |
US7184969B1 (en) * | 1999-01-08 | 2007-02-27 | Performance Dna International, Ltd. | Position analysis system and method |
US7937364B1 (en) * | 1999-03-09 | 2011-05-03 | Oracle International Corporation | Method and system for reliable access of messages by multiple consumers |
US6920455B1 (en) * | 1999-05-19 | 2005-07-19 | Sun Microsystems, Inc. | Mechanism and method for managing service-specified data in a profile service |
US7047212B1 (en) | 1999-09-13 | 2006-05-16 | Nextmark, Inc. | Method and system for storing prospect lists in a computer database |
US7246077B1 (en) | 1999-09-13 | 2007-07-17 | Nextmark, Inc. | Systems and methods for generating highly responsive prospect lists |
US7072343B1 (en) | 1999-09-27 | 2006-07-04 | Cisco Technology, Inc. | Methods and apparatus for controlling a data stream using a host agent acting on behalf of a host computer |
US7444390B2 (en) | 1999-10-20 | 2008-10-28 | Cdimensions, Inc. | Method and apparatus for providing a web-based active virtual file system |
US6738775B2 (en) * | 1999-11-30 | 2004-05-18 | Base One International Corp. | Database communication system and method for communicating with a database |
EP1107108A1 (en) * | 1999-12-09 | 2001-06-13 | Hewlett-Packard Company, A Delaware Corporation | System and method for managing the configuration of hierarchically networked data processing devices |
US6810383B1 (en) * | 2000-01-21 | 2004-10-26 | Xactware, Inc. | Automated task management and evaluation |
WO2001082140A1 (en) * | 2000-04-26 | 2001-11-01 | Student Universe.Com, Inc. | A database arrangement |
JP2001318897A (en) * | 2000-05-02 | 2001-11-16 | Nec Corp | User authentication method, network system to be used for the method, and recording medium recorded with its control program |
US6742001B2 (en) * | 2000-06-29 | 2004-05-25 | Infoglide Corporation | System and method for sharing data between hierarchical databases |
US7275038B1 (en) * | 2000-08-18 | 2007-09-25 | The Crawford Group, Inc. | Web enabled business to business operating system for rental car services |
US8600783B2 (en) | 2000-08-18 | 2013-12-03 | The Crawford Group, Inc. | Business to business computer system for communicating and processing rental car reservations using web services |
US7899690B1 (en) * | 2000-08-18 | 2011-03-01 | The Crawford Group, Inc. | Extended web enabled business to business computer system for rental vehicle services |
US6718336B1 (en) * | 2000-09-29 | 2004-04-06 | Battelle Memorial Institute | Data import system for data analysis system |
US6993528B1 (en) * | 2000-10-04 | 2006-01-31 | Microsoft Corporation | Methods and systems for allowing third party client applications to influence implementation of high-level document commands |
US20020042727A1 (en) * | 2000-10-05 | 2002-04-11 | Takafumi Soramoto | Compensation-granting system and method and server thereof |
US6581020B1 (en) * | 2000-10-10 | 2003-06-17 | Velquest Corporation | Process-linked data management system |
US6959301B2 (en) * | 2001-01-04 | 2005-10-25 | Reuters Limited | Maintaining and reconstructing the history of database content modified by a series of events |
CN1383060A (en) * | 2001-04-28 | 2002-12-04 | 国际商业机器中国香港有限公司 | System based on computer and method for planning electronic commerce |
US7680681B2 (en) * | 2001-05-31 | 2010-03-16 | Eagency, Inc. | Shared insurance industry system for non-disruptive enhancement and substitution of insurance transaction processing |
US20040044664A1 (en) * | 2001-07-10 | 2004-03-04 | Sabre Inc. | Systems and methods for applying customer DNA to airline service and customer relationship management environments |
CA2353026A1 (en) * | 2001-07-13 | 2003-01-13 | Sygenics Inc. | Adaptive data architecture |
US20030040988A1 (en) * | 2001-08-08 | 2003-02-27 | American Management Systems, Inc. | Posting lines |
US20030046194A1 (en) * | 2001-08-08 | 2003-03-06 | Mcclendon Glenn Raymond | Posting lines |
US7203945B2 (en) * | 2001-08-16 | 2007-04-10 | Sun Microsystems, Inc. | Import/export utility and a method of processing data using the same |
US20030065598A1 (en) * | 2001-10-03 | 2003-04-03 | John Bunda | Methods and systems for managing a portfolio of securities |
US20030070088A1 (en) * | 2001-10-05 | 2003-04-10 | Dmitry Gryaznov | Computer virus names cross-reference and information method and system |
CA2381737A1 (en) * | 2002-04-15 | 2003-10-15 | Ibm Canada Limited-Ibm Canada Limitee | Framework for managing data that provides correlation information in a distributed computing system |
GB2387684A (en) * | 2002-04-19 | 2003-10-22 | Hewlett Packard Co | Management of a long term digital document storage system |
GB2387683B (en) * | 2002-04-19 | 2007-03-28 | Hewlett Packard Co | Workflow processing scheduler |
US7127467B2 (en) * | 2002-05-10 | 2006-10-24 | Oracle International Corporation | Managing expressions in a database system |
US20040039612A1 (en) * | 2002-06-14 | 2004-02-26 | Neil Fitzgerald | Method and apparatus for customer direct on-line reservation of rental vehicles |
US8108231B2 (en) | 2002-06-14 | 2012-01-31 | The Crawford Group, Inc. | Method and apparatus for improved customer direct on-line reservation of rental vehicles |
US8375113B2 (en) * | 2002-07-11 | 2013-02-12 | Oracle International Corporation | Employing wrapper profiles |
JP2005534121A (en) * | 2002-07-26 | 2005-11-10 | エベレット ロン | Data management architecture related to generic data items using references |
US8005802B2 (en) * | 2002-08-01 | 2011-08-23 | Oracle International Corporation | Partial evaluation of rule sets |
US7565379B2 (en) | 2002-08-01 | 2009-07-21 | Edwina Lu | Preventing change cycling using rules and redo tags in a redo log |
US7613741B2 (en) * | 2002-08-01 | 2009-11-03 | Oracle International Corporation | Utilizing rules in a distributed information sharing system |
US20040049571A1 (en) * | 2002-09-06 | 2004-03-11 | Johnson Bruce L. | Tracking document usage |
US20070127400A1 (en) * | 2002-12-11 | 2007-06-07 | Leader Technologies, Inc. | Professional Services Communications Architecture |
US7925246B2 (en) | 2002-12-11 | 2011-04-12 | Leader Technologies, Inc. | Radio/telephony interoperability system |
US20050063524A1 (en) * | 2002-12-11 | 2005-03-24 | Leader Technologies, Inc. | Communication system and method |
US8195714B2 (en) | 2002-12-11 | 2012-06-05 | Leaper Technologies, Inc. | Context instantiated application protocol |
US8396958B1 (en) | 2002-12-18 | 2013-03-12 | The United States Of America As Represented By The Secretary Of The Navy | Computer-automated logbook of condition-based data for machinery management |
US20040249706A1 (en) * | 2003-06-04 | 2004-12-09 | Oracle Corporation | Collaborative campaign execution system |
US7685207B1 (en) * | 2003-07-25 | 2010-03-23 | The United States Of America As Represented By The Secretary Of The Navy | Adaptive web-based asset control system |
US8365193B2 (en) * | 2003-08-14 | 2013-01-29 | Oracle International Corporation | Recoverable asynchronous message driven processing in a multi-node system |
US7698159B2 (en) * | 2004-02-13 | 2010-04-13 | Genworth Financial Inc. | Systems and methods for performing data collection |
US20050182666A1 (en) * | 2004-02-13 | 2005-08-18 | Perry Timothy P.J. | Method and system for electronically routing and processing information |
US7320003B2 (en) * | 2004-02-13 | 2008-01-15 | Genworth Financial, Inc. | Method and system for storing and retrieving document data using a markup language string and a serialized string |
US7100824B2 (en) | 2004-02-27 | 2006-09-05 | Evolution Robotics, Inc. | System and methods for merchandise checkout |
US20050222996A1 (en) * | 2004-03-30 | 2005-10-06 | Oracle International Corporation | Managing event-condition-action rules in a database system |
US7401085B2 (en) * | 2004-04-14 | 2008-07-15 | Blackrock, Inc. | System and method for controlling the release of updates to a database configuration |
US20050262037A1 (en) * | 2004-05-19 | 2005-11-24 | Christensen Barbara A | Method and apparatus for controlling result dataset generation in a javascript environment |
US7509584B2 (en) * | 2004-05-28 | 2009-03-24 | Sap Ag | Dynamic ECMAScript class loading |
US7590620B1 (en) * | 2004-06-18 | 2009-09-15 | Google Inc. | System and method for analyzing data records |
US7567975B2 (en) * | 2005-03-16 | 2009-07-28 | Oracle International Corporation | Incremental evaluation of complex event-condition-action rules in a database system |
DE102005014273B4 (en) * | 2005-03-24 | 2012-04-05 | Dspace Digital Signal Processing And Control Engineering Gmbh | Comparison of interfaces between software components |
US7634495B2 (en) * | 2005-05-06 | 2009-12-15 | Microsoft Corporation | System of multi-level defaults in transaction entries |
JP4708862B2 (en) * | 2005-05-26 | 2011-06-22 | キヤノン株式会社 | Optical scanning device and image forming apparatus using the same |
US7346756B2 (en) * | 2005-09-15 | 2008-03-18 | Sbc Knowledge Ventures, L.P. | System, computer readable medium and method for multi-tiered data access |
US7743138B2 (en) * | 2005-09-22 | 2010-06-22 | Dot Hill Systems Corporation | Method and apparatus for external event notification management over in-band and out-of-band networks in storage system controllers |
US7818436B2 (en) * | 2005-09-22 | 2010-10-19 | Dot Hill Systems Corporation | Method and apparatus for external interface user session management in storage system controllers |
US20070136683A1 (en) * | 2005-12-14 | 2007-06-14 | Alcatel | Graphical user interface for generic listing of managed objects |
JPWO2007077600A1 (en) * | 2005-12-28 | 2009-06-04 | 富士通株式会社 | Operation management program, operation management method, and operation management apparatus |
US8379834B2 (en) * | 2006-01-21 | 2013-02-19 | Soundbite Communications, Inc. | Method and system for managing interactive communications campaigns |
US8271309B2 (en) | 2006-03-16 | 2012-09-18 | The Crawford Group, Inc. | Method and system for providing and administering online rental vehicle reservation booking services |
US20070294116A1 (en) * | 2006-06-14 | 2007-12-20 | Scott Paul Stephens | Method and system for an online rental vehicle reservation-booking website including a travel agent path |
US20080109735A1 (en) * | 2006-11-03 | 2008-05-08 | Research In Motion Limited | System and method for replying to an electronic mail message |
JP5002277B2 (en) * | 2007-02-06 | 2012-08-15 | キヤノン株式会社 | Job processing apparatus, method for controlling job processing apparatus, storage medium, and program |
US9027025B2 (en) * | 2007-04-17 | 2015-05-05 | Oracle International Corporation | Real-time database exception monitoring tool using instance eviction data |
US8380766B2 (en) * | 2008-02-08 | 2013-02-19 | Adaptive Intelligence Llc | Systems and methods for handling addresses within a database application |
JP5083408B2 (en) * | 2008-06-25 | 2012-11-28 | 富士通株式会社 | Configuration management apparatus, configuration management program, and configuration management method |
US9128895B2 (en) * | 2009-02-19 | 2015-09-08 | Oracle International Corporation | Intelligent flood control management |
US8510538B1 (en) | 2009-04-13 | 2013-08-13 | Google Inc. | System and method for limiting the impact of stragglers in large-scale parallel data processing |
US9165086B2 (en) | 2010-01-20 | 2015-10-20 | Oracle International Corporation | Hybrid binary XML storage model for efficient XML processing |
US9213731B2 (en) * | 2010-05-13 | 2015-12-15 | Symantec Corporation | Determining whether to relocate data to a different tier in a multi-tier storage system |
US8458530B2 (en) | 2010-09-21 | 2013-06-04 | Oracle International Corporation | Continuous system health indicator for managing computer system alerts |
US8965861B1 (en) * | 2012-06-28 | 2015-02-24 | Amazon Technologies, Inc. | Concurrency control in database transactions |
US20140067564A1 (en) | 2012-08-30 | 2014-03-06 | Ebay Inc. | Shopping list creator and optimizer |
US9098508B2 (en) * | 2012-11-21 | 2015-08-04 | Electronic Arts Inc. | Aggregating identifiers for media items |
US9589535B2 (en) | 2013-07-19 | 2017-03-07 | Paypal, Inc. | Social mobile game for recommending items |
US9235564B2 (en) | 2013-07-19 | 2016-01-12 | International Business Machines Corporation | Offloading projection of fixed and variable length database columns |
US9275168B2 (en) | 2013-07-19 | 2016-03-01 | International Business Machines Corporation | Hardware projection of fixed and variable length columns of database tables |
US9773018B2 (en) | 2013-08-13 | 2017-09-26 | Ebay Inc. | Mapping item categories to ambiguous queries by geo-location |
JP6459180B2 (en) * | 2014-02-10 | 2019-01-30 | 富士ゼロックス株式会社 | Failure prediction system, failure prediction device, job execution device, and program |
CN105787058B (en) * | 2016-02-26 | 2019-08-02 | 广州品唯软件有限公司 | A kind of user tag system and the data delivery system based on user tag system |
US10650017B1 (en) | 2016-08-29 | 2020-05-12 | Amazon Technologies, Inc. | Tiered storage for data processing |
US11334568B2 (en) | 2018-03-20 | 2022-05-17 | Locus Robotics Corp. | Deep caching in the data access layer of an enterprise portal application |
US10970306B2 (en) | 2018-03-20 | 2021-04-06 | Locus Robotics Corp. | Change management system for data synchronization within an enterprise portal application |
US12012110B1 (en) | 2023-10-20 | 2024-06-18 | Crawford Group, Inc. | Systems and methods for intelligently transforming data to generate improved output data using a probabilistic multi-application network |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5640505A (en) * | 1994-09-07 | 1997-06-17 | British Telecommunications Public Limited Company | Operational support structure for a telecommunications network |
US5819263A (en) * | 1996-07-19 | 1998-10-06 | American Express Financial Corporation | Financial planning system incorporating relationship and group management |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE31951E (en) | 1980-12-24 | 1985-07-16 | Npd Research, Inc. | Market survey data collection method |
US4603232A (en) | 1984-09-24 | 1986-07-29 | Npd Research, Inc. | Rapid market survey collection and dissemination method |
EP0265232A3 (en) | 1986-10-20 | 1990-02-14 | Book Data Limited | Furnishing the identification of customers |
JP2760787B2 (en) | 1987-08-28 | 1998-06-04 | 株式会社日立製作所 | Operation control device for electronic computer system |
US5280615A (en) | 1990-03-23 | 1994-01-18 | Unisys Corporation | Out of order job processing method and apparatus |
CA2036205C (en) * | 1990-06-01 | 1996-11-19 | Russell J. Welsh | Program monitoring unit |
US5557658A (en) | 1991-06-20 | 1996-09-17 | Quantum Systems, Inc. | Communications marketing system |
US5446885A (en) * | 1992-05-15 | 1995-08-29 | International Business Machines Corporation | Event driven management information system with rule-based applications structure stored in a relational database |
US5999908A (en) * | 1992-08-06 | 1999-12-07 | Abelow; Daniel H. | Customer-based product design module |
GB9222884D0 (en) * | 1992-10-30 | 1992-12-16 | Massachusetts Inst Technology | System for administration of privatization in newly democratic nations |
US5557688A (en) | 1992-11-18 | 1996-09-17 | Fuji Photo Film Co., Ltd. | Method of extracting characteristic image data and color data conversion device for image processing apparatus |
WO1994029804A1 (en) * | 1993-06-16 | 1994-12-22 | Electronic Data Systems Corporation | Process management system |
US5734837A (en) * | 1994-01-14 | 1998-03-31 | Action Technologies, Inc. | Method and apparatus for building business process applications in terms of its workflows |
US5812882A (en) | 1994-10-18 | 1998-09-22 | Lanier Worldwide, Inc. | Digital dictation system having a central station that includes component cards for interfacing to dictation stations and transcription stations and for processing and storing digitized dictation segments |
US5628004A (en) | 1994-11-04 | 1997-05-06 | Optima Direct, Inc. | System for managing database of communication of recipients |
US5904727A (en) | 1995-05-17 | 1999-05-18 | Mobile Information Systems, Inc. | Graphical fleet management methods |
CA2234026A1 (en) * | 1995-10-17 | 1997-04-24 | Citibank, N.A. | Sales process support system and method |
US5737726A (en) | 1995-12-12 | 1998-04-07 | Anderson Consulting Llp | Customer contact mangement system |
US6029174A (en) * | 1998-10-31 | 2000-02-22 | M/A/R/C Inc. | Apparatus and system for an adaptive data management architecture |
US6185555B1 (en) * | 1998-10-31 | 2001-02-06 | M/A/R/C Inc. | Method and apparatus for data management using an event transition network |
-
1998
- 1998-10-31 US US09/183,910 patent/US6185555B1/en not_active Expired - Fee Related
-
1999
- 1999-06-01 EP EP99926103A patent/EP1131767A4/en not_active Withdrawn
- 1999-06-01 AU AU42261/99A patent/AU4226199A/en not_active Abandoned
- 1999-06-01 CA CA002348887A patent/CA2348887A1/en not_active Abandoned
- 1999-06-01 WO PCT/US1999/012115 patent/WO2000026844A1/en not_active Application Discontinuation
-
2000
- 2000-10-03 US US09/678,747 patent/US6363388B1/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5640505A (en) * | 1994-09-07 | 1997-06-17 | British Telecommunications Public Limited Company | Operational support structure for a telecommunications network |
US5819263A (en) * | 1996-07-19 | 1998-10-06 | American Express Financial Corporation | Financial planning system incorporating relationship and group management |
Non-Patent Citations (1)
Title |
---|
See also references of EP1131767A4 * |
Also Published As
Publication number | Publication date |
---|---|
US6185555B1 (en) | 2001-02-06 |
EP1131767A4 (en) | 2005-09-14 |
EP1131767A1 (en) | 2001-09-12 |
US6363388B1 (en) | 2002-03-26 |
CA2348887A1 (en) | 2000-05-11 |
AU4226199A (en) | 2000-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6185555B1 (en) | Method and apparatus for data management using an event transition network | |
US6029174A (en) | Apparatus and system for an adaptive data management architecture | |
US10846277B1 (en) | Journaled tables in database systems | |
AU2003231931B2 (en) | System and method for integrating, managing and coordinating customer activities | |
US6738975B1 (en) | Extensible distributed enterprise application integration system | |
Sumbaly et al. | The big data ecosystem at linkedin | |
US8095618B2 (en) | In-memory caching of shared customizable multi-tenant data | |
US7930215B2 (en) | Contextual computing system | |
US9466063B2 (en) | Cluster processing of an aggregated dataset | |
US8555018B1 (en) | Techniques for storing data | |
US7257596B1 (en) | Subscription membership marketing application for the internet | |
US20050166187A1 (en) | Efficient and scalable event partitioning in business integration applications using multiple delivery queues | |
US20080288522A1 (en) | Creating and storing a data field alteration datum using an analytic platform | |
MXPA00007085A (en) | Extensible distributed enterprise application integration system. | |
EP1519289A1 (en) | Method for maintaining information about multiple instances of an activity | |
US20010027467A1 (en) | Massively distributed database system and associated method | |
US6957234B1 (en) | System and method for retrieving data from a database using a data management system | |
Leiter et al. | Beginning Microsoft SQL server 2008 administration | |
Knight et al. | Professional Microsoft SQL Server 2008 Administration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GE GH GM HR HU ID IL IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG UZ VN YU ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): GH GM KE LS MW SD SL SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
ENP | Entry into the national phase |
Ref document number: 2348887 Country of ref document: CA Ref country code: CA Ref document number: 2348887 Kind code of ref document: A Format of ref document f/p: F |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1999926103 Country of ref document: EP |
|
REG | Reference to national code |
Ref country code: DE Ref legal event code: 8642 |
|
WWP | Wipo information: published in national office |
Ref document number: 1999926103 Country of ref document: EP |
|
WWW | Wipo information: withdrawn in national office |
Ref document number: 1999926103 Country of ref document: EP |