Method and apparatus for controlling access to a product

A method for controlling access to a product includes receiving a request for a product, generating a license string for the product, and transmitting that license string to a user of the product. The license string is generated substantially at the time a request is received. A corresponding system is also described. In some embodiments the product functions for a trial period before requiring input of the license string. License strings may be generated that extend the trial period.

FIELD OF THE INVENTION
 The present invention relates to networked systems and, more particularly,
 to electronic distribution of products.
 BACKGROUND OF THE INVENTION
 The world wide network of computers commonly known as the "Internet" has
 grown rapidly over the last several years. Much of this growth has been
 driven by the increase in popularity of the World Wide Web ("WWW" or
 "Web"). The WWW is a collection of files written using HyperText Markup
 Language (HTML), commonly referred to as "Web pages." HTML files may be
 easily configured and created by users and accessed and displayed using
 specialized applications known as Web browsers, which allow a user to
 access and view HTML files using a graphical user interface.
 Partially as a result of this growth in popularity, many products can now
 be distributed to consumers with relative ease. Unfortunately, many users
 will not purchase a product without first trying the product. However, it
 is currently difficult to subsequently control access to a distributed
 product.
 SUMMARY OF THE INVENTION
 The present invention relates to systems and methods for controlling access
 to a product that has been distributed. In particular, the systems and
 methods described below allow a product to be distributed to a user for
 demonstration purposes without losing control of usage of the product. The
 systems and methods described below also allow multiple users access to a
 product for demonstration purposes while requiring only a single
 authorization to grant access to all users.
 In one aspect, the present invention relates to a method for controlling
 access to a product. A request is received for a product. A license string
 that controls access to the product is generated substantially at the time
 the request is received. The generated license string is transmitted to
 the requestor. The requestor may enter the license string into the product
 in order to gain access to it.
 In another aspect, the present invention relates to a system for
 controlling access to a product. The system includes an input unit which
 receives a request for a product. The system also includes a license
 string generator in electrical communication with the input unit. The
 license string generator produces a license string that controls access to
 the product. The license string is generated substantially at the time a
 request is received. The system also includes an output unit for
 transmitting the generated license string to the requestor.

DETAILED DESCRIPTION OF THE INVENTION
 Referring now to FIG. 1, and in brief overview, a system for providing a
 collaborative work environment via a network is shown. Client workstations
 12' are connected to one or more servers 14. The client workstations 12'
 may be connected in any physical arrangement such as a star, loop, ring,
 or bus. The network connecting client workstations 12' and the server 14
 may use any physical media, including wireless, provided that the physical
 media supports the HyperText Transfer Protocol (HTTP).
 The server 14 stores information relating to a project or a set of
 projects, referred to as a facility, in a database 20 which may be a flat
 database, relational database, multi-dimensional database, or
 object-oriented database. Each server 14 may store more than one database
 20, where each database 20 represents a different facility. For example,
 one server may host project facilities for separate research efforts
 within one organization or for separate research efforts by separate
 organizations. Each facility is viewed by a user as a directory of eRoom
 pages. Referring now to FIG. 2, a directory of eRooms 22 as stored in the
 server database 20 is shown. Each entry provides at least one link to an
 eRoom front page 26, which in turn may contain other eRoom pages 27,
 folders containing database objects 28 or files 29.
 Databases 20 may be stored by the server 14 on any convenient mass storage
 device. For example, FIG. 1 depicts an embodiment in which the server 14
 stores the database 20 on an associated hard disk drive 16. Alternatively,
 the server 14 may store the database in Random Access Memory (RAM) if the
 database 20 is capable of fitting within the physical memory space of the
 server 14. The server 14 responds to requests for portions of the database
 20 made by the client workstations 12' and transfers the requested data
 objects over the network to the requesting client workstation 12'.
 The server database 20 stores various tables which contain information
 about eRooms, members, access controls, and other data objects. For
 example, a members table may be provided which includes unique
 identification codes for each user, a table value indicating for which
 eRooms the user fulfills a coordinator role, a table value which indicates
 for which eRooms the member fulfills an observer role, and a value
 describing the last time the member record was modified. Similarly, an
 eRooms table may be provided which includes a globally unique handle
 identifying the eRoom and one or more room flags which indicate various
 room attributes, such as whether a coordinator can create an eRoom, or
 whether the eRoom is a temporary, or trial, eRoom. Objects may also be
 represented by a table which includes as fields identification codes for
 each data object, one or more flags which are used to distinguish various
 objects, one or more flags which are used to determine the behavior of
 objects (editability, searchability, and others), a field indicating the
 date the object was created, a field indicating who created the object, a
 field identifying the parent of the object, and a field identifying the
 date the object was last modified, among others.
 Referring also to FIG. 3, The client workstation 12' may be any machine
 that supports reception and transmission of data signals over an HTTP
 network. In general, a client workstation 12' is a personal computer
 executing a "browser" program to display an HTML page 40, on the screen 30
 of the client workstation 12'. The user interacts with pages displayed by
 the browser utilizing a "point-and-click" interface, i.e., the viewing
 user uses a mouse 32 to manipulate a cursor 42 that is also displayed on
 the screen 30 of the client workstation 12'. Once the cursor 42 is over a
 particular portion of the HTML page 40, the viewing user signals by
 "clicking" or "double clicking" a button 33 on the mouse 32.
 Alternatively, the viewing user may also signal by pressing a key on an
 associated keyboard 36, such as the "return" key. In other embodiments,
 the viewing user may not use a mouse 32 at all, but may instead use a
 touchpad, a trackball, a pressure-sensitive tablet and pen, or any other
 input mechanism for manipulating the cursor.
 The client workstation 12' uses a local database 20' to store data objects
 related to a project, while external files related to a project (such as a
 word processing document of a set of meeting minutes) are stored in the
 client workstation's 12' local file system. The client database 20' may be
 provided as a flat file database, relational database, multi-dimensional
 database, or object-oriented database. For example, a typical relational
 database that may be used to provide a client database 20' is Jet Database
 Engine, manufactured by Microsoft Corporation of Redmond, Wash. The
 database 20' stored on the client workstation 12' contains a relevant
 subset of the data objects stored by the server 14. That is, the database
 20' stored by the server 14 typically will contain more information about
 a particular project than the database 20' stored by the client
 workstation 12'.
 However, the database 20' stored on the client workstation 12' may contain
 tables which are not stored by the server database 20. For example, a
 client workstation 12 may store in its database an "unread" table which
 indicates which objects have been modified since the user of the client
 workstation 12' have last accessed those objects. An unread table may
 include a member identification field and a modification tag indicating
 the last modification date and time of an object. All records may be read
 from this table to identify to the client workstation 12' every item in a
 particular eRoom page which has not been read by the user, or a selective
 database query may be done to return only those objects belonging to a
 particular set of eRoom pages that have not been read by the user. If it
 is desired to provide this functionality, an additional entry in the
 unread table must be made to allow data objects to be distinguished based
 on some indication of affiliation.
 Certain important information, such as hierarchy and navigation
 information, related to the project database 20 is considered "skeleton"
 information. Skeleton information is a set of database records that
 contain basic properties needed to display Web pages representing the
 project and therefore client workstations 12' require frequent updates of
 this information. Accordingly, it is generally desirable to exclude large
 information from skeleton information associated with a project, such as
 notes relating to an ongoing discussion, to facilitate transmission of the
 skeleton information to client workstations 12'.
 The client workstation 12' uses project data received from the server 14 in
 combination with one or more template files to create and display to the
 user of the client workstation a private, secure collection of HTML pages
 that provide a virtual workroom for members of a team, whatever its size
 and wherever the members of the team are physically or corporately
 located, may be referred to throughout as an "eRoom", or an "eRoom page".
 An eRoom is a set of connected HTML pages displayed to a user that
 displays project-related files, data, and discussion lists. Members of a
 team may congregate, share work and files, discuss ideas, stay informed
 and otherwise collaborate on common projects using an eRoom.
 Client workstations 12' generally have local memory elements for storing
 data objects of files associated with a project that are downloaded from
 the server 14 as well as one or more eRoom templates. A client workstation
 12' may have an associated mass storage device such as a hard disk drive
 16' or a tape drive 18' for storing the set of eRoom templates, although
 if a client workstation 12' is provided with enough RAM to store the set
 of eRoom templates, then the mass storage devices need not be provided.
 FIG. 4 depicts an embodiment of an eRoom page 60 that a user might
 encounter while using a popular "browser" program, Internet Explorer,
 manufactured by Microsoft Corporation of Redmond, Wash. The eRoom page has
 five major elements: a page element 402; a navigation bar 404; a graphical
 identifier 406; an item box 408; and a shortcut list 410.
 The page element 402 may include subelements. In the embodiment depicted in
 FIG. 4, a discussion 420 is embedded within the page and there is a
 facility to allow a viewer to contribute to the discussion 422. The
 embedded discussion 420 and the contribution facility 422 may be
 implemented as ActiveX controls, a JAVA applet, or various other means.
 Further, the facility name is displayed 424, as is the name of the viewed
 page 426 and a description of the viewed page 428.
 The navigation bar 404 provides a number of controls for the viewer of the
 page. For example, in the page embodiment shown in FIG. 4, the navigation
 bar 404 provides eight commands; "find," 442 which performs a find for a
 specified object; "members," 444 which permits certain users to change the
 membership list and access levels associated with members; "create," 446
 which allows certain users to create new items and pages; "edit," 448
 which allows certain users to edit eRoom pages; "settings," 450 which
 permits settings for the display and management of eRooms to be changed; a
 question mark icon 452 which invokes a help system; a "next unread" icon
 454 which displays to the viewer an unread item or file; and an up-arrow
 icon 456 which displays the "parent" of the eRoom currently being viewed,
 that is, it displays an eRoom page one logical level "up" from the
 currently viewed eRoom page.
 The graphical element 406 is used to pictorially identify the viewed page.
 The graphical element 406 may be a corporate logo or other organizational
 identifier. The graphical element 406 may be static (as depicted in FIG.
 4) or it may be a dynamic identifier such as a JAVA script or ActiveX
 control.
 The item box 408 collects and displays items associated with the project
 represented by the page 402. In the embodiment shown in FIG. 4, the item
 box 408 contains a folder of items 482, a notes file 486, a spreadsheet
 file 488, and a word processing file 490, each of these being links to
 other eRoom pages or files. Other items which may be displayed in an item
 box 408 are version organizers, discussions, links, and vote/poll items
 which survey team membership on one or more issues. As will be discussed
 below in greater detail, a discussion item may be associated with any
 other item in an eRoom and a discussion item can be contained in an eRoom
 as a stand-alone item. In further embodiments, discussion items may be
 embedded within other items contained in the eRoom. Each discussion item
 may itself include at least one vote/poll item that allows discussion
 participants to decide issues related to the discussion. In some
 embodiments, the vote/poll item is presented to the user "in line" with a
 series of discussion group entries (see FIG. 10). A vote/poll item may
 also be included in an eRoom as a stand-alone item. The item box may also
 include a facility for creating new items 492. The item box 408 may also
 include icons which control how items are displayed in the item box 408.
 In the embodiment shown in FIG. 4, three icons are provided: an "icon
 display" icon 494 (currently selected) which causes items to be displayed
 as large icons with identifying text underneath; a "list display" icon 496
 which causes items to be displayed as small icons with identifying text to
 one side of the icon; and a "report display" icon which causes items to be
 displayed as a list. The displayed list may be alphabetized, ordered by
 size of item, ordered by creation date, ordered by modification data, or
 ordered by some other data field associated with each item.
 Items in the item box may include a graphical indication that it, or items
 contained within it, are unread. This may imply that the item has been
 newly created, or the item may have been modified since the viewing user
 last read it. In either event, the graphical indication signals the user
 that the item should be read. In FIG. 4, the "Brainstorms" folder 482 has
 an indication 484 that it is unread.
 eRoom pages also may include a shortcut bar 410. The shortcut bar is a list
 of shortcuts which provide the viewer with a convenient way to access
 other eRoom pages. For example, in the embodiment shown in FIG. 4, a
 shortcut to the directory of eRooms is provided, as well as shortcuts to
 the page currently viewed 414 and a shortcut 416 the folder 482 displayed
 in the item box 408. The folder shortcut 416 includes a graphical
 indication that there are unread items in the folder 417. The shortcut to
 the front page of the eRoom currently being viewed 414 also includes a
 graphical indication that unread items exists in the page 415. Shortcuts
 may be added to the shortcut bar by the viewing user. In order to read the
 unread items in the folder 482, the viewing user may use the shortcut 416
 to access the contents of the "Brainstorms" folder 482 and determine which
 items are unread or the user may simply click on the "next unread" icon
 454. The shortcut bar 410 may be provided as an ActiveX control or as a
 JAVA applet or other means.
 As noted above, users interact with eRooms by using Web browsers in a
 traditional manner. That is, users may traverse a hyperlink to access an
 eRoom, or users may directly enter a URL address into the browser.
 Regardless of the manner in which the URL address is accessed, the browser
 retrieves the HTML file in order to display it. However, if the URL
 address is an eRoom, the server of the file returns a file of control
 information, referred to as a "wrapper" file. The wrapper file is an HTML
 file which contains, among other information, an identification of the
 object to be displayed. The wrapper file delivers an object ID which is
 used by the client workstation 12' to look up the object in the local
 database 20 stored on the client workstation 12'. The local database 20
 includes information about the object, including which eRoom template to
 use and information regarding any "children" the object may have (for
 example, items contained in the item box).
 Generation, display, and management of eRooms is controlled by a "page
 builder" application residing on the client workstation 12'. The page
 builder application may be provided as specialized hardware or software
 operating on a general-purpose machine. In some embodiments, the page
 builder application may be provided as an Active X control or a COM
 object.
 Referring to FIG. 5, the first step that is taken by the page builder
 application is to retrieve the eRoom template indicated by the wrapper
 file (step 502). An eRoom template is an HTML file having additional
 eRoom-specific information embedded in it. The eRoom specific information
 is generally distinguished from HTML tags. For example, eRoom-specific
 information in an eRoom template may be surrounded by "&lt;&lt;" and
 "&gt;&gt;". Any symbol or set of symbols may be used to distinguish
 eRoom-specific information so long as eRoom-specific information is
 distinguishable from HTML tags.
 eRoom information in a template includes sections controlling the page
 itself, the controls on it, and the way the page's data is presented the
 page is created or edited.
 The Template section controls several miscellaneous items about the
 template itself, for example, the Template Section may include name
 information, information specifying which thumbnail appears when the page
 template is selected, a description of the identifying text that appears
 under the thumbnail, how children (i.e. dependent pages) of this type of
 page are counted, and whether the page should open automatically when
 created. In one embodiment, the Template section of a Folder may be
 configured in the following manner:

Begin_Template
 {
 category = container
 wizardname = "Folder"
 thumbnail = folder
 Icon = 0
 DYNAMIC
 {
 Suffix = "item"
 SuffixP1 = "items"
 OpenOnCreate = "no"
 Blurb = "A container for storing and organizing files, links and
 other pages."
 }
 }
 The template section above specifies the folder template's name ("Folder"),
 thumbnail, default icon, and identifying text (blurb). "OpenOnCreate"
 specifies that folders are not automatically opened when created, and
 "Suffix" and "SuffixPl" control the text that appears with the child count
 in the size column when a folder appears in an item box. DYNAMIC sections
 allow the template creator to add properties to a page that are not
 standard template properties. For example, in the example above, Suffix,
 SuffixPl, OpenOnCreate, and Blurb have been added to this template by the
 template creator. The following is an exemplary list of various template
 properties that may be used in embodiments of their invention:
 Template properties
 Category: specifies which set of icons is presented when a "Change Icon"
 command is attempted on items with this template. Valid choices are
 "container" (for folders and version organizers), "content" (for note
 pages) and "discussion" (for discussions). Discussion notes do have a
 category ("note"), but actually they never appear with icons.
 Wizardname: specifies the name of the template when it appears as a choice
 in the page wizard. "Folder" and "Note" are examples of these.
 Thumbnail: which thumbnail to display when this template is selected in the
 page creation facility. Thumbnails may be .bmp files stored in a
 predefined subdirectory which refers to them by name without the .bmp
 extension.
 Icon: the index number (within the icon set specified by "Category") of the
 default icon for items with this template.
 Suffix: the string to use after the child count in the size column when
 items with this template appear in the item box, e.g., "item" for folders,
 "note" for discussion, "version" for version organizers. This property
 must be placed within the braces of a "DYNAMIC{ }" subsection within the
 Template Section.
 SuffixPl: the plural version of the Suffix. e.g., "items", "notes",
 "versions".
 OpenOnCreate: whether or not to open new items of this type automatically
 when created. "No" for folders, generally "Yes" for everything else.
 Blurb: the identifying text that appears under the thumbnail when this
 template is selected in the page wizard.
 The Control section(s) appear for each eRoom discussion or item box on the
 page, setting various properties like the column headers of an item box,
 or the sort-direction of a discussion. In one embodiment, the Control
 section for the item box in a Folder may be configured in the following
 manner: