`
`
`
`
`PCT/US01/42041
`
`
`
`
`
`
`
`
`
`
`
`
`
`context, owners of a process can be product managers, purchase agents, account
`
`
`
`
`
`
`
`
`
`
`
`
`managers, customer service representatives, etc. An individual also may act as a
`
`
`
`
`
`
`
`
`
`
`
`Participant (also termed a Member or Recipient). Members interact with one or more
`
`
`
`
`
`
`
`
`
`
`
`specific tasks in a process, such as interviewing candidates, bidding on proposals,
`
`
`
`
`
`
`
`
`
`
`
`
`
`participating in meetings, etc. The owner of a process can assign specific roles to the
`
`
`
`
`
`
`
`
`
`
`
`
`participants. Owners may be participants also.
`
`
`
`
`
`
`
`
`
`
`
`
`Tn one embodiment, with respect to groups, an Owner can add or remove
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`members from the group; carry out moderator options; exercise authorrights overall
`
`
`
`
`
`
`
`
`
`
`
`group messages; delete group messages; and exercise all Member privileges. A group
`Member, in contrast, can send or receive group messages; invite others to join public
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`groups; unsubscribe from the group; and create a sub-group.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Notifications, in one approach, are alert messages that are sent to users when a
`
`
`
`
`
`
`
`
`
`
`
`
`predefined activity has occurred in a process. For example, notifications may be issued as
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`a result of the following activities: Response to a building block by a user; change in
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`process or task status; change in process or task due dates; more than 50% ofpeople have
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`polied; more than 60% of users have confirmed for the meeting; and others. Reminders
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`are prompts sent to users. Examples of reminders include: Inform a user that a due date is
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`fast approaching; inform all users about an important process development; etc, Both
`notifications and reminders generally are sent outside the context of a transportable
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`application, for example, by a separate e-mail message directed to the recipient. In
`
`
`
`
`
`
`
`
`
`
`
`contrast, notes, as described herein, are text messages that are selectively embedded
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`within a transportable application to draw something to the attention of the recipient when
`
`
`
`
`
`
`the recipient opens the transportable application.
`
`
`
`
`
`
`
`
`
`
`
`Notifications may be pull or opt-in notifications, or push notifications. With pull
`
`
`
`
`
`
`
`
`
`
`
`
`notifications, a user defines (or sets rules) when to receive notifications and reminders.
`
`
`
`
`
`
`
`
`
`
`
`The system automatically sends a notification if the specified definition is satisfied. With
`
`
`
`
`
`
`
`
`
`
`
`
`push notifications, an owner sends notifications and reminders to users regardless of
`
`
`
`
`
`
`
`
`
`
`
`
`
`whether the user has requested for the same. Here the owner overrides the notification
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`preference of the recipient.
`
`
`
`
`
`
`
`
`
`In one embodiment, notification processes are configured so that a participant
`
`
`
`
`
`
`
`
`
`
`
`
`receives notifications on any updates immediately. In this approach, users have the option
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`to opt-in to receive any updates. The userreceives a single notification on any updates
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`since the last read. In one specific approach, taking any of the following actions on a
`
`
`
`
`
`
`
`
`
`
`
`
`process or task triggers delivery of a notification: Adding new tasks; response to building
`
`
`
`
`
`
`
`-§5-
`
`Page 451 of 894
`
`GOOGLE EXHIBIT 1010 (part 3 of 4)
`
`Page 451 of 894
`
`GOOGLE EXHIBIT 1010 (part 3 of 4)
`
`
`
`WO 02/21413
`
`
`
`
`PCT/US01/42041
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`block; closing of tasks; closing ofprocesses; change in process status or due date; change
`
`
`
`
`
`
`
`
`in task status or due date.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`In one sub-approach, only the tasks for which a useris in the recipientlist trigger
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`notification updates. If a different task changes, for which a user is not in the recipient
`
`
`
`
`
`
`list, the useris not notified.
`
`
`
`
`
`
`
`
`
`
`
`
`In another embodiment, notification processes are configured so that a participant
`
`
`
`
`
`
`
`
`
`
`
`
`receives notifications on any updates to specific tasks immediately. Users can receive
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`notifications on any updates to a single task or group of tasks. A list of active tasks is
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`provided to the user from which the user can select tasks on which to be notified.
`
`
`
`
`
`
`
`
`
`The notification processes also may be configured to send a process-level
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`reminder to all recipients. Specifically, the owner of the process can configure a
`transportable application to send ad-hoc reminders everyone in a recipient list whenever
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`an important process event occurs. For example, assume that Michael is interviewing at
`
`
`
`
`
`
`
`
`
`
`
`Alpha Companyand an interview process transportable application is currently used for
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`scheduling interviews. A manager at Alpha receives information during the interview
`process that Michael has a competing offer and needs to decide whetherto acceptit
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`within the next week. The manager, whois an owner of the transportable application, can
`immediately notify all the participants that they should schedule interviews for Michael
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`and decide on the candidate. In a related approach, the notification processes are
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`configured to send process-level reminders to selected recipients in the recipientlist.
`
`
`
`
`
`
`
`
`
`
`
`
`In another embodiment, the system is configured to send a task level reminder to
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`all recipients in a recipient list. The owner of the task can send ad-hoc reminders to
`
`
`
`
`
`
`
`
`
`
`
`
`everyone in a recipient list whenever an important task event occurs. For example,
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`assume that an offer letter to candidate John Q. Public is under discussion in the “Offer
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`task” of a transportable application. The salary to be offered to the candidate is still under
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`discussion among the managers. However, the Director of Sales needs to provide the
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`sales headcount to the VP of Marketing & Sales next week and as such needsto finalize
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`the offers quickly. She sends a notification to the participants m the “offer task” to come
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`to a consensus quickly on the offer and go further with the hiring. In a related feature, a
`
`
`
`
`
`
`
`
`
`
`
`
`
`participant can send a task level reminderto select recipients among the recipients of the
`
`
`transportable application.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Another feature provides scheduled process update notification. A user can
`
`
`
`
`
`
`
`
`
`
`
`schedule to receive process update notifications periodically or on a specified date and
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`time. Periodic update options for the user to select are daily (options within a day), and
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`weekly (options within a week). For example, assume that Bobis the Director of Business
`
`
`
`-86-
`
`Page 452 of 894
`
`Page 452 of 894
`
`
`
`WO 02/21413
`
`
`
`
`PCT/US01/42041
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Development at Alpha Company and his team is working on new business deals with a
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`lot of startups. Bob would prioritize on his updates based on the importanceofthe deal.
`
`
`
`
`
`
`
`
`
`
`
`
`
`So he schedules some deals for weekly updates while others for daily updates.
`
`
`
`
`
`
`
`
`
`
`
`In another embodiment, the system is configured to send scheduled process “due
`
`
`
`
`
`
`
`
`
`
`
`
`
`date” reminders to all users in a recipient list of a transportable application. In this
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`feature, the owner of a process can schedule specific "due-date” reminders to be sent to
`everyone either at the processorat the task level. The owner can send the reminder either
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`on a particular date or a specified period before the due date (¢.g., two days before, two
`
`
`
`
`
`
`
`
`
`
`
`
`weeks before, etc). For example, assume that a product management team has defined
`
`
`
`
`
`
`
`
`
`
`
`
`new features for a particular product release and requires approval from other functional
`
`
`
`
`
`
`
`
`
`
`
`
`
`areas (such as Engineering, Sales, Business Development etc.). The features need to be
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`frozen by a certain date so that development on the product can commence. The project
`
`
`
`
`
`
`
`
`
`
`
`
`
`lead schedules a "due-date" reminder to be sent to everyone a week before the deadline to
`
`
`
`
`
`
`
`
`
`
`ensure that the activities are completed by the due date.
`In other features and embodiments, a participant or user can "opt-in" to receive
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`summary of notification changes; "opt-in" to receive selected notifications immediately;
`
`
`
`
`
`
`
`
`
`
`
`
`send a scheduled task ““due date” reminder to everyone in a recipient list; send a
`
`
`
`
`
`
`
`
`
`
`
`
`
`scheduled task “due date” reminder to select recipients in a recipient list; and "opt-in" for
`
`
`
`
`
`
`a scheduled process due date reminder.
`
`
`
`
`
`
`
`
`
`In one implementation approach for the foregoing features, the event-based
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`messaging system described herein is configured to enable building blocks and associated
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`notification event handlers to communicate. One or more events may issue as a result of
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`another event. Responses to events are carried out by a notification event handler that is
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`associated with each kind of response event. Response-based notifications are generated
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`by each such handler. Each notification is an event, and the each notification event
`
`
`
`
`
`
`
`
`
`
`
`
`handler comprises logic that determines which users need to receive notifications and
`
`
`
`
`
`
`
`
`
`
`
`
`when.In an embodiment, each event handler uses a notification API to generate a list of
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`users to notify, and the event handler then sendsthelist to an event daemon that
`
`
`
`
`
`
`
`
`
`dispatches the notifications. As a result, an event-based messaging system facilitates
`
`
`
`
`
`
`
`
`
`
`
`
`generating rule-based notifications in response to any change in any attribute of a
`
`
`transportable application.
`
`
`
`
`
`
`
`
`
`In one implementation of response-basednotifications, as outlined above, each
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`user may “opt in” to receive notifications at a task level and at a process level. Hence,
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`each user can subscribe to changes in particular tasks or to any change in the process,
`
`
`
`
`
`
`
`
`
`
`Further, each user can associate a notification frequency value with each subscription,
`
`
`
`
`
`
`
`-87-
`
`Page 453 of 894
`
`Page 453 of 894
`
`
`
`
`WO 02/21413
`
`
`
`PCT/US01/42041
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`FIG. 7 is a flow diagram of one embodiment of a process of carrying out
`
`
`
`
`
`
`
`
`
`
`
`
`response-based notifications. In block 702, a response is issued to a building block of a
`
`
`
`
`
`
`
`
`
`
`transportable application. For example, a first participant in a group collaboration or other
`
`
`
`
`
`
`
`
`
`
`
`
`
`activity enters text, graphics, a button selection or some other value in response to a query
`
`
`
`
`provided in a building block.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`In block 704, in response, a database query is issued to obtain a list of users who
`
`
`
`
`
`
`
`
`
`
`
`
`
`have requested notifications for the current building block. A notification time value is
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`obtained for each userin thelist; the notification time value indicates whento notify each
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`individual on thelist. In block 706, the list is passed to the parent object of the current
`
`
`
`
`
`
`
`
`
`
`
`
`
`building block, which may be another building block or a container obj ect, with a request
`
`
`
`
`to carry out notifications.
`
`
`
`
`
`
`
`
`
`
`
`
`In block 708, a list of recipients associated with the parent building block or
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`container object is retrieved and comparedto the list of users who qualified for
`
`
`
`
`
`
`
`
`
`
`
`
`
`notifications at the child building block level. Only those users who qualified for
`
`
`
`
`
`
`
`
`
`
`
`
`
`notifications at the child building block level are then considered. For each user who
`
`
`
`
`
`
`
`
`
`
`
`
`qualified, if that user has a notification time value that indicates a delayed notification is
`
`
`
`
`
`
`
`
`
`
`
`
`
`necessary, then no action is taken since the child’s notification time overrides any
`
`
`
`
`
`
`
`
`
`notification time that may be associated with the parent.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`In block 710, for each user in the child notificationlist that qualifies for an
`
`
`
`
`
`
`
`
`
`
`
`
`
`immediate notification, then a database query is carried out to determine that the user is
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`active in the system and does not havea notification already pending. This is done to
`
`
`
`
`
`
`
`
`
`
`
`
`
`avoid duplicate notifications. If these tests result in a determinationthat the user is
`
`
`
`
`
`
`
`
`
`
`entitled to a notification, then control is passed to block 712.
`
`
`
`
`
`
`
`
`
`
`
`
`
`In block 712, a status value for the user associated with the parent building block
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`or container is changed to Updated, and a current time value is stored in a notification
`
`
`
`
`
`time value in the database.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`In block 714, users in the recipient list of the parent block or container who did
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`not qualify for child level notifications are considered. The status value for each such user
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`is changed to Updated, and a current time value is stored in a notification time value in
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`the database. In block 716, the notification message is dispatched to all qualifying users in
`
`
`
`
`
`
`the parent and child notification lists.
`
`
`
`
`
`
`1.5.2 Notifications Based on Rules and Attributes
`
`
`
`
`
`
`
`
`
`
`
`In a related approach that is integrated with an event management system, each
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`building block can publish attributes aboutitself to the rest of the systern, and publishes
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`event that alert the system when such attributes change. Further, users may create and
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`-88-
`
`Page 454 of 894
`
`Page 454 of 894
`
`
`
`WO 02/21413
`
`
`
`
`PCT/US01/42041
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`store rules based on these attributes that cause such users to receive a notification when
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`the rules are satisfied. In addition, users may be notified at a particular timeifarule is
`
`
`
`
`
`
`
`
`
`
`
`
`satisfied. For example, a user can be notified if a project status reaches “complete”, and
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`the user can also be notified if the project status is not “complete” one month after the
`
`
`project began.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`In one implementation approach, database 208 comprises a rules table having the
`
`
`
`
`
`
`
`
`
`
`
`following columns: Rule ID; Block ID; User ID; Attribute; Threshold value; Comparator;
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Time flag indicating whetherthe rule is time-based; Event ID if the rule is time-based;
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Action type. In one embodiment, the Rule ID field does not store a unique key value,
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`because the same Rule ID can encompass several rules that are evaluated simultaneously.
`
`
`
`
`
`
`
`
`
`
`
`
`Database 208 further comprises an alert log table having the following columns:
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Block ID; User ID; Note; Read bit. An Alert Waiting bit is provided in a userstatus table.
`
`
`
`
`
`
`
`
`
`
`
`
`Each block is associated with a presentAttributes method that returns one or more
`
`
`
`
`
`
`
`
`
`
`
`attributes, types, comparators (if applicable), and description values for each attribute. An
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`interface is accessible from each transportable application with which a user can build the
`
`rules and set threshold values and comparators. Each rule may be characterized in terms
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`of Boolean values, number comparisons (equals, less than, greater than), string equals
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`comparisons, etc. Using the interface, a user may edit the rules that have beencreated,
`
`
`
`
`
`
`
`
`
`and attach a time value and recurrence period to a rule.
`
`
`
`
`
`
`
`
`
`
`
`In response to a user creating a rule using the interface, a servlet of application
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`server 202 enters the rule into the database 208, and attaches a rules event to the building
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`block in which the rule was created. The rules event subscribes to attribute changes in the
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`building block. The servlet also deletes any old rules in the database for the same building
`
`
`
`
`block.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Thereafter, when an attribute changes in the block,the rules event is invoked.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Processing the rules event involvesfirst retrieving all rules for that block from the
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`database 208, evaluating the rules as designed to result in creating and storing a list of
`
`
`
`
`
`
`
`
`
`
`
`rule identifiers that evaluated to TRUE, and generating a rules-passed event that includes
`the list.
`.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Actions can subscribe to the rules-passed event. Each such action has an
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`associated rule ID value. If a rule matching the associated rule ID valueis fulfilled, then
`
`
`
`
`the action is executed.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`An Alert Notification event object is provided and has a handler process that
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`determines if its rule has passed. If so, the handler sends a notification to the user if
`
`
`
`
`
`
`
`
`needed, and records the notification in a notification log.
`
`
`
`-89.
`
`Page 455 of 894
`
`Page 455 of 894
`
`
`
`WO 02/21413
`
`
`
`
`PCT/US01/42041
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`In one approach for displaying notifications, when a user opens and reads a
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`transportable application, a flag message is displayed that informs the user that a new
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`notification exists. The flag message may be a hyperlink. The user selects the flag
`
`
`
`
`
`
`
`
`
`
`
`
`message. In response, the system displays the notification in a pop-up dialog with which
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`the user may scroll through one or more notifications. Each alert then is marked as read.
`
`
`
`
`Object Communications—-Programmatic Methods
`
`
`
`
`
`
`
`
`
`
`
`In one embodiment, system 200 uses two distinct types of internal communication
`
`1.6
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`mechanisms, Non-event driven sharing of data is carried about in Building Block and
`
`
`
`
`
`
`
`
`Container interactions and Container-to-Container communications. Event-driven
`
`
`
`
`
`
`
`
`
`
`
`
`
`publish-subscribe exchanges are carried out between disparate objects within the system.
`
`
`
`
`
`
`
`
`
`
`
`
`
`Non-event-driven data sharing is used in cases in which communications require
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`detailed knowledge of the hierarchy of objects or the need to transfer essentially the entire
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`data of such objects. In order to ensure the successful delivery of these communications,
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`a unique identification system is provided forall objects that will communicate within the
`
`
`
`
`
`
`
`
`
`
`
`
`
`system. In one embodiment, each object in the system has a unique global identifier, as
`
`
`
`
`
`
`
`
`
`
`described further in this document in the section entitled “Directory Integration—Global
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Object Identifiers.” Using global identifiers and associated mapping tables, container
`
`
`
`
`
`
`
`
`
`objects for contained objects can be determined.
`
`
`
`
`
`
`
`
`
`
`In an alternative embodiment, a global object identifier is associated only with
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`container objects. The relative position of a contained object within the container object
`is used as a unique identifier of the contained object. As a result, each contained objectis
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`accessed only through its immediate Container. For example, a poll Building Block
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`within a task in a Process Container would have the id: <Process Container ID>_<task
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`index>_<poll BB index>, or alternatively, <Task Container ID>_<poll BB index>,if the
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Process Container was not needed in order to deliver the message. A benefit of this
`mechanism is that there could be ACLs applied on a particular Container that may affect
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`access to a contained object.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`In one embodiment, a data-sharing communication mechanism is used in orderto
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`aggregate data from multiple Building Blocks in order to form a composite view. For
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`example, in the case of a Poll Discussion, the Data Access Componentfor the poll
`
`
`
`
`
`
`
`
`
`
`
`
`building block and the discussion building block are joined by a composite Building
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Block in aparticular way in order to show both the poll and discussion data together. In
`
`
`
`
`
`
`
`
`
`
`
`
`order to join such a composite view, the Container collects multiple Data Access
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Components from the blocks and delivers them to the Composite Building Blocks.
`
`
`
`-90-
`
`Page 456 of 894
`
`Page 456 of 894
`
`
`
`WO 02/21413
`
`
`
`
`PCT/US01/42041
`
`
`
`In one specific embodiment, containers or other objects in the platform implement
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`a DataSharingInterface in order to achieve communication. The interface is defined as:
`
`
`
`public interface DataSharingInterface {
`
`
`
`
`
`DAC
`
`
`
`
`target, UniqueID requester, UserID user);
`
`public
`
`getDataAccessComponent (RelativeID
`
`
`
`
`
`}
`
`
`
`
`
`
`
`
`
`
`The Data Gathering Service Manager implements a DataGatheringInterface in
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`order to extract the DACsofthe objects that a component may want to access. This
`
`
`
`
`interface is defined as:
`
`
`
`
`
`
`
`
`
`
`
`
`private interface DataGatheringInterface {
`
`
`
`
`
`requester, UserID user, UniqueID[]
`
`
`public
`
`Vector
`
`gatherDataAccessComponents (UniqueID
`
`
`
`frombist);
`
`
`
`}
`
`
`
`
`
`
`
`
`
`
`
`Tn one example embodiment, the Data Gathering Service Manager loops through
`
`
`
`
`
`
`
`
`
`
`
`
`
`each element in the fromList, determines the Container, sends the containerto a
`
`
`
`
`
`
`
`
`DataSharingInterface and calls the getDataAccessComponent method with the RelativeID
`
`
`
`
`
`
`
`
`
`
`of the specified Blocks. The Container implementing the DataSharingInterface gathers
`
`
`
`
`
`
`
`
`
`
`
`
`the appropriate DAC from the specified Block. This process allows Building Blocks
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`across Containers to share data, and also allows the sharing object to limit the amount of
`
`
`
`
`
`
`
`
`
`data that should be sent out to the requester.
`1.7
`Object Communications—Event-Driven Methods (Event Handling
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`System)
`
`
`
`
`
`
`
`
`
`
`
`In one embodiment, the system described herein provides an event handling
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`service as represented by event processor 112 of FIG. 1B, and event daemons 216 of
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`event service 146 of FIG. 2B. In this embodiment, one or more event daemons 216 are
`
`
`
`
`
`
`
`
`
`
`
`communicatively coupled to event service 146, The event service 146 is communicatively
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`coupled by link 218 to database server 208. The event daemonsserve to offload certain
`
`
`
`
`
`
`
`
`
`
`
`
`separable functions from the application server 202. For example, m an embodiment,
`
`
`
`
`
`
`
`
`
`
`
`event daemons are responsible for mail event queuing and handling, bounced-mail
`
`
`
`
`
`
`
`
`
`handling, and generating personalized transportable application content, based on a user’s
`
`
`
`e-mail client profile.
`
`
`
`
`
`
`
`
`
`-91-
`
`Page 457 of 894
`
`Page 457 of 894
`
`
`
`
`WO 02/21413
`
`
`
`PCT/US01/42041
`
`
`
`
`
`
`
`
`
`
`
`
`Alternatively, a generic event handling system is provided to enable different
`
`
`
`
`
`
`
`
`
`
`
`
`components of the system to communicate. In one embodiment, an event handling system
`
`
`
`
`
`
`
`
`
`
`
`
`enables the system to act when a specific event occurs within a transportable application,
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`. act when a specific event does not happen, and facilitates authoring rules to carry out the
`
`
`
`
`
`
`
`
`foregoing. Actions may include generating notifications, generating reminders,
`
`
`
`
`
`
`
`
`forwarding a transportable application, other automated actions, delivering a message to
`
`
`
`
`
`
`
`
`
`
`
`
`
`subscribers, etc. In one embodiment, actions may comprise anything that can be carried
`
`
`
`
`
`
`
`
`
`
`
`out programmatically. The event handling system may comprise an object framework,
`
`
`
`
`
`message format and implementation classes.
`
`
`
`
`
`
`
`
`
`
`
`
`FIG. 17 is a block diagramillustrating elements of an event handling system, in
`
`
`
`
`
`
`
`
`
`
`
`
`one example embodiment. Event handling system 1700 is hosted in application server
`
`
`
`
`
`
`
`
`
`
`
`
`
`202 and comprises an event router framework 1702, event broker framework 1704, and
`
`
`
`
`
`
`
`
`
`
`
`event timer framework 1706. Event router framework 1702 performs message routing,
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`selects a transport mechanisms for messages that are sent, and serves as an entry point for
`
`
`
`
`
`
`
`
`
`
`
`
`
`other components of the system that need to use events. Examples of transport
`
`
`
`
`
`
`
`
`
`
`
`mechanisms include JMS, HTTPposts, etc. Event broker framework 1704 performs rule
`
`
`
`
`
`
`
`
`
`
`
`
`
`evaluation that involvesthe filtering of event messages and invoking action classes, and
`
`
`
`
`
`
`
`
`
`
`
`
`
`can store event messages in a table of database 208. Event timer framework 1706 enables
`
`
`
`
`
`
`
`
`
`
`creating event messages at a specified time, for processing time-based rules.
`
`
`
`
`
`
`
`
`
`
`Events are programmatically represented by event messages. In general, event
`
`
`
`
`
`
`
`
`
`
`
`
`
`messages contain information about what occurred and the state of objects that relate to
`
`
`
`
`
`
`
`
`
`
`
`
`the event. Standard events include creating, updating, deleting, and changing the state or
`
`
`
`
`
`
`
`
`
`
`
`
`
`status value of a transportable application. For example, an update event for the poll
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`building block may contain the building block identifier, the user name of the person who
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`added a response, the response value, the time and date of the response, the total number
`ofresponses, and the total number of recipients. However, each building block may
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`generate any desired events having any desired data or content. Events maybe time-
`
`
`
`
`
`
`
`
`
`
`
`
`based. For example, events are generated or created by invoking particular methods when
`
`
`
`
`
`
`
`the prescribed time for an event arrives.
`
`
`
`
`
`
`
`
`
`
`Each building block has a method which, when called by another program
`
`
`
`
`
`
`
`
`
`
`
`
`
`element, returns a list of events that it can generate. This enables other program elements
`
`
`
`
`
`
`to identify and subscribe to events.
`
`
`
`
`
`
`
`
`
`
`In one specific embodiment, each event message comprises a header and a body.
`
`
`
`
`
`
`
`
`
`
`
`
`The header comprises metadata, and the body comprises information that identifies the
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`container and building block that generated the event, the nameof the event, etc. In one
`
`
`
`-92-
`
`Page 458 of 894
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Page 458 of 894
`
`
`
`
`WO 02/21413
`
`
`
`PCT/US01/42041
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`specific embodiment, the header comprises a fromDestination value that identifies the
`
`
`
`
`
`
`
`
`
`
`originating system; a toDestination value that identifies a destination system for the
`
`
`
`
`
`
`
`
`
`
`
`
`
`message; a message type value; a timestamp value that identifies a date and time at which
`
`
`
`
`
`
`
`
`
`
`
`
`the event occurred; a message action value; and a tracking identifier value. The body
`
`
`
`
`
`
`
`
`
`
`
`encapsulates another header (“inner header’’) and inner body or payload that contains
`event-specific data. Events and their data may be defined by an XML schema.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`The message type value enables an event message to specify whetherit is a
`
`
`
`
`
`
`
`
`
`
`system event, application event, etc. Examples of system events including replication
`
`
`
`
`
`
`
`
`
`
`events, system administration events, initialization events, etc. Application events may be
`
`
`
`
`
`
`
`
`
`
`
`events generated by transportable applications, connectors, groups, etc. Each event type
`
`
`
`
`
`
`
`
`
`
`
`
`
`has a corresponding schema that defines the elements of the inner header and payload for
`
`
`
`that event type.
`
`
`
`
`
`
`
`
`
`
`
`Event messages may be persistent. Persistent event messages are stored in an
`
`
`
`
`
`
`
`
`
`
`
`
`
`event table in the database 208. Events can be made persistent by programmatically
`
`
`
`
`
`
`
`
`
`
`
`
`setting a “Persist” flag in the event message header. Alternatively, the event type
`
`
`
`
`
`
`
`
`
`
`
`
`definition may specify that all event messages of that type are persistent.
`
`
`
`
`
`
`
`
`
`
`
`In one embodiment, containers generate events that are published to the event
`
`
`
`
`
`
`
`
`
`
`
`handling system. The event handling system applies rules to determine whether received
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`events should result in an action. If the rules are satisfied by the events or other data, then
`
`
`actions result.
`
`
`
`
`
`
`
`
`
`
`
`
`Rules may be associated with building blocks or containers. Rules may be saved
`
`
`
`
`
`
`
`in association with a template of a transportable application.
`
`
`
`
`
`
`
`
`
`
`
`
`
`Rules may be subject to author control or participant control. In rules with author
`
`
`
`
`
`
`
`
`
`
`
`
`control, only users who are authors of a transportable application template can modify or
`
`
`
`
`
`
`
`
`
`
`
`
`deactivate the rules. In rules with participant control, any participant who receives a
`
`
`
`
`
`
`
`
`
`
`
`transportable application that is instantiated from a template having the rule can modify
`
`
`the rule.
`Rules may be designated as active or inactive. Active rules are visible within a
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`template of a transportable application and within an active transportable application.
`
`
`
`
`
`
`
`
`
`
`
`
`Each rule comprises an association with one event through a coarse-grain filter, a
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`fine-grain filter that has one or more conditions, zero or more constants, one or more
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`actions or handler. Rule constants can comprise a static string or may be defined as
`
`
`reusable expressions.
`
`
`
`
`
`
`
`
`
`
`
`Rule conditions may be created as coarse-grain filters or fine-grain filters. Coarse-
`
`
`
`
`
`
`
`
`
`
`
`
`
`grain filters determine whether a particular event message mapsto or is associated with a
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`-93-
`
`Page 459 of 894
`
`Page 459 of 894
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`pertinent set of rules for the event. Thus, coarse-grain filters car