throbber
WO 02121413
`
`
`
`
`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.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`In one embodiment, with respect to groups, an Owner can add or remove
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`members lirom the group; carry out moderator options; exercise author rights over all
`
`
`
`
`
`
`
`
`
`
`
`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
`
`
`
`
`
`
`
`
`
`
`
`
`
`polled; 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. Witli 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 user receives 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
`
`
`
`
`
`
`
`
`
`Page 451 of 894
`
`GOOGLE EXHIBIT 1010 (part 3 of 4)
`
`

`

`WO 02121413
`
`
`
`
`PCT/US01/42041
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`block; closing of tasks; closing of processes; change in process status or due date; change
`in task status or due date.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`In one sub—approach, only the tasks for which a user is in the recipient list trigger
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`notification updates. If a different task changes, for which a user is not in the recipient
`
`
`
`
`
`
`
`
`list, the user is 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 fitom 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 Company and 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 whether to accept it
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`within the next week. The manager, who is 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 recipient list.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`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 needs to finalize
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`the offers quickly. She sends a notification to the participants in 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 reminder to 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 Bob is the Director of Business
`
`
`
`-35-
`
`Page 452 of 894
`
`

`

`WO 02121413
`
`
`
`
`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 importance of the 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 process or at the task level. The owner can send the reminder either
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`on a particular date or a specified period before the due date (e.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 sends the list to an event daemon that
`
`
`
`
`
`
`
`
`
`dispatches the notifications. As 3. 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—based notifications, 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.
`
`
`
`
`
`
`
`
`
`-37-
`
`Page 453 of 894
`
`

`

`W0 02/21413
`
`
`
`
`PCT/USO1/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 user in the list; the notification time value indicates when to notify each
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`individual on the list. 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 object, 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 compared to 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 notification list 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 have a notification already pending. This is done to
`
`
`
`
`
`
`
`
`
`
`
`
`avoid duplicate notifications. If these tests result in a determination that 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 about itself to the rest of the system, and publishes
`
`
`
`
`
`
`
`
`
`
`
`
`
`event that alert the system when such attributes change. Further, users may create and
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`-83-
`
`Page 454 of 894
`
`

`

`WO 02121413
`
`
`
`
`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 time if a rule 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 D); User ID; Attribute; Threshold value; Comparator;
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Time flag indicating whether the 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 D); User ID; Note; Read bit. An Alert Waiting bit is provided in a user status 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 been created,
`
`
`
`
`
`
`
`
`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 ruleslevent involves first 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 ]D value. If a rule matching the associated rule ]D value is 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.
`
`
`
`-39-
`
`Page 455 of 894
`
`

`

`WO 02121413
`
`
`
`
`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
`
`1.6
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`In one embodiment, system 200 uses two distinct types of internal communication
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`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 obj ects 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 for all objects that will communicate within the
`
`
`
`
`
`
`
`
`
`
`
`
`
`system. In one embodiment, each object in the system has a unique global identifier, as
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`described fiirther 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 obj ect. As a result, each contained object is
`
`
`
`
`
`
`
`
`
`
`
`
`
`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 lD>_<task
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`index>_<poll BB index>, or alternatively, <Task Container lD>__<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 order to
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`aggregate data fiom multiple Building Blocks in order to form a composite view. For
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`example, in the case of a Poll Discussion, the Data Access Component for 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 fiom the blocks and delivers them to the Composite Building Blocks.
`
`
`
`Page 456 of 894
`
`

`

`WO 02121413
`
`
`
`
`PCT/US01/42041
`
`
`
`In one specific embodiment, containers or other objects in the platform implement
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`a Datasharinglnterface in order to achieve communication. The interface is defined as:
`
`
`
`
`
`
`public interface Datasharinglnterface {
`
`DAC‘
`
`
`
`
`target, Uni.queID requester, UserID user);
`
`public
`
`
`
`getDataAccessComponent(RelativeID
`
`
`
`
`
`
`
`
`
`
`
`}
`
`
`
`
`
`
`
`
`The Data Gathering Service Manager implements a DataGatheringInterface in
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`order to extract the DACS of the objects that a component may Want to access. This
`interface is defined as:
`
`
`
`
`
`
`
`
`
`
`
`
`
`private interface DataGatheringInterface {
`
`
`
`public
`
`
`
`Vector
`
`gatherDataAccessComponents (UniqueID
`
`
`
`fromList);
`
`
`
`
`
`
`
`requester, UserID user, UniqueID[]
`
`
`}
`
`
`
`
`
`
`
`
`
`
`
`In one example embodiment, the Data Gathering Service Manager loops through
`
`
`
`
`
`
`
`
`
`
`
`
`
`each element in the fromList, determines the Container, sends the container to a
`
`
`
`
`
`
`
`
`DataSharinglnterface and calls the getDataAccessComponent method with the Re1atiVe]D
`
`
`
`
`
`
`
`
`
`
`of the specified Blocks. The Container implementing the Datasharinglnterface 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
`
`
`System)
`
`
`
`
`
`Object Communications—Event—Driven Methods ‘(Event Handling
`
`
`
`
`
`
`
`
`
`
`
`
`
`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 daemons serve to offload certain
`
`
`
`
`
`
`
`
`
`
`
`separable functions firom the application server 202. For example, in an embodiment,
`
`
`
`
`
`
`
`
`
`
`
`event daemons are responsible for mail event queuing and handling, bounoed—mail
`
`
`
`
`
`
`
`
`
`handling, and generating personalized transportable application content, based on a user’s
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`e—mail client profile.
`
`
`
`Page 457 of 894
`
`

`

`W0 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 fiarnework,
`
`
`
`
`
`
`
`message format and implementation classes.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`FIG. 17 is a block diagram illustrating 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 fiarnework 1702, event broker framework 1704, and
`
`
`
`
`
`
`
`
`
`
`
`
`
`event timer fiamework 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 1MS, HTTP posts, etc. Event broker framework 1704 performs rule
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`evaluation that involves the 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.
`
`
`
`
`
`
`
`
`
`
`Bach 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 name of the event, etc. In one
`
`
`
`-92-
`
`Page 458 of 894
`
`

`

`W0 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 Whether it 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 maps to or is associated with a
`
`-93..
`
`Page 459 of 894
`
`

`

`WO 02121413
`
`
`
`
`PCT/USO]/

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket