The present invention relates to managing subscriptions for packages of applications that implement a plurality of services.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Many business organizations use multi-functional peripherals (MFPs) to process documents. MFPs are devices that provide multiple functions to users, such as printing, scanning, copying and faxing. There now exists a multitude of applications that can be used with or by MFPs. As used herein, the term “application” refers to a computer software program that implements one or more services. While there exists an almost unlimited number of different types of applications, one example application is a PDF-to-text program that converts electronic documents in PDF to text format. MFPs access applications via one or more networks, such as the Internet and some application providers charge for the use of their applications.
An approach is provided for creating and managing pricing models and subscriptions for packages. As used herein, the term “package” refers to a logical entity that has one or more member applications, where each of the member applications provides one or more services. One or more pricing models may be assigned to a package and made available to subscribers and the pricing models assigned to a package may be changed. Users may subscribe to one or more packages and incur charges based upon the pricing models assigned to the packages to which the users subscribe. Embodiments include providing a graphical user interface for service providers to create and manage packages, define pricing models and to manage pricing model assignments for packages. Embodiments also include providing a graphical user interface for subscribers to view available applications and packages in a “marketplace” and to subscribe to packages and manage their subscriptions. Embodiments also include allowing user ratings of packages and subscription arbitration to resolve subscription conflicts.
In the drawings:
In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
I. OVERVIEW
II. PACKAGE ARCHITECTURE
III. PACKAGES AND PRICING MODELS
IV. PACKAGE MANAGEMENT SYSTEM
V. CREATING AND MANAGING PACKAGES
VI. SUBSCRIBING TO PACKAGES
VII. SUBSCRIPTION CONFLICTS
VIII. IMPLEMENTATION MECHANISMS
An approach is provided for creating and managing pricing models and subscriptions for packages. As used herein, the term “package” refers to a logical entity that has one or more member applications, where each of the member applications provides one or more services. One or more pricing models may be assigned to a package and made available to subscribers and the pricing models assigned to a package may be changed. Users may subscribe to one or more packages and incur charges based upon the pricing models assigned to the packages to which the users subscribe. Embodiments include providing a graphical user interface for service providers to create and manage packages, define pricing models and to manage pricing model assignments for packages. Embodiments also include providing a graphical user interface for subscribers to view available applications and packages in a “marketplace” and to subscribe to packages and manage their subscriptions. Embodiments also include allowing user ratings of packages and subscription arbitration to resolve subscription conflicts.
MFPs 102A-C may include any type of functionality that may vary depending upon a particular implementation. MFPs 102A-C may include a user interface that allows for information to be displayed to users and one or more selection mechanisms that allow users to select various functions offered by MFPs 102A-C.
Client devices 104, 106 may be any type of client device for interacting with package management system 110. Client devices 104, 106 may be stationary or mobile client devices and may include a user interface for displaying information and for allowing users to enter information. Examples of client devices 104, 106 include, without limitation, workstations, personal computers, laptop computers, personal digital assistants (PDAs), tablet computers and telephony devices such as cell phones. For purposes of explanation, client device 104 is described hereinafter as being used by an application or service provider to create and manage packages using package management system 110 and client device 106 is described hereinafter as being used by a subscriber to subscribe to packages using package management system 110.
Architecture 100 includes applications identified in
As previously described herein, the term “package” refers to a logical entity that has one or more member applications and provides the services provided by the one or more member applications. Packages may have any number of member applications and the number of applications assigned to a package may be changed. For example, applications may be removed from a package and applications may be added to a package. A particular package may have as members applications that are members of only that particular package. Alternatively, a particular package may have as members applications that are also members of other packages. For example,
A wide variety of pricing models may be used with packages. Example pricing models include, without limitation, subscription-based pricing models and volume-based pricing models. A subscription-based pricing model may include a fee for use of a package (and its member applications) for a specified time. The length of a specified time may be any length, e.g., seconds, minutes, hours, days, months, quarters, years, etc. Typical example subscription lengths are monthly, quarterly and annual. A subscription-based pricing model may allow unlimited use of a package during a specified time, although many variations of subscription-based pricing models may be used. For example, a particular subscription-based model may include a fee for unlimited use of a package (and its member applications) for a specified time, but only up to a specified maximum usage, i.e., a cap.
A volume-based pricing model may include a fee for actual use of a package. The usage may be tracked on a variety of different levels, depending upon a particular implementation. For example, usage may be tracked on a per package level, a per-application level for a package, a per function level or on a per unit level, e.g., an amount of data or a number of pages processed, etc. Volume-based pricing models may specify a fee that is fixed per use of a package, or a fee that is variable based upon the use of a package. For example, the fee per use of a package may decrease as the usage increases. Pricing models may also be based on both subscriptions and volume. For example, a subscription model may allow unlimited use of a package during a specified period up to a specified amount of usage. Pricing models may be applied to devices, groups of devices, users, groups of users or organizations.
As described in more detail hereinafter, a plurality of pricing models may be made available for each package and subscribers may be given a choice to select among the plurality of pricing models assigned to a package when subscribing to the packages. For example, a subscriber may be given a choice between several subscription pricing models with different durations and prices and several different volume-based pricing models.
Data storage 310 may be implemented by volatile storage, non-volatile storage or any combination of volatile and non-volatile storage. In the present example, data storage 310 includes application data 312, package data 314, pricing model data 316, subscription data 318, usage data 320 and ratings data 322. Application data 312 includes information about applications available via package management system 110 and that may be included in packages. Package data 314 includes information about packages available via package management system 110. Pricing model data 316 includes information about pricing models available to administrators, application/service providers and subscribers via package management system 110. Subscription data 318 includes data that specifies subscriptions to applications and packages. Subscription data 318 may include data that identifies subscribers, the applications and packages to which those subscribers are subscribed, pricing models associated with the subscriptions and data that identifies devices to which the subscriptions apply. For example, subscription data 318 may include a subscription record that identifies that a particular user is subscribed to a particular package and a particular pricing model and that the subscription applies to particular devices. Example information about the user includes, without limitation, user identification data, information, e.g., IP addresses, logical addresses, logical names, etc., about one or more client devices associated with the user and data that identifies one or more groups or business organizations of which the user is a member. Subscriptions may be made on a per-user basis, a per-group basis, a per-business organization basis or made based upon any other type of logical entity. Usage data 320 indicates the tracked usage of applications and packages, as described in more detail hereinafter. Ratings data 322 includes data that specifies user ratings of packages, as described in more detail hereinafter.
The data stored in data storage 310 is depicted in
Package management system 110 is configured to provide a graphical user interface that allows users to create and manage packages. Embodiments are depicted in the figures and described herein for purposes of explanation in the context of a Web-based graphical user interface, but the invention is not limited to this context. For example, software may be installed on client devices 104, 106 to generate the graphical user interfaces. In the following Web-based examples, Web server 302 generates a plurality of Web pages that are provided to client devices 104, 106 and rendered via Web browsers executing on client devices 104, 106 that provide a package management environment referred to herein as “package builder.”
The package builder development environment allows users to perform many different functions with respect to packages. As used hereinafter, the user of the package builder may be an administrator, an application/service provider, a subscriber or any other type of user.
The applications represented in the list of available applications 504 may be subscribed to by subscribers and may be included in packages as described in more detail hereinafter. As depicted in
In addition to the information depicted in
Package editor 702 also allows a user to view and manage one or more pricing models 714 for a package. Users may view the current pricing models assigned to a package, use controls 716 to edit or delete the currently-assigned pricing models, or add new pricing models to a package.
As described in more detail hereinafter, a plurality of pricing models may be made available to users and users may be given a choice to select among the plurality of pricing models assigned to a package when subscribing to the packages. For example, a user may be given a choice between several subscription pricing models with different durations and prices and several different volume-based pricing models. Users may subscribe to packages on behalf of themselves as an individual user, on behalf of a group of users, or on behalf of a business organization or any other logical entity. Users may also subscribe to packages for one device or multiple devices. For example, a user may subscribe to a particular package with a particular pricing model for a first group of devices associated with a first business group within a business organization. The user may also subscribe to the same particular package, but with a different pricing model, for a second group of devices associated with a second business group within the same business organization. Subscription data 318 includes data that indicates the current package subscriptions and details of those subscriptions.
Package management system 110 is also configured to provide a graphical user interface that allows users to subscribe to packages. According to one embodiment, Web server 302 generates a plurality of Web pages that are provided to client devices 104, 106 and rendered via Web browsers executing on client devices 104, 106 that provide a subscriber environment referred to herein as a “marketplace.”
A sort control 1010 allows a user to sort the packages contained in the list of available packages 1004, for example, by name alphabetically, by creation date, by package type, by package pricing, etc., by selecting a sorting method from a pull-down list of available sorting methods. Additional controls, in the form of a slider or a button 1012, allow a user to view additional packages. According to one embodiment, packages may also be separately identified in package view 1002. For example, most popular packages 1014 displays one or more packages that are determined to be the most popular, for example, based upon subscriber ratings. New packages 1016 displays one or more newly added packages, for example, the newest N number of packages, or packages added to the marketplace 1000 after a specified time. A view control 1014 allows a user to change from the application view, as depicted in
A package details control 1018, in the form of a button, allows a user to view additional information for a package, as described in more detail hereinafter. A subscribe control 1022 allows a user to subscribe to one or more packages. For example, a user may use a mouse or other user interface selection mechanism to select one or more packages displayed in package view 1002 and then select the package details control 1018 to view additional information for the selected packages, select the member applications control 1020 to view the member applications for the selected packages, or to select the subscribe control 1022 to subscribe to the selected one or more packages. A user may therefore directly subscribe to one or more packages via the package view 1002. In this situation, the subscription may include a default pricing model for the subscribed packages. Alternatively, a user may subscribe to a package via the package details 1102 screen, described in more detail hereinafter with respect to
A sort control 1306 allows a user to sort the applications contained in the list of available applications 1304, for example, alphabetically, by date, etc., by selecting a sorting method from a pull-down list of available sorting methods. Additional controls may be provided to allow a user to view additional applications, for example via control button 1308. According to one embodiment, applications may also be separately identified in application view 1302. For example, most popular applications 1310 displays one or more applications that are determined to be the most popular, for example, based upon subscriber ratings. New applications 1312 displays one or more newly added applications, for example, applications added to the marketplace 1300 within a specified time. A view control 1314 allows a user to change from the application view, as depicted in
An application details control 1316, in the form of a button, allows a user to view additional information for an application. A subscribe control 1318 allows a user to subscribe to one or more applications. For example, a user may use a mouse or other user interface selection mechanism to select one or more applications displayed in application view 1302 and then select the application details control 1316 to view additional information for the selected applications or to select the subscribe control 1318 to subscribe to the selected one or more applications. Additional information may be conveyed via application view 1302, depending upon a particular implementation. As one example, attributes of graphical user interface objects, such as color, shape, size, etc., may visually indicate that the user is currently subscribed to one or more applications represented in application view 1302.
According to one embodiment, packages may have as members, in addition to applications, one or more other packages. This may be useful in situations where certain services are commonly used. For example, suppose that in a particular implementation, users commonly use the following services: scan-to-email and scan-to-archive. A package may be created that includes applications that provide these services. For purposes of discussion, this package is referred to as “BasicPackage1.” Additional packages may then be created that include as members, BasicPackage1 and one or more other applications. For example, suppose that a user would also like to have OCR performed on scanned documents and the OCR data stored at a particular network location. The user may create a package referred to as “BasicPackage1+” that includes as members both the BasicPackage1 and an application named “NetworkOCR1.” The user may then subscribe to BasicPackage1+ with a particular pricing model. Other users may create other packages that include as members, BasicPackage1 and one or more other applications that provide one or more other services. Thus, the capability to include packages as members to other packages allows the creation of flexible hierarchical package structures.
According to one embodiment, package management system 110 is configured to track the usage of applications and packages and generate and store usage data 320 that indicates the tracked usage of applications and packages. Usage data 320 may be used to calculate costs for using packages based upon the pricing models for those packages and the use of the packages as indicated by the usage data. Package management system 110 may also generate various usage reports, depending upon a particular implementation.
As described herein, users may subscribe to applications and packages. In some situations, conflicts may arise between subscriptions to applications and packages. According to one embodiment, a subscription conflict arises when a user is subscribed, or attempts to subscribe, to both an application and a package that has the same application as a member. For example, suppose that a user is currently subscribed to a particular application and the particular application is also a member of a particular package. Other applications may also belong to the particular package. Suppose further that the user requests to subscribe to the particular package while currently subscribed to the particular application. In this situation, the request creates a subscription conflict.
Subscription conflicts may be resolved by subscription manager 308 or other elements within package management system 110. The particular manner in which subscription conflicts are identified and resolved may vary, depending upon a particular implementation, and the invention is not limited to any particular manner for resolving subscription conflicts. For example, according to one embodiment, when a user requests to subscribe to a particular application, a determination is made whether the user is currently subscribed to the particular application or any packages that have the particular application as a member. This determination may be made, for example, by consulting the subscription data 318 to determine whether the user is currently subscribed to the particular application and to determine current package subscriptions for the user. The package data 314 is then consulted to determine whether the particular application is a member of any of the packages to which the user is currently subscribed. A subscription conflict exists if the user is currently subscribed to either the particular application or a package that has the particular application as a member. Subscription conflicts may also be identified when a user requests to subscribe to a package that has, as a member, one or more applications to which the user is currently subscribed.
In step 1704, current application and package subscriptions are evaluated. For example, in response to receiving the subscription request, package management system 110 consults subscription data 318 to identify current application and package subscriptions for the subscriber. In step 1706, a determination is made whether the subscriber is currently subscribed to the application specified in the subscription request. For example, subscription data 318 may be consulted to identify current application subscriptions for the subscriber. If the subscriber is currently subscribed to the application, then in step 1708, the subscription request is denied. The denial of the subscription request may include a visual notification to the user that the subscription request was denied. For example, package management system 110 may cause Web server 302 to generate and provide to client device 104 one or more graphical user interface objects that provide a visual indication to the user that the user's subscription request is denied and may also provide a reason for the denial, for example, that the user is currently subscribed to the application.
If, in step 1706, the subscriber is not currently subscribed to the application, then in step 1710, a determination is made whether the subscriber is currently subscribed to a package that has the application as a member. For example, subscription data 318 may be consulted to identify current package subscriptions for the subscriber and package data 314 may be consulted to identify member applications for packages. If the subscriber is currently subscribed to a package that has, as a member, the application specified in the subscription request, then in step 1708, the subscription request is denied. The denial of the subscription request may include a visual notification to the user that the subscription request was denied as previously described, except that the stated reason for the denial may indicate that the user is currently subscribed to a package that has as a member the application specified in the subscription request. The visual notification may identify the package that has, as a member, the application specified in the subscription request. According to one embodiment, the graphical user interface objects also provide functionality to allow the user to unsubscribe from the conflicting package to allow the subscription to the requested application to be completed. For example, suppose that the user is requesting a subscription to Application1 and the user is currently subscribed to Package1 that has Application1 as a member. The user may be allowed to unsubscribe from Package1 so that the user can subscribe to Application1.
If, in step 1710, the subscriber is not currently subscribed to a package that has, as a member, the application specified in the subscription request, then in step 1712, the subscription request is granted and subscription data 318 is updated to reflect the new subscription.
In step 1754, current application and package subscriptions are evaluated. For example, in response to receiving the subscription request, package management system 110 consults subscription data 318 to identify current application and package subscriptions for the subscriber. In step 1756, a determination is made whether the subscriber is currently subscribed to the package specified in the subscription request, or to an application that is a member of the package specified in the subscription request. For example, subscription data 318 may be consulted to identify current package and application subscriptions for the subscriber. According to one embodiment, concurrent subscriptions to an application and a package that has the application as a member represents a subscription conflict. According to one embodiment, concurrent subscriptions to two or more packages that have as a member one or more of the same applications does not represent a subscription conflict. Thus, if the subscriber is currently subscribed to the package or if the subscriber is currently subscribed to an application that is a member of the package specified in the subscription request, then in step 1758, the subscription request is denied. The denial of the subscription request may include a visual notification to the user that the subscription request was denied. For example, package management system 110 may cause Web server 302 to generate and provide to client device 104 one or more graphical user interface objects that provide a visual indication to the user that the user's subscription request is denied. The visual indication may also provide a reason for the denial, for example, that the user is currently subscribed to the package specified in the request or that the user is currently subscribed to an application that is a member of the package specified in the request. According to one embodiment, the graphical user interface objects also provide functionality to allow the user to unsubscribe from the conflicting package to allow the subscription request for the package to be granted. For example, suppose that the user is requesting a subscription to Package1 and the user is currently subscribed to Package2 that has Application1 as a member. The user may be allowed to unsubscribe from Package1 so that the user can subscribe to Application1.
If, in step 1756, the subscriber is not currently subscribed to the package or an application that is a member of the package specified in the request, then in step 1760 the subscription request is granted and subscription data 318 is updated.
As illustrated by these examples, the identification of subscription conflicts may be made on the basis of applications or packages and subscription conflicts may be resolved based upon applications or packages, depending upon a particular implementation.
Managing network device configuration data by functional area as described herein is very user friendly and less prone to errors than prior approaches. Users are informed of their progress on the GUI as each functional area of configuration data is updated and then implemented on a network device. The approach also reduces bandwidth consumption by allowing only data that has been updated to be supplied to a network device. The bulk management features simplify and expedite the editing of existing configuration data and the creation of new configuration data.
According to one embodiment, the techniques described herein are implemented by one or more special-purpose computing devices. The special-purpose computing devices may be hard-wired to perform the techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) that are persistently programmed to perform the techniques, or may include one or more general purpose hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination. Such special-purpose computing devices may also combine custom hard-wired logic, ASICs, or FPGAs with custom programming to accomplish the techniques. The special-purpose computing devices may be desktop computer systems, portable computer systems, handheld devices, networking devices or any other device that incorporates hard-wired and/or program logic to implement the techniques.
Computer system 1700 may be coupled via bus 1702 to a display 1712, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 1714, including alphanumeric and other keys, is coupled to bus 1702 for communicating information and command selections to processor 1704. Another type of user input device is cursor control 1716, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 1704 and for controlling cursor movement on display 1712. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
Computer system 1700 may implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic or computer software which, in combination with the computer system, causes or programs computer system 1700 to be a special-purpose machine. According to one embodiment, those techniques are performed by computer system 1700 in response to processor 1704 executing one or more sequences of one or more instructions contained in main memory 1706. Such instructions may be read into main memory 1706 from another computer-readable medium, such as storage device 1710. Execution of the sequences of instructions contained in main memory 1706 causes processor 1704 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments are not limited to any specific combination of hardware circuitry and software.
The term “computer-readable medium” as used herein refers to any medium that participates in providing data that causes a computer to operation in a specific manner. In an embodiment implemented using computer system 1700, various computer-readable media are involved, for example, in providing instructions to processor 1704 for execution. Such a medium may take many forms, including but not limited to, non-volatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 1710. Volatile media includes dynamic memory, such as main memory 1706. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or memory cartridge, or any other medium from which a computer can read.
Various forms of computer-readable media may be involved in carrying one or more sequences of one or more instructions to processor 1704 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 1700 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 1702. Bus 1702 carries the data to main memory 1706, from which processor 1704 retrieves and executes the instructions. The instructions received by main memory 1706 may optionally be stored on storage device 1710 either before or after execution by processor 1704.
Computer system 1700 also includes a communication interface 1718 coupled to bus 1702. Communication interface 1718 provides a two-way data communication coupling to a network link 1720 that is connected to a local network 1722. For example, communication interface 1718 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 1718 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 1718 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
Network link 1720 typically provides data communication through one or more networks to other data devices. For example, network link 1720 may provide a connection through local network 1722 to a host computer 1724 or to data equipment operated by an Internet Service Provider (ISP) 1726. ISP 1726 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 1728. Local network 1722 and Internet 1728 both use electrical, electromagnetic or optical signals that carry digital data streams.
Computer system 1700 can send messages and receive data, including program code, through the network(s), network link 1720 and communication interface 1718. In the Internet example, a server 1730 might transmit a requested code for an application program through Internet 1728, ISP 1726, local network 1722 and communication interface 1718. The received code may be executed by processor 1704 as it is received, and/or stored in storage device 1710, or other non-volatile storage for later execution.
In the foregoing specification, embodiments have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is, and is intended by the applicants to be, the invention is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Hence, no limitation, element, property, feature, advantage or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
This application is related to U.S. patent application Ser. No. 12/817,045, entitled Methods and Apparatus for Management of Software Applications Utilizing Volume Pricing, filed Jun. 16, 2010, the entire contents of which are hereby incorporated by reference for all purposes as if fully set forth herein. This application is related to U.S. patent application Ser. No. ______, filed Dec. 16, 2011, Attorney Docket No. 49986-0730, entitled Approach for Implementing Package-Based Subscriptions, by inventors Jayasimha Nuggehalli, Jiang Hong, Guiluan Luo, Zhenyu Lu and Deeksha Sharma, the entire contents of which are hereby incorporated by reference for all purposes as if fully set forth herein. This application is related to U.S. patent application Ser. No. ______, filed Dec. 16, 2011, Attorney Docket No. 49986-0732, entitled Approach for Managing Package-Based Subscriptions for Subscribers, by inventors Jayasimha Nuggehalli, Jiang Hong, Guiluan Luo, Zhenyu Lu and Deeksha Sharma, the entire contents of which are hereby incorporated by reference for all purposes as if fully set forth herein. This application is related to U.S. patent application Ser. No. ______, filed Dec. 16, 2011, Attorney Docket No. 49986-0733, entitled Approach for Arbitrating Subscription Conflicts In Package-Based Subscriptions, by inventors Jayasimha Nuggehalli, Jiang Hong, Guiluan Luo, Zhenyu Lu and Deeksha Sharma, the entire contents of which are hereby incorporated by reference for all purposes as if fully set forth herein.