DETAILED ACTION
Claims 1-12 are pending.
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1-3, 5-7, and 9-11 are rejected under 35 U.S.C. 103 as being unpatentable over Zhang (US 2022/0232010 A1) in view of Maheshwari et al. (US 2016/0127454 A1), in further view of Engehausen et al. (US 2008/0147675 A1).
Regarding claim 1, Zhang teaches a method for deploying multi-enterprise applications in a shared computing environment (Abstract: system and methods; [0045] the system 940 is a multi-tenant system (also known as a multi-tenant architecture). The term multi-tenant system refers to a system in which various elements of hardware and/or software of the system may be shared by one or more tenants. A multi-tenant system may be operated by a first entity (sometimes referred to a multi-tenant system provider, operator, or vendor; or simply a provider, operator, or vendor) that provides one or more services to the tenants (in which case the tenants are customers of the operator and sometimes referred to as operator customers).), the method comprising:
assembling different sets of logical components into different applications for each of the sets and rendering each of the different applications accessible through a [network] within a single computing container managed by a single runtime process ([0014]; [0018] Each virtual application may be suitably generated at run-time (or on-demand) using a common application platform that securely provides access to the data in the database 124 for each of the various tenants subscribing to the multi-tenant system. In accordance with one non-limiting example, the third party computing system 120 is implemented in the form of an on-demand multi-tenant customer relationship management (CRM) system that can support any number of authenticated users of multiple tenants. In this regard, one or more implementations of the third party computing system 120 support one or more application program interfaces (APIs) at the resource server 122 that allow other web applications 104 and/or application servers 102 on the network 110 that have been authorized by the authentication service 112 to access and perform operations with respect to individual tenant's data maintained in the database 124 that would otherwise be secured and inaccessible to unauthorized third parties.; [0041] During operation, an instance of the software 928 (illustrated as instance 906 and referred to as a software instance; and in the more specific case of an application, as an application instance) is executed. In electronic devices that use compute virtualization, the set of one or more processor(s) 922 typically execute software to instantiate a virtualization layer 908 and one or more software container(s) 904A-704R (e.g., with operating system-level virtualization, the virtualization layer 908 may represent a container engine (such as Docker Engine by Docker, Inc. or rkt in Container Linux by Red Hat, Inc.) running on top of (or integrated into) an operating system, and it allows for the creation of multiple software containers 904A-704R (representing separate user space instances and also called virtualization engines, virtual private servers, or jails) that may each be used to execute a set of one or more applications; with full virtualization, the virtualization layer 908 represents a hypervisor (sometimes referred to as a virtual machine monitor (VMM)) or a hypervisor executing on top of a host operating system, and the software containers 904A-704R each represent a tightly isolated form of a software container called a virtual machine that is run by the hypervisor and may include a guest operating system; with para-virtualization, an operating system and/or application running with a virtual machine may be aware of the presence of virtualization for optimization purposes).; [0044] The system 940 is coupled to user devices 980A-380S over a network 982.; [0049] Network 982 may be any one or any combination of a LAN (local area network), WAN (wide area network), telephone network, wireless network, point-to-point network, star network, token ring network, hub network, or other appropriate configuration.);
assigning to each of the applications, an owner and one or more partners, the owner associated with a deployment and use of a corresponding one of the different applications, each of the partners associated only with the use of the corresponding one of the different applications ([0018] In one or more embodiments, the third party computing system 120 is realized as an on-demand multi-tenant database system that is capable of dynamically creating and supporting virtual applications based upon data from a common resource database 124 that is shared between multiple tenants, which may alternatively be referred to herein as a multi-tenant database. Data and services generated by the virtual applications may be provided via the network 110 to any number of client devices, as desired. Each virtual application may be suitably generated at run-time (or on-demand) using a common application platform that securely provides access to the data in the database 124 for each of the various tenants subscribing to the multi-tenant system.; [0045] In some implementations, the system 940 is a multi-tenant system (also known as a multi-tenant architecture). The term multi-tenant system refers to a system in which various elements of hardware and/or software of the system may be shared by one or more tenants. A multi-tenant system may be operated by a first entity (sometimes referred to a multi-tenant system provider, operator, or vendor; or simply a provider, operator, or vendor) that provides one or more services to the tenants (in which case the tenants are customers of the operator and sometimes referred to as operator customers). A tenant includes a group of users who share a common access with specific privileges. The tenants may be different entities (e.g., different companies, different departments/divisions of a company, and/or other types of entities), and some or all of these entities may be vendors that sell or otherwise provide products and/or services to their customers (sometimes referred to as tenant customers).);
the runtime generating multiple different instances of a context management object from a genetically incorporated segment of a single collection of program code that is arranged to restrict access to one or both of application features and application data according to a tokenized relationship between a requesting entity issuing a request to a corresponding one of the different applications, and an owner of the corresponding one of the different applications ([0018] Each virtual application may be suitably generated at run-time (or on-demand) using a common application platform that securely provides access to the data in the database 124 for each of the various tenants subscribing to the multi-tenant system. In accordance with one non-limiting example, the third party computing system 120 is implemented in the form of an on-demand multi-tenant customer relationship management (CRM) system that can support any number of authenticated users of multiple tenants. In this regard, one or more implementations of the third party computing system 120 support one or more application program interfaces (APIs) at the resource server 122 that allow other web applications 104 and/or application servers 102 on the network 110 that have been authorized by the authentication service 112 to access and perform operations with respect to individual tenant's data maintained in the database 124 that would otherwise be secured and inaccessible to unauthorized third parties.; [0025] In exemplary implementations, the authorization service 112 generates or otherwise obtains an access token that is associated with the resource server 122 and/or the resource database 124 to be accessed and the particular user that authorized or otherwise consented to accessing the resource server 122 and/or the resource database 124. In this regard, the access token may be independently and dynamically generated by the authorization service 112 at run-time, and in exemplary implementations, the access token identifies: (1) the authorization service 112 that is the source of the access token; (2) the web application 104 that has been authorized by the authorization service 112; (3) the user that has authorized access; (4) the resource database 124 or other protected resource that is subject of the authorization; (5) the data and/or functionality for which the web application 104 has been authorized by the user to access and/or perform with respect to the resource database 124 or other protected resource; and (6) any additional conditions on the web application 104 accessing data and/or performing functionality with respect to the resource database 124 or other protected resource, if applicable.); and,
the runtime processing requests from requesting entities, each of the requests targeting one of the different applications, to access the application features and application data of the one of the different applications, by creating one of the instances of the context management object according to a token supplied with each of the requests, the token specifying the requesting entity and a target one of the applications, the genetically incorporated segment moderating the access to the application features and application data irrespective of a particular one of the different applications targeted by each of the requests ([0018] Each virtual application may be suitably generated at run-time (or on-demand) using a common application platform that securely provides access to the data in the database 124 for each of the various tenants subscribing to the multi-tenant system.; [0023] receiving or otherwise obtaining a request for authorization to access a protected resource by an instance of the application on behalf of a particular end user or client, and in response to the protected resource authorization request, generating or otherwise providing an authorization consent GUI display that includes a graphical representation or other indicia of the autogenerated alias assigned to the application (tasks 206, 208). In this regard, a user of a client device 106 may utilize a web browser or other client application 108 to access the application server 102 to generate an instance of the web application 104 at or within the client application 108; [0024] obtaining an access token or other credential required for accessing the protected resource and transmitting or otherwise providing the access token to the requesting instance of the application to enable the application to access the protected resource (tasks 212, 214).; [0025]; [0026] The authorization service 112 transmits or otherwise provides the access token to the instance of the web application 104, which, in turn utilizes the access token to access and retrieve data or information associated with the user from the resource database 124 via the resource server 122 and the network 110 for presentation within the instance of the web application 104 within the client application 108.).
Zhang teaches a network but Zhang does not expressly teach common event bus; and
the runtime generating multiple different instances of a context management object from a genetically incorporated segment of a single collection of program code, comprising a templated code segment as a class from which the context management object is instantiated with an identity of a requestor and a targeted application instance as constructor
However, Maheshwari teaches a common event bus ([0315] As shown in the specific example of FIG. 12, computing device 500 includes one or more processors 502, one or more input devices 504, one or more communication units 506, one or more output devices 512, one or more storage devices 508, and user interface (UI) device 510, and communication unit 506. Computing device 500, in one example, further includes one or more applications 522, virtual concept-building application 524, and operating system 516 that are executable by computing device 500. Each of components 502, 504, 506, 508, 510, and 512 are coupled (physically, communicatively, and/or operatively) for inter-component communications. In some examples, communication channels 514 may include a system bus, a network connection, an inter-process communication data structure, or any other method for communicating data. As one example, components 502, 504, 506, 508, 510, and 512 may be coupled by one or more communication channels 514. Computing device 500 may be located and execute, for example, within any of cloud exchange points 128, another interconnection facility, or at a branch office or cloud computing environment employed or used by a cloud exchange provider.).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine the teachings of Maheshwari with the teachings of Zhang to utilize a system bus to connect an user interface with an API gateway module to provide access users with access to the services. The modification would have been motivated by the desire of combining known elements to yield predictable results.
Zhang nor Maheshwari expressly teach the runtime generating multiple different instances of a context management object from a genetically incorporated segment of a single collection of program code, comprising a templated code segment as a class from which the context management object is instantiated with an identity of a requestor and a targeted application instance as constructor.
However, Engehausen teaches a method performed by an application server for configuring an application element during deployment in a network ready to be accessed by a remote client application via a network protocol, wherein an application server processes a plurality of application components. Further Engehausen teaches the runtime generating multiple different instances of a context management object from a genetically incorporated segment of a single collection of program code, comprising a templated code segment as a class from which the context management object is instantiated with an identity of a requestor and a targeted application instance as constructor ([0002] wherein the application program is based on an application template comprising the executable code of the application program, which template is configurable at least in part by an end-user by specifying a plurality of user-specific data defining the user-specific attributes adapting the application program to the needs of a specific end-user, for generating a user-specific application runtime instance; [0012-13]; [0024] In addition, and with special focus to the present invention, an application server 10 may support the concept of prior art "application templates." An application template itself cannot be executed by the application server directly. In contrast, it can be instantiated into one or multiple applications by users. The application template contains application template configuration, application components, executable code and resources. It may include points of variability (POV), which are customizable, thus user-specific data elements that are filled-in during instantiation. Normally, an administrator or a user performs instantiation of an application template, thereby creating a new application. The application configuration of this instance is derived from the application template configuration, and the values of the POVs which are manually specified by the administrator or user, are specific for this instance.; [0025] The POVs of the above sample application template "Email" may include, for example: [0026] User name; [0027] User information (department number, address, etc.); [0028] User location; [0029] Time zone; [0030] Email-address; and [0031] Email-Server.; [0032] A user may instantiate the Email application template by firstly choosing the template in the user interface and secondly specifying the values for the POVs. Thus, a specific application instance is created and configured for this user which contains his personal configuration for name, user information, location, time zone, email address, and email server. [0068-69]).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine the teachings of Engehausen with the teachings of Zhang and Maheshwari to utilize a template code of an application to deploy custom instances for specific users. The modification would have been motivated by the desire of helping the user or administrator in configuring an application and avoid misconfiguration
Regarding claim 2, Zhang teaches wherein each one of the requests is received in an event gateway external to the runtime and authenticated before extracting the token from the one of the requests and providing the token with the one of the requests to the runtime ([0013] The system 100 includes an application server 102 configurable to provide instances of a web application 104 within client applications 108 executed on client devices 106 communicatively coupled to the application server 102 via a communications network 110, such as the Internet or any sort or combination of wired and/or wireless computer network, a cellular network, a mobile broadband network, a radio network, or the like. In one or more implementations, the web application 104 is realized as a virtual application generated at run-time or on-demand. As described in greater below, the web application 104 utilizes an authorization service 112 provided by an authorization server 114 to facilitate a user of the client device 106 conditionally granting authorization to the web application 104 for accessing the data, information, or other protected resources associated with the user that are maintained by a third party computing system 120. In this regard, the authorization service 112 utilizes a unique human-readable alias assigned to the web application 104 and maintained in an alias database 116 in association with the web application 104 to generate an authorization request GUI display including a graphical representation of the alias, which, in turn, may be utilized by the user to verify or otherwise confirm the authenticity of the web application 104 before authorizing the web application 104 to access a protected resource. Once the user authorizes the web application 104, the authorization service 112 provides a token or other credential to the web application 104, which may then be utilized by the web application 104 to retrieve data and/or information associated with the user from a third party computing system 120.).
Regarding claim 3, Zhang teaches wherein the created one of the instances of the context management object invokes a method corresponding to the one of the requests ([0018]; [0048] [0048] In some implementations, the service(s) 942 are implemented using virtual applications dynamically created at run time responsive to queries from the user devices 980A-380S and in accordance with metadata, including: 1) metadata that describes constructs (e.g., forms, reports, workflows, user access privileges, business logic) that are common to multiple tenants).
Regarding claim 5, it is a system type claim having similar limitations as claim 1 above. Therefore, it is rejected under the same rationale. Further, the additional limitations as memory and one or processing units including one or more processing cores are taught by Zhang in at least [0015] “processing system, which may be implemented using any suitable processing system and/or device, such as, for example, one or more processors, central processing units (CPUs), controllers, microprocessors, microcontrollers, processing cores and/or other hardware computing resources configured to support the operation of the processing system described herein”.
Regarding claim 6, it is a system type claim having similar limitations as claim 2 above. Therefore, it is rejected under the same rationale.
Regarding claim 7, it is a system type claim having similar limitations as claim 3 above. Therefore, it is rejected under the same rationale.
Regarding claim 9, it is a system type claim having similar limitations as claim 1 above. Therefore, it is rejected under the same rationale. Further, the additional limitations A computing device comprising a non-transitory computer readable storage medium having program instructions stored therein, the instructions being executable by at least one processing core of a processing unit to cause the processing unit to perform a method are taught by Zhang in at least [0015] “processing system, which may be implemented using any suitable processing system and/or device, such as, for example, one or more processors, central processing units (CPUs), controllers, microprocessors, microcontrollers, processing cores and/or other hardware computing resources configured to support the operation of the processing system described herein… the memory may be realized as a random access memory (RAM), read only memory (ROM), flash memory, magnetic or optical mass storage, or any other suitable non-transitory short or long term data storage or other computer-readable media, and/or any suitable combination thereof.”
Regarding claim 10, it is a system type claim having similar limitations as claim 2 above. Therefore, it is rejected under the same rationale.
Regarding claim 11, it is a system type claim having similar limitations as claim 3 above. Therefore, it is rejected under the same rationale.
Claims 4, 8, and 12 are rejected under 35 U.S.C. 103 as being unpatentable over Zhang, Maheshwari and Engehausen, as applied to claim 1, in further view of Chandrasekaran (US 2019/0095258 A1).
Regarding claim 4, Zhang, Maheshwari and Engehausen do not expressly teach but Chandrasekaran teaches wherein the created one of the instances of the context management object invokes an event handler specified by the one of the requests (Abstract: A service receives a request from a requesting entity. The request includes a function identifier and function input. Responsive to receiving the message, the service selects a first event handler to process the request. The service translates, via the first event handler, the function identifier to a native function call. The service initiates execution of the native function call using the function input, and receives output corresponding to the execution of the native function call. Responsive to receiving the output, the service selects a second event handler to process the output. The service generates, at least in part by the second event handler, a response based on the output. The service transmits the response to the requesting entity.).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine the teachings of Chandrasekaran with the teachings of Zhang, Maheshwari and Engehausen to have event handlers in a multi-tenant system to handle different types of requests.
Regarding claim 8, it is a system type claim having similar limitations as claim 4 above. Therefore, it is rejected under the same rationale.
Regarding claim 12, it is a system type claim having similar limitations as claim 4 above. Therefore, it is rejected under the same rationale.
Response to Arguments
Applicant’s arguments with respect to claims 1-12 have been considered but are moot because the new ground of rejection does not rely on any reference applied in the prior rejection of record for any teaching or matter specifically challenged in the argument.
Conclusion
Applicant's amendment necessitated the new grounds of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any extension fee pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to JORGE A CHU JOY-DAVILA whose telephone number is (571)270-0692. The examiner can normally be reached Monday-Friday, 9:00am-5:00pm.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Meng-Ai T An can be reached on (571)-272-3756. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/JORGE A CHU JOY-DAVILA/Primary Examiner, Art Unit 2195