A computer readable medium including instructions for limiting plug-in application recipes

CN117235795BActive Publication Date: 2026-10-09ORACLE INT CORP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202311247251.5
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-05-31
Filing Date
2018-06-29
Publication Date
2026-10-09
Estimated Expiration
2038-06-29

Smart Images

  • Figure CN117235795B_ABST
    Figure CN117235795B_ABST
Patent Text Reader

Abstract

The present disclosure relates to computer-readable media including instructions for restricting plug-in application recipes. In particular, techniques for restricting plug-in application recipes ("PIARs") are disclosed. A PIAR management application receives a PIAR restriction via an authenticated user of the PIAR management application. The PIAR restriction applies to certain users of the PIAR management application. The PIAR restriction identifies a function of the PIAR management application that would otherwise be available to a user of the PIAR management application if the user has an active account of a particular plug-in application that would be able to provide at least a portion of the function once linked to the user in the PIAR management application and associated with a particular PIAR. The PIAR management application stores the PIAR restriction, including information for blocking the restricted function. Based on the PIAR restriction, the PIAR management application blocks the restricted function. Many different types of functions can be restricted in various ways.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of patent application 201880076949.6, filed on June 29, 2018, entitled "Computer-readable medium including instructions for restricting plug-in application recipes". Technical Field

[0002] This disclosure relates to plug-in application recipes. In particular, this disclosure relates to restrictive plug-in application recipes. Background Technology

[0003] A Plug-in Application Recipe (“PIAR”) is a set of triggering events (referred to herein as “triggers” or “triggering conditions”) and actions logically arranged as if-then formulas. The “if” part of the formula corresponds to the PIAR triggering condition. The “then” part of the formula is conditional upon the satisfaction of the “if” part and corresponds to a triggerable action. A plug-in application can provide actions. The plug-in application providing actions can be the same as or different from the plug-in application providing triggers.

[0004] The PIAR management application presents an interface that allows users to define PIARs. A PIAR definition indicates one or more actions to be performed by the PIAR management application. The PIAR definition further indicates triggers for the plug-in application. When the PIAR management application detects that a trigger condition has been met, the PIAR executes one or more actions corresponding to the detected trigger.

[0005] PIAR management applications can be used for many purposes. For example, PIAR management applications can be used to automate repetitive tasks. Examples of PIAR include, but are not limited to: (a) opening a user's garage door in response to detecting that a user's car is in the user's driveway (trigger); (b) sending a notification to the user in response to determining that the user's step count has not reached a specific target by 5 p.m. (trigger); (c) creating a new folder to store information about the sales contact in response to detecting a new sales contact in the address book or email (trigger).

[0006] The term "plug-in application" refers to the fact that one or more triggers and / or one or more actions of an application are logically "plugged" into PIAR and thus become part of PIAR's logic. For example, a PIAR management application can be organized according to a microservices architecture, allowing several independent services to be plugged into the PIAR application. The plugged services can provide application-specific monitoring services to support application-specific triggers. Alternatively or additionally, the plugged services can provide application-specific action services to support application-specific execution actions.

[0007] The methods described in this section are permissible but not necessarily methods that have been previously conceived or adopted. Therefore, unless otherwise stated, any method described in this section should not be considered as prior art simply by virtue of its inclusion in this section. Attached Figure Description

[0008] In the accompanying figures, embodiments are illustrated by way of example and not limitation. It should be noted that references to "embodiment" or "an embodiment" in this disclosure do not necessarily refer to the same embodiment, and they mean at least one. In the figures: Figure 1 This is a block diagram illustrating a plug-in application recipe management system according to an embodiment; Figure 2 The illustration shows a set of example operations for restricting plug-in application recipes according to an embodiment; Figure 3 An example of an operational sequence for restricting plug-in application recipes according to one embodiment is illustrated; and Figure 4 This is a block diagram illustrating a computer system according to an embodiment. Detailed Implementation

[0009] In the following description, numerous specific details are set forth for purposes of explanation in order to provide a thorough understanding. One or more embodiments may be practiced without these specific details. Features described in one embodiment may be combined with features described in another embodiment. In some examples, well-known structures and devices are described in block diagram form to avoid unnecessarily obscuring the invention.

[0010] 1. General Overview

[0011] 2. Plug-in application recipe management system

[0012] 3. Restrict plugin application recipes

[0013] 4. Illustrative Examples

[0014] 5. Other matters; extension

[0015] 6. Hardware Overview

[0016] 7. Computer networks and cloud networks

[0017] 1. General Overview

[0018] The Plug-in Application Recipe (“PIAR”) management application manages PIAR definitions. Each PIAR definition identifies triggers and actions. The values ​​of trigger variables are exposed to the PIAR management application by the plug-in application and are necessary for continuous evaluation of triggers. Evaluating a trigger involves determining whether a condition is met, at least in part, based on one or more values ​​of the trigger variables. The interface for actions is exposed by the plug-in application, which may be the same plug-in application that exposed the trigger variables or a different plug-in application. The PIAR management application enables actions to be continuously conditional on triggers and enables actions to be executed based on input variables according to the PIAR definition.

[0019] To restrict PIAR functionality, the PIAR management application receives PIAR restrictions via its authenticated users. The PIAR management application stores information indicating which authenticated users have permission to restrict the user's PIAR management application functionality. PIAR restrictions apply to certain users of the PIAR management application. Specifically, PIAR restrictions identify the functionality of the PIAR management application; otherwise, if a user of the PIAR management application has an active account for a specific plug-in application that, once linked to that user in the PIAR management application and associated with a specific PIAR, would be able to provide at least a portion of that functionality, then that functionality will be available to the user of the PIAR management application. The PIAR management application stores PIAR restrictions, including information for blocking restricted functionality. Based on the PIAR restrictions, the PIAR management application blocks the restricted functionality. Many different types of functionality can be restricted in various ways.

[0020] This general overview section may not include one or more embodiments described in this specification and / or recorded in the claims.

[0021] 2. System Architecture Overview

[0022] Figure 1 This is a block diagram illustrating a Plug-in Application Recipe (PIAR) management system 100 according to an embodiment. The PIAR management system 100 includes functionality for generating at least one PIAR in which variables have been transformed.

[0023] As shown in the figure, the PIAR management system 100 includes a PIAR management application 108 and various other components. Embodiments may include more or fewer components than shown. Components can be implemented using software and / or hardware. Specifically, components can be implemented on one or more digital devices. The term "digital device" generally refers to any hardware device that includes a processor. A digital device can refer to a physical device that executes an application or virtual machine. Examples of digital devices include computers, tablets, laptops, desktops, netbooks, servers, web servers, network policy servers, proxy servers, general-purpose machines, function-specific hardware devices, hardware routers, hardware switches, hardware firewalls, hardware network address translation (NAT), hardware load balancers, mainframes, televisions, content receivers, set-top boxes, printers, mobile handheld terminals, smartphones, personal digital assistants ("PDAs"), wireless receivers and / or transmitters, base stations, communication management devices, routers, switches, controllers, access points, and / or client devices. Components may be local to each other or geographically dispersed. Each component may be distributed across multiple applications and / or machines. Multiple components may be combined into a single application and / or machine. Two or more components can be communicatively coupled via a local area network (LAN), wide area network (WAN), internet, intranet, cellular network, and / or combinations thereof. Operations described relative to one component can be performed alternatively by another component. Additional embodiments and / or examples related to computer networks are described below.

[0024] In this embodiment, the PIAR management application 108 provides a user interface 102 for creating a PIAR definition 150. Specifically, the user interface 102 allows the user to select one or more triggers 104 and one or more corresponding actions 106 to be performed when one or more triggers 104 are satisfied. As used herein, the triggers 104 and actions 106 are collectively referred to as “actions” of the PIAR. Examples of PIARs include, but are not limited to: (a) opening the user’s garage door in response to detecting that the user’s car is in the user’s driveway (trigger); (b) sending a notification to the user in response to determining that the user’s step count has not reached a specific target by 5 p.m. (trigger); (c) creating a new folder to store information about the sales contact in response to detecting a new sales contact in the address book or email (trigger). The user interface 102 may be a graphical user interface (GUI), a command-line interface, or any other type of interface configured to receive user input for creating the PIAR definition 150. Examples of GUIs will be discussed in detail below.

[0025] In an embodiment, in addition to one or more triggers 104 and one or more associated actions 106, the user interface 102 includes options for specifying a name for the PIAR definition, the trigger application to be monitored for detecting one or more triggers 104, and / or the application to be used to execute one or more actions 106. One or more of the actions 106 may involve generating a new PIAR definition, and one or more of the actions 106 may be executed by the PIAR management application 108 itself. The PIAR definition 150 may also include information other than one or more triggers 104 and one or more actions 106.

[0026] In an embodiment, a PIAR may include multiple actions performed in response to the detection of a trigger. One or more of the actions may be performed concurrently or in a fixed order. Combinations of concurrent and / or sequential actions may be used. The output of one action may be used as the input of another action. For example, suppose a PIAR is created using a trigger defined as receiving emails from a prospect (e.g., receiving emails only to the prospect's email address). In this example, a series of actions performed in response to receiving an email may include (1) determining whether the prospect is already listed in a Customer Relationship Management (CRM) application, and (2) if the prospect is not already listed in the CRM application, then adding the prospect to the CRM application and sending a notification email to the sales manager. Adding the prospect to the CRM application and sending a notification email to the sales manager may be performed concurrently or in a specific order. For example, a notification email may only be sent after confirmation of successful addition of the prospect is received from the CRM application. Many different combinations of concurrent and / or sequential actions may be used in a PIAR.

[0027] In an embodiment, one or more actions in a PIAR may be conditionally performed based on an evaluation of an initiating trigger, or, if the action is part of a series of actions, on an evaluation of the output from a previous action. For example, in response to detecting a trigger, conditional logic (e.g., if, then, else, etc.) may be used to determine a specific sequence of actions to be performed (if any). The PAIR management system 100 may include an interface that allows users to define such conditional logic for a specific PIAR.

[0028] In embodiments, evaluating the output of a trigger and / or a previous action may involve looping through multiple variable values. For example, a trigger or action may provide an array of values, and evaluating a trigger or action may involve iteratively evaluating (or “looping through”) each of those values. Looping through these values ​​may itself be influenced by conditional logic. Many different combinations of conditional logic and / or looping through variables can be used to determine one or more specific actions (if any) to be performed when a trigger is detected.

[0029] In an embodiment, PIAR definition 150 includes one or more types of metadata. For example, the metadata may identify the user who created PIAR definition 150, the time and date of creation, the authorization level of PIAR definition 150 (e.g., whether action(s)106 is allowed to receive personally identifiable information), the plug-in application(s) associated with trigger(s)104 and / or action(s)106, or any other type of metadata describing the PLAR or associated with the PIAR. If a PIAR definition is generated recursively during the execution of another PIAR, then the recursively generated PIAR can be considered a “child” PIAR, and the PIAR that generated it can be considered a “parent” PIAR. The metadata associated with the child PIAR may be included directly in the child PIAR's metadata and / or by referencing the parent PIAR's metadata, including information about the parent PIAR.

[0030] In this embodiment, the PIAR management system 100 includes one or more applications linked to or “inserted” into the PIAR management application 108. Applications “inserted” into the PIAR management application 108 may be referred to as “plug-in applications.” Specific plug-in applications may function as “trigger applications,” i.e., applications monitored to detect trigger conditions. Alternatively or additionally, specific plug-in applications may function as “action applications,” i.e., applications that perform an action when a trigger condition is met.

[0031] In embodiments, generally speaking, a plug-in application is an application that: (a) executes independently of the detection processing of the PIAR management application 108, (b) is not controlled by the detection processing of the PIAR management application 108, and / or (c) is remote from the PIAR management application 108. Therefore, a plug-in application that executes independently of the detection processing of the PIAR management application 108 upon detecting (one or more) specified triggers 104 can be referred to herein as an independently executed application. Furthermore, one or more plug-in applications can be considered "independent" applications relative to the PIAR management application 108. That is, a plug-in application can provide its own user interface (e.g., a GUI) through which the user accesses the full functionality of the plug-in application. In this way, the plug-in application provides functionality completely independent of the PIAR management application 108 and does not depend on the PIAR management application 108 to function. An independent plug-in application is not a module or component of the PIAR management application 108. One or more plug-in applications and the PIAR management application 108 can be developed and supported by completely different business entities. As an example, Figure 1 The illustration shows a plug-in application that includes a search application 110, an email application 112, and an audio player application 114, all running as standalone applications. Many different types of plug-in applications can be used, and... Figure 1 The examples shown should not be construed as limiting one or more embodiments.

[0032] In an embodiment, the PIAR management application 108 stores PIAR definitions (e.g., PIAR definition 150) as PIAR definition objects 107. Definition objects 107 may be stored in a database 105, for example, in a file system, or in any other type of digital storage device. The PIAR management application 108 may also store metadata associated with the PIAR definitions in the database 105 or other storage devices. Metadata 109 may be stored within definition objects 107 (i.e., as a logical component of it) or stored separately. In an embodiment, definition objects 107 are stored in JavaScript Object Notation (JSON) format, where elements in the JSON structure correspond to one or more triggers 104, one or more actions 106, and / or metadata 109. The JSON structure may also include one or more elements corresponding to transformation operations to be applied to variables associated with PIAR trigger and / or action operations.

[0033] In this embodiment, the functionality of the plug-in application accessible to the PIAR management application 108 is a subset of the plug-in application's full functionality. Specifically, the plug-in application may expose an Application Programming Interface (API) that provides access to certain functions and / or data of the plug-in application, but not to other functions and / or data. In other words, the functionality exposed to the PIAR management application 108 can be an appropriate subset (also known as a strict subset) of the plug-in application's full functionality. For example, the API could be a Static State Transfer (REST) ​​API. Other types of APIs can be used. As an example, an email application may not expose email sending functionality to the PIAR management application 108, but may expose information about received emails, such as date, time, sender, recipient, subject line, and email content. As another example, a calendar application may not expose event cancellation functionality, but may expose information about events that have been scheduled (e.g., date, time, location, participants, etc.) and / or the ability to schedule new events. The set of functionality exposed to the PIAR management application 108 can depend on one or more authorization policies. In this embodiment, the PIAR management application 108 stores an authorization token used to authenticate access to the plug-in application's API. As an example, the PIAR management application 108 can prompt the user for a username and password via user interface 102 to access the email application's API. The PIAR management application 108 can store the username and password in an encrypted token it uses to request access to the exposed functions and / or data of the email application.

[0034] In an embodiment, user interface 102 allows the user to specify triggers that do not correspond to functions or data natively exposed by the plug-in application. For example, a trigger application may expose data values ​​that change over time without natively exposing any functions that monitor or compare data values ​​as they change. Nevertheless, triggers can be defined to monitor changes in data values ​​over time within the trigger application. As another example, triggers may look for aggregated data values ​​(e.g., sums or averages of data retained or changed over a period of time or across multiple consecutive data sets), or masked data values ​​(e.g., data values ​​indicating the presence or absence of data or changes to data, even if the data itself is masked for the PIAR management application 108 or the end user, or is completely unavailable to the end user). Many different types of triggering conditions can be inferred, derived, or otherwise determined from the trigger application without requiring native support from the trigger application.

[0035] As an example, search application 110 may be linked to (“inserted into”) PIAR management application 108. Linking search application 110 to PIAR management application 108 may involve monitoring search application 110 (e.g., via a REST API) and reporting detections of triggers defined by search application 110 to PIAR management application 108. For example, a trigger may involve detecting the execution of a received search via search application 110. Search application 110 may be monitored via a corresponding service 111, which detects when a received search was executed via search application 110. Service 111 notifies PIAR management application 108 whether and when a received search was executed via search application 110. Service 111 may be implemented separately from search application 110 or implemented as a component of search application 110 (e.g., an installable module or plugin).

[0036] As another example, search application 110 corresponds to a car sales application. Potential customers can search for cars from a database of advertised vehicles and request a meeting with a sales representative to purchase the car. The trigger condition can be defined as receiving a sales meeting request referencing one of the advertised cars from the user.

[0037] In an embodiment, the plug-in application includes a monitoring system that notifies the PIAR management application 108 of predefined trigger conditions using customizable predefined parameters. For example, the application may include a monitoring system that notifies the PIAR management application 108 when an application-specific trigger (such as a keyword search for emails) is met. The application may allow a limited amount of customization for the application-specific trigger, allowing customization in some ways (such as specifying keywords for the search) but not in others (such as whether the keyword is within N words of another keyword, or whether information about earlier emails containing the keyword has been detected and stored in a table).

[0038] In this embodiment, a monitoring plug-in is continuously applied (e.g., using service 111) to identify triggering events. That is, a monitoring process is initiated and continues to operate until a termination condition is met. Therefore, a specific PIAR can be evaluated and executed multiple times in response to numerous triggering events identified by the associated monitoring process. Generally, a PIAR does not cease operation after the first instance of the selected triggering event. For example, a PIAR that opens a garage door in response to detecting a vehicle in the driveway can operate indefinitely, resulting in the garage door being opened dozens, hundreds, or even thousands of times. The monitoring process associated with a particular PIAR can operate indefinitely until it is manually terminated by the user (e.g., via user interface 102). Alternatively, the PIAR definition may include termination conditions, such as a certain length of time the action is performed in response to a trigger or a maximum number of times the action is executed. Typically, PIARs are created for the purpose of using them as automated background services, allowing them to continue operating indefinitely without further manual intervention.

[0039] In this embodiment, the search application 110 (or other applications inserted into the PIAR management application 108) is unaffected by the execution of the PIAR management application 108, which uses at least one field managed by the search application 110 to detect one or more triggers 104. The PIAR management application 108 may correspond to a microservice that provides functionality entirely different from the independently executed search application 110. The PIAR management application 108 can determine that one or more actions 106 have been triggered when a change in one or more fields managed by the independently executed search application 110 meets a threshold criterion, such as a value or aggregate value. As an example, a field managed by the search application 110 may specify a location. In response to a query, search results associated with that location are presented. Changes in the city may meet a threshold criterion. The threshold criterion specified for the PIAR management application 108 may differ from any threshold criterion supported by one or more built-in monitoring processes of the plug-in application, even if that threshold criterion is based on variables accessible from the plug-in application, and even if such variables may change over time. The PIAR management application 108 can execute (directly or by causing the execution of another process) one or more actions 106 in response to detecting that one or more actions 106 have been triggered.

[0040] Similar to trigger applications (e.g., search application 110), action applications (e.g., email application 112 or audio player application 114) are linked or inserted into the PIAR management application 108. An action application is an application that performs actions as instructed or requested by the PIAR management application 108 (but in the sense that the PIAR management application 108 initiates the execution of the action, it can also be said that the PIAR management application 108 "executes" the action). As described above, the PIAR management application 108 requests the execution of an action in response to the detection of a trigger. Action applications can be linked to the PIAR management application 110 via a corresponding service 111. Service 111 can be implemented separately from the action application or as a component of the action application. Service 111 can use the application programming interface (API) corresponding to the action application to use the action application to perform actions according to the PIAR. A specific action application can also be a trigger application. That is, the same application can expose one or more triggers, and also expose the API for performing actions. The same application can be used as both a trigger application and an action application in the same PIAR or different PIARs.

[0041] In this embodiment, the PIAR management application 108 is itself an action application. The PIAR management application 108 can perform actions to generate new PIARs. For example, a new PIAR can be generated for managing customer purchases. The new PIAR can define a trigger as the customer's first purchase. The new PIAR can define actions such as creating a database record to store customer purchase history or creating a product recommendation list based on a customer's completed purchases.

[0042] In this embodiment, the PIAR management application 108 supports PIAR definitions involving a series of actions. For example, in response to a specific trigger, the PIAR can perform a specific action "Action A". The output of Action A can then be used as input to another action "Action B". The output of Action B can then be used as input to another action "Action C", and so on. Functions and / or data exposed by Action A can be used as input to Action B and / or subsequent actions (such as Action C). Functions and / or data exposed by later actions (such as Action C) may not be usable as input to earlier actions (such as Action B or Action A). For example, if Action B completes before Action C completes, then Action B cannot receive input from Action C.

[0043] In this embodiment, the PIAR management application 108 includes functionality for restricting PIAR. Specifically, the PIAR management application may store PIAR restrictions (e.g., in database 105) that include information used by the PIAR management application 108 to block restricted functionality. PIAR restrictions can be defined by authorized users of the PIAR management application 108 via a user interface such as user interface 102. PIAR restrictions will be discussed in further detail below.

[0044] 3. Restrict plugin application recipes

[0045] Figure 2 Includes a set of example operations for restricting Plug-in Application Recipes (“PIAR”). Other operations not described herein may be used instead of and / or in addition to those described. Figure 2 One or more operations shown can be modified, rearranged, or omitted entirely. Therefore, Figure 2 The specific sequence of operations shown should not be interpreted as limiting the scope of one or more embodiments.

[0046] In this embodiment, the PIAR management application 108 receives user input defining PIAR restrictions (operation 202). PIAR restrictions identify restricted functionality of the PIAR management application 108 that would otherwise be available to a specific user or a group of users of the PIAR management application 108. The user of the PIAR management application 108 has an active account for a specific plug-in application (e.g., an active account for an email application that could be used as the plug-in application). If the active plug-in application account is linked to a user in the PIAR management application 108, and if the plug-in application is associated with a specific PIAR (e.g., by configuring the PIAR with a trigger involving monitoring the email application mentioned in the previous example for specific trigger conditions), then the plug-in application is considered to provide functionality to the PIAR management application. Based on the PIAR restrictions, the PIAR management application 108 blocks some or all of the functionality provided by the plug-in application. As discussed in further detail below, different types of PIAR restrictions can be defined, and the PIAR management application 108 can block restricted functionality in many different ways.

[0047] In this embodiment, PIAR is implemented by the PIAR manager 108 according to an optimistic constraint model, whereby PIAR functionality is unrestricted unless a specific function is restricted via PIAR constraint or other constraint mechanism. Alternatively, a pessimistic constraint model can be used, whereby all PIAR functionality is blocked unless explicitly permitted. In the pessimistic constraint model, PIAR licensing can be used instead of PIAR restriction. That is, the PIAR management application 108 can store PIAR licensing information identifying which PIAR functionality has been explicitly licensed. Using an optimistic constraint model can provide users with access to a broader range of functionality while still allowing for the restriction of a specific function as needed.

[0048] In an embodiment, user input defining PIAR restrictions is received via a user interface, such as user interface 102, of the PIAR management application 108. The user input identifies the specific functionality that is restricted. Furthermore, the user input may identify a specific user or group of users for whom functionality is restricted. For example, specific functionality may be restricted for users in a specific user group and / or users without a specified minimum authorization level. Alternatively or additionally, the user input may identify how the PIAR management application 108 should respond to situations involving restricted functionality. Different types of restricted functionality and different types of responses to encountering restricted functionality are described below.

[0049] In this embodiment, the user providing the input defining PIAR restrictions is an authenticated user of the PIAR management application 108. The PIAR management application 108 may store user credentials (e.g., in a database 105 or another location) to distinguish users with permissions to restrict PIAR functionality from those without such permissions. For example, permissions to restrict PIAR functionality may be based on user groups and / or authorization levels. Different authenticated users may have permissions to restrict functionality for different users of the PIAR management application 108, or to restrict functionality related to different plug-in applications. For example, a system administrator may have permissions to restrict functionality for all users, while a manager may have permissions to restrict functionality for users only within a specific business unit. As another example, a sales group manager may have permissions to restrict PIAR functionality only related to sales-related applications or services. Numerous different credential configurations can be used to grant permissions to different users to restrict functionality for different users, for PIAR involving different plug-in applications, and / or for different subsets of functionality provided by plug-in applications.

[0050] In one embodiment, the PIAR management application 108 allows the user to select transformations to be applied to the values ​​of variables exposed by plug-in applications within PIAR. Transformations are discussed in further detail in U.S. Provisional Patent Application 62 / 527,949, entitled “Transforming Plug-in Application Recipe Variables,” which is incorporated herein by reference in its entirety. PIAR restrictions can indicate the prohibition of specific transformations or a set of transformations. For example, if the transformation is implemented in a scripting language, then a PIAR restriction can indicate that a specific script function should be added to a “blacklist” of prohibited functions. Alternatively, a specific transformation may not be allowed unless the corresponding script function is added to a “whitelist” of allowed functions. PIAR restrictions or PIAR licenses can be applied to specific functions, specific function libraries, and / or any function with a certain characteristic. For example, functions attempting to access third-party servers may be disallowed.

[0051] In this embodiment, after receiving the definition of a PIAR restriction (e.g., via user input as described above), the PIAR management application 108 stores the PIAR restriction (operation 204). Storing the PIAR restriction involves storing information used by the PIAR management application 108 to block the restricted functionality. The PIAR management application 108 may store the PIAR restriction information in a database 105 or other location. Furthermore, the PIAR restriction information can take many different forms. For example, the PIAR restriction information may be stored in a JavaScript Object Notation (JSON) data structure, in some other type of markup language, or in a completely different form.

[0052] In this embodiment, PIAR restrictions identify restricted functionality that is already being used by one or more active PIARs. For example, a PIAR restriction might prohibit the use of a specific plugin application, and there might already be an active PIAR using that specific plugin application. Therefore, based on the PIAR restriction, the PIAR management application 108 can disable any active PIAR currently using the restricted functionality (operation 206). Disabling an active PIAR can involve simply putting the PIAR into an inactive state. Alternatively, if the PIAR restriction prohibits the creation of a PIAR, then disabling an active PIAR can involve completely deleting the PIAR. If the PIAR restriction does not prohibit the creation or activation of a PIAR (e.g., if the PIAR restriction was applied during the execution of the PIAR based on data exposed at that time), then it is not necessary to disable or delete the active PIAR.

[0053] In this embodiment, based on PIAR restrictions, the PIAR management application 108 prevents the creation of PIARs (operation 208). Preventing PIAR creation can be based on many different types of PIAR restrictions. PIAR restrictions can prohibit users from linking specific plugin applications (or more specifically, the user activity accounts of plugin applications) to users in the PIAR management application. Preventing the linking of plugin applications effectively prevents the creation of PAIRs using that plugin application.

[0054] Alternatively or additionally, users may be allowed to link plug-in applications to the PIAR management application 108, but PIAR restrictions may prevent the creation of PIARs in which plug-in applications are used. Preventing the use of plug-in applications in a particular PIAR can depend on various factors. A user may be prevented from using a particular plug-in application entirely. Alternatively or additionally, PIAR restrictions may prevent the creation of PIARs in which a particular plug-in application (and / or a set of plug-in applications) interacts with another particular plug-in application (and / or a set of plug-in applications). For example, to help protect the privacy of sensitive financial information and / or personally identifiable information (“PII”), PIAR restrictions may prohibit the creation of PIARs that use both a financial application and a social media application simultaneously. In embodiments, the PIAR management application 108 stores information that identifies plug-in applications as belonging to different groups or categories. For example, plug-in application 108 may support tags applied to plug-in applications, with names such as “financial” or “social”.

[0055] Alternatively or additionally, instead of preventing the use of the entire plugin application, PIAR restrictions can prevent the use of specific operations within the plugin application. For example, a calendar application may expose APIs for creating, modifying, and deleting calendar events, and PIAR restrictions can prevent the creation of PIARs in which calendar events are deleted. Preventing the use of a specific plugin application operation within a specific PIAR can depend on various factors. A user may be prevented from using the operation entirely, or PIAR restrictions may prevent the creation of PIARs in which a specific operation (and / or operation type) interacts with another specific operation (and / or group of operations). For example, a finance application may provide an operation that outputs publicly available financial information (e.g., quarterly earnings reports) and another operation that outputs private financial information (e.g., employee compensation). An operation that outputs private financial information may be prevented from interacting with an operation in a social media application, without preventing the same interaction with an operation that outputs publicly available financial information. In an embodiment, PIAR management application 108 stores information that identifies different operations of the plugin application as belonging to different groups or categories. For example, plugin application 108 may use names such as "public" or "private" to support labels applied to operations within the plugin application.

[0056] Alternatively or additionally, PIAR restrictions can prohibit the creation of PIARs in which specific plug-in applications and / or their operations are placed in a specific order. For example, a PIAR could be allowed to use both the finance and social media applications simultaneously, provided that all operations using the social media application are performed before any operations using the finance application, since this specific order of operations does not pose a risk of posting financial data on social media.

[0057] In this embodiment, to prevent a user from creating a PIAR based on PIAR restrictions, the PIAR management application 108 disables the restricted functionality in the user interface, which would otherwise be available through the user interface. As an example, to prevent a user from linking a specific plugin application to themselves, the PIAR management application 108 can gray out, hide, or otherwise make the link inaccessible to that specific plugin application. As another example, to prevent a user from using a specific plugin application in a PAIR, the PIAR management application 108 can gray out, hide, or otherwise make that specific plugin application inaccessible in the PIAR creation interface. As yet another example, to prevent a user from performing a specific action on a plugin application in a PIAR, the PIAR management application 108 can gray out, hide, or otherwise make that specific action inaccessible in the PIAR creation interface. Many different methods can be used to disable or otherwise prevent restricted functionality.

[0058] In this embodiment, based on PIAR restrictions, the PIAR management application 108 prevents the activation of a specific PIAR (operation 210). A PIAR can be considered active when a PIAR monitoring trigger condition is in progress. If the PIAR was defined when the PIAR restriction was created, the PIAR management application 108 can prevent the existing PIAR from being activated without deleting it (see the discussion of operation 206 above). If the PIAR was not defined when the PIAR restriction was created, the PIAR management application 108 can allow the creation of the PIAR (e.g., to allow for the possibility of future deregulation), but can prevent the PIAR from being activated as long as the PIAR restriction remains in effect.

[0059] In this embodiment, based on PIAR restrictions, the PIAR management application 108 terminates the execution of the PIAR (operation 211). Terminating the execution of a PIAR is different from completely disabling it. Terminating the execution of a PIAR can still allow the evaluation of one or more trigger conditions of the PIAR. Furthermore, terminating the execution of a PIAR can still allow the evaluation of the output of intermediate operations within the PIAR. However, at some point during the evaluation of the PIAR, the PIAR management application 108 may determine that the PIAR should not be allowed to continue execution. For example, PIAR restrictions can prohibit the execution of any PIAR in which personally identifiable information is exposed. During the evaluation of the PIAR, the PIAR management application 108 may determine that the data exposed by triggers or other operations includes Social Security numbers (e.g., using pattern matching to identify numbers in the format NNN-NN-NNNN). After determining that personally identifiable information has been exposed, the PIAR management application 108 may terminate the execution of the PIAR. Alternatively or additionally, the PIAR management application 108 may determine that allowing the PIAR to continue execution would exceed a threshold expenditure (measured in monetary terms, computing resources, or any other type of expenditure), where the threshold is defined by the PIAR restrictions. For example, operations used in PIAR may output a large number of records, the processing cost of which can be high. Therefore, the PIAR management application 108 can terminate PIAR execution to avoid this expense. Many different types of PIAR limits can be defined, and these limits require termination of PIAR execution under many different conditions.

[0060] In this embodiment, based on PIAR restrictions, the PIAR management application 108 blocks restricted functionality (operation 212) during the execution of the PIAR, without going further to terminate the execution of the PIAR. (Terminating the execution of the PIAR can be considered a more severe form of blocking functionality). Specifically, the PIAR management application 108 can allow the PIAR to continue execution while also taking measures to block restricted functionality. For example, PIAR restrictions can prevent the transfer of data exposed to the PIAR by the plug-in application and having restricted characteristics (i.e., characteristics defined as restricted according to PIAR restrictions) from one PIAR operation to another. Restricted characteristics may include personally identifiable information, such as Social Security numbers, phone numbers, account numbers, etc., and / or sensitive corporate information, such as internal documents, financial records, etc. To block restricted functionality, the PIAR management application 108 can mask the data exposed by the plug-in application before using the data for another operation. Masking the data may involve, for example, removing characters or replacing characters with other characters. PIAR restrictions can define data as having restricted characteristics in various ways. For example, restricted characteristics can be identified based on a pattern matching scheme (e.g., “NNN-NN-NNN”), where “N” is any single digit, a typical format for social security numbers. Alternatively or additionally, the PIAR management application 108 can use heuristics to identify data that may have restricted characteristics, such as data that is likely to contain payroll information, even if the data does not match any predefined pattern. Many different types of restricted characteristics can be used as the basis for masking data. As another example, even if the company file server is not explicitly used as a plug-in application in PIAR, the PIAR management application 108 can still identify data exposed by the plug-in application that appears to originate from the company file server during PIAR execution. Using pattern matching, heuristics, or any other type of analysis, the PIAR management application 108 can determine that PIAR is attempting to perform restricted functionality and thus block the restricted functionality.

[0061] In an embodiment, when the PIAR management application 108 restricts functionality based on PIAR limitations, the PIAR management application 108 generates a notification describing the event (operation 214). This notification may be stored in an event log for troubleshooting, reporting, or any other administrative purposes. Alternatively or additionally, a notification may be sent to a user indicating that functionality is restricted. For example, a notification may be sent to a user attempting to create a PIAR with restricted functionality. As another example, the notification may be sent to different users, such as system administrators or managers. The notification may be sent via email, a pop-up in a graphical user interface (GUI), a text message, or any other type of notification format. In this embodiment, generating a notification when attempting to perform restricted functionality helps remind the user responsible for maintaining the PIAR management application 108, thereby allowing the user to respond appropriately.

[0062] Various examples and substitutions have been discussed in the above operations (202 to 214). It should be recognized that these substitutions of examples can be applied to other operations besides those explicitly discussed. For example, the form of heuristic analysis described with respect to operation 212 can be used to determine that active PIAR should be deactivated (operation 206). Similarly, examples applicable to terminating the execution of PIAR (operation 211) can be applied to preventing the activation of PIAR (operation 210). Many different substitutions of examples and operations are possible, with necessary modifications in detail, and the embodiments should not be considered as limited to specific combinations of the operations and examples discussed above. These examples are discussed for illustrative purposes only and should not be construed as limiting one or more embodiments.

[0063] In this embodiment, PIAR restrictions allow for the imposition of useful and / or necessary limitations on a user's ability to create PIARs via the PIAR management application 108. For example, PIAR restrictions may be helpful and / or necessary for complying with legal obligations, such as those governing the storage and transmission of personally identifiable information. Alternatively or additionally, PIAR restrictions may be used to protect sensitive data not required by law, such as trade secrets, employee details, customer details, etc. Alternatively or additionally, PIAR restrictions may be used to enforce company policies, such as restrictions on employee access to social media applications, restrictions on employees storing company data on external servers, etc. Generally, PIAR restrictions can be used to provide users of the PIAR management application 108 with considerable leeway in creating PIARs while maintaining appropriate restrictions.

[0064] 4. Illustrative Examples

[0065] Figure 3An example of an operational sequence for limiting PIAR is illustrated according to one embodiment. This example is provided for illustrative purposes only and should not be construed as limiting the embodiment.

[0066] like Figure 3 As shown, the timeline of events proceeds from top to bottom, with different times marked as T1, T2, etc., and each time marker accompanied by a corresponding description. At time T1, the user defines a PIAR via the PIAR management application's interface. PIARs identify one or more triggers and one or more actions. In this example, PIAR is designed to monitor Twitter. TM And any Twitter account that (a) contains the hashtag #BestProductEver and (b) originates from a whitelist of trusted users (e.g., company employees). TM The account's tweet was retweeted to the company's Twitter account. TM Accounts. PIAR identifies any tweets from whitelisted users containing the hashtag #BestProductEver as triggers. PIAR will then retweet the tweets to the company's Twitter account. TM Account identification is an action.

[0067] At time T2, the PIAR management application begins executing PIAR. Specifically, the PIAR management system uses a monitoring service to monitor Twitter. TM It also identifies when tweets with defined criteria are posted. When a tweet with defined criteria is posted, a trigger condition is met, and that tweet is used as input for an action. In this example, the monitoring service identifies specific tweets from whitelisted users containing the hashtag #BestProductEver. However, tweets may also contain inappropriate content (e.g., language unsuitable for posting on company social media accounts). PIAR does not include any language-based filters. Therefore, at time T3, according to the PIAR definition, the PIAR management application uses the company's Twitter account... TM The account retweeted inappropriate content posted on social media.

[0068] At time T4, the user defines PIAR restrictions via the PIAR management application's interface. The user defining PIAR restrictions can be the same user as the user defining the PIAR or a different user. The interface used to define PIAR restrictions can be the same interface as the interface used to define the PIAR or a different interface. PIAR restrictions apply to all PIARs. Specifically, PIAR restrictions prohibit any action defined in the PIAR from posting inappropriate content to social media accounts. The PIAR management application receives user input and stores PIAR restrictions.

[0069] In this example, the PIAR restriction does not prevent the creation, activation, or execution of the PIAR. Linking the PIAR to social media apps and posting content to social media accounts is still allowed. Therefore, at time T5, the PIAR management app continues to execute the PIAR. At time T6, the PIAR management app posts appropriate content to social media. The monitoring service identifies a specific tweet from a whitelisted user containing the hashtag #BestProductEver. The PIAR management app applies the PIAR restriction and detects no inappropriate content. After determining that the tweet does not contain any inappropriate content, the PIAR management app executes the action defined in the PIAR to use the company's Twitter account. TM The account retweeted the tweet.

[0070] At time T7, the PIAR management app was prevented from posting inappropriate content to social media. The monitoring service identified another tweet from a whitelisted user containing the hashtag #BestProductEver. The PIAR management app applied PIAR restrictions and detected that the tweet contained inappropriate content. Because the tweet contained inappropriate content, the PIAR management app did not perform the actions defined in PIAR. The PIAR management app does not use the company's Twitter account. TM The account retweeted the tweet.

[0071] At time T8, the PIAR management application notifies the administrator of the blocked content. The administrator is responsible for managing the whitelist of trusted users associated with PIAR. Based on the notification, the administrator can review the tweet and determine if the user who posted it should no longer be on the whitelist. PIAR is allowed to continue operating, but inappropriate content continues to be blocked based on PIAR restrictions, and the administrator may take remedial action as needed.

[0072] 5. Other matters; extension

[0073] The embodiments are directed to a system having one or more devices, which include a hardware processor and are configured to perform any of the operations described herein.

[0074] In an embodiment, the non-transitory computer-readable storage medium includes instructions that, when executed by one or more hardware processors, cause any of the operations described herein to be performed.

[0075] According to embodiments, any combination of the features and functions described herein may be used. In the foregoing description, embodiments have been described with reference to numerous specific details that vary depending on the implementation. Therefore, the description and drawings should be considered illustrative rather than restrictive. The sole and exclusive reference to the scope of the invention, and what the applicant intends to define as the scope of the invention, is the literal and equivalent scope of the set of claims issued in this application, in the specific form of such claims, including any subsequent corrections.

[0076] 6. Hardware Overview

[0077] According to one embodiment, the techniques described herein are implemented by one or more dedicated computing devices. The dedicated computing device may be hardwired to execute the techniques, or may include digital electronic devices permanently programmed to execute the techniques, such as one or more application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or network processing units (NPUs), or may include one or more general-purpose hardware processors programmed to execute the techniques according to program instructions in firmware, memory, other storage devices, or combinations thereof. Such a dedicated computing device may also implement the techniques by combining custom hardwired logic, ASICs, FPGAs, or NPUs with custom programming. The dedicated computing device may be a desktop computer system, a portable computer system, a handheld device, a networking device, or any other device that combines hardwired and / or program logic to implement the techniques.

[0078] For example, Figure 4 This is a block diagram illustrating a computer system 400 on which embodiments of the present invention may be implemented. The computer system 400 includes a bus 402 or other communication mechanism for transmitting information and a hardware processor 404 coupled to the bus 402 for processing information. The hardware processor 404 may be, for example, a general-purpose microprocessor.

[0079] Computer system 400 also includes main memory 406, such as random access memory (RAM) or other dynamic storage devices, coupled to bus 402 for storing information and instructions to be executed by processor 404. Main memory 406 may also be used to store temporary variables or other intermediate information during the execution of instructions to be executed by processor 404. When such instructions are stored in non-transitory storage media accessible to processor 404, such instructions make computer system 400 a dedicated machine customized to perform the operations specified in the instructions.

[0080] The computer system 400 also includes a read-only memory (ROM) 408 or other static storage device coupled to the bus 402 for storing static information and instructions of the processor 404. A storage device 410, such as a disk or optical disk, is provided and coupled to the bus 402 for storing information and instructions.

[0081] Computer system 400 may be coupled via bus 402 to a display 412, such as a cathode ray tube (CRT), for displaying information to a computer user. Input device 414, including alphanumeric keys and other keys, is coupled to bus 402 for transmitting information and command selections to processor 404. Another type of user input device is a cursor control 416, such as a mouse, trackball, or arrow keys, for transmitting directional information and command selections to processor 404 and for controlling cursor movement on display 412. Such input devices typically have two degrees of freedom on two axes (a first axis (e.g., x) and a second axis (e.g., y)) to allow the device to specify a position in a plane.

[0082] Computer system 400 may implement the techniques described herein using custom hard-wired logic, one or more ASICs or FPGAs, firmware, and / or program logic, which, in combination with the computer system, enable computer system 400 to become a special-purpose machine or to program computer system 400 as a special-purpose machine. According to one embodiment, the techniques herein are executed by computer system 400 in response to processor 404 executing one or more sequences of one or more instructions contained in main memory 406. These instructions may be read into main memory 406 from another storage medium, such as storage device 410. Execution of the sequence of instructions contained in main memory 406 causes processor 404 to perform the processing steps described herein. In alternative embodiments, hard-wired circuitry may be used instead of software instructions or in combination with software instructions.

[0083] As used herein, the term "storage medium" refers to any non-transitory medium that stores data and / or instructions that enable a machine to operate in a particular manner. Such storage media can include non-volatile media and / or volatile media. Non-volatile media include, for example, optical discs or magnetic disks, such as storage device 410. Volatile media include dynamic memory, such as main memory 406. Common forms of storage media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tape or any other magnetic data storage media, CD-ROMs, any other optical data storage media, any physical media with a perforated pattern, RAM, PROMs and EPROMs, FLASH-EPROMs, NVRAMs, any other memory chips or cassette tapes, content-addressable memory (CAM), and tri-state content-addressable memory (TCAM).

[0084] Storage media differ from transmission media but can be used in conjunction with them. Transmission media participate in the transfer of information between storage media. For example, transmission media include coaxial cables, copper wires, and optical fibers, including wires containing bus 402. Transmission media can also take the form of sound waves or light waves, such as those generated during radio wave and infrared data communication.

[0085] Various forms of media can involve carrying one or more sequences of instructions to processor 404 for execution. For example, the instructions may initially be carried on a disk or solid-state drive of a remote computer. The remote computer may load the instructions into its dynamic memory and transmit them over a telephone line using a modem. A modem local to computer system 400 may receive data over the telephone line and convert the data into an infrared signal using an infrared transmitter. An infrared detector may receive the data carried in the infrared signal, and appropriate circuitry may place the data on bus 402. Bus 402 carries the data to main memory 406, from which processor 404 retrieves and executes the instructions. The instructions received by main memory 406 may optionally be stored on storage device 410 before or after execution by processor 404.

[0086] Computer system 400 also includes a communication interface 418 coupled to bus 402. Communication interface 418 provides bidirectional data communication coupled to network link 420, which is connected to local network 422. For example, communication interface 418 may be an Integrated Services Digital Network (ISDN) card, a cable modem, a satellite modem, or a modem providing data communication connectivity to a corresponding type of telephone line. As another example, communication interface 418 may be a LAN card providing data communication connectivity to a compatible local area network (LAN). A wireless link may also be implemented. In any such implementation, communication interface 418 transmits and receives electrical, electromagnetic, or optical signals carrying streams of digital data representing various types of information.

[0087] Network link 420 typically provides data communication to other data devices via one or more networks. For example, network link 420 may provide a connection to host computer 424 or to data devices operated by Internet Service Provider (ISP) 426 via local network 422. ISP 426, in turn, provides data communication services via a global packet data communication network now commonly referred to as the "Internet" 428. Both local network 422 and Internet 428 use electrical, electromagnetic, or optical signals that carry digital data streams. Signals through various networks, as well as signals on network link 420 and through communication interface 418, are example forms of transmission media that carry digital data to or from computer system 400.

[0088] Computer system 400 can send messages and receive data, including program code, through one or more networks, network links 420, and communication interfaces 418. In the Internet example, server 430 can transmit requested code for the application through the Internet 428, ISP 426, local network 422, and communication interface 418.

[0089] The received code can be executed by processor 404 when it is received, and / or stored in storage device 410 or other non-volatile storage device for later execution.

[0090] 7. Computer networks and cloud networks

[0091] In one or more embodiments, a computer network provides connectivity between a set of nodes. Nodes may be local to each other and / or geographically distant. Nodes are connected via a set of links. Examples of links include coaxial cable, unshielded stranded cable, copper cable, fiber optic cable, and virtual links.

[0092] A subset of nodes implements a computer network. Examples of such nodes include switches, routers, firewalls, and Network Address Translation (NAT). Another subset of nodes uses a computer network. Such nodes (also called "hosts") can execute client processes and / or server processes. Client processes make requests for computing services, such as the execution of a specific application and / or the storage of a specific amount of data. Server processes respond by performing the requested service and / or returning the corresponding data.

[0093] A computer network can be a physical network, including physical nodes connected by physical links. A physical node is any digital device. A physical node can be a function-specific hardware device, such as a hardware switch, hardware router, hardware firewall, and hardware NAT. Additionally or alternatively, a physical node can be a general-purpose machine configured to run various virtual machines and / or applications performing corresponding functions. A physical link is the physical medium connecting two or more physical nodes. Examples of links include coaxial cable, unshielded stranded cable, copper cable, and fiber optic cable.

[0094] Computer networks can be overlay networks. An overlay network is a logical network implemented on top of another network (such as a physical network). Each node in an overlay network corresponds to a corresponding node in the underlying network. Therefore, each node in an overlay network is associated with both an overlay address (addressing to the overlay node) and an underlying address (addressing the underlying node that implements the overlay node). Overlay nodes can be digital devices and / or software processes (such as virtual machines, application instances, or threads). The links connecting overlay nodes are implemented as tunnels through the underlying network. Overlay nodes at either end of the tunnel treat the underlying multi-hop path between them as a single logical link. Tunneling is performed through encapsulation and decapsulation.

[0095] In this embodiment, the client may be located locally on the computer network and / or remotely on the computer network. The client may access the computer network via other computer networks, such as a private network or the Internet. The client may use a communication protocol, such as Hypertext Transfer Protocol (HTTP), to transmit requests to the computer network. Requests may be transmitted through interfaces such as client interfaces (such as web browsers), program interfaces, or application programming interfaces (APIs).

[0096] In this embodiment, a computer network provides connectivity between clients and network resources. Network resources include hardware and / or software configured to execute server processes. Examples of network resources include processors, data storage devices, virtual machines, containers, and / or software applications. Network resources are shared among multiple clients. Clients independently request computing services from the computer network. Network resources are dynamically allocated to requesting and / or clients on demand. The network resources allocated to each requesting and / or client can be scaled up or down based on, for example, (a) computing services requested by a specific client, (b) aggregated computing services requested by a specific tenant, and / or (c) the requested aggregated computing services of the computer network. Such a computer network may be referred to as a "cloud network."

[0097] In this embodiment, the service provider offers a cloud network to one or more end users. The cloud network can implement various service models, including but not limited to Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS). In SaaS, the service provider offers end users the ability to use applications running on the service provider's network resources. In PaaS, the service provider offers end users the ability to deploy custom applications to network resources. Custom applications can be created using programming languages, libraries, services, and tools supported by the service provider. In IaaS, the service provider offers end users the ability to provision processing, storage, networking, and other basic computing resources provided by the network resources. Any application, including operating systems, can be deployed on the network resources.

[0098] In embodiments, computer networks can implement various deployment models, including but not limited to private clouds, public clouds, and hybrid clouds. In a private cloud, network resources are provisioned to a specific group of entities for exclusive use (as used herein, "entity" refers to a business, organization, individual, or other entity). Network resources can be local to or remote from the premises of the specific group of entities. In a public cloud, cloud resources are provisioned to multiple entities (also referred to as "tenants" or "customers") that are independent of each other. The computer network and its network resources are accessed by clients corresponding to different tenants. Such a computer network can be referred to as a "multi-tenant computer network." Several tenants can use the same specific network resources at different times and / or at the same time. Network resources can be local to or remote from the tenant's premises. In a hybrid cloud, the computer network includes both private and public clouds. The interface between the private and public clouds allows for the portability of data and applications. Data stored in the private cloud and data stored in the public cloud can be exchanged through the interface. Applications implemented in the private cloud and applications implemented in the public cloud may be interdependent. You can use the interface to make calls from an application in a private cloud to an application in a public cloud (and vice versa).

[0099] In this embodiment, the tenants of a multi-tenant computer network are independent of each other. For example, one tenant's business or operations may be separate from those of another tenant. Different tenants may have different network requirements for the computer network. Examples of network requirements include processing speed, data storage capacity, security requirements, performance requirements, throughput requirements, latency requirements, resilience requirements, quality of service (QoS) requirements, tenant isolation, and / or consistency. The same computer network may need to meet the different network requirements demanded by different tenants.

[0100] In one or more embodiments, in a multi-tenant computer network, tenant isolation is implemented to ensure that applications and / or data from different tenants are not shared with each other. Various tenant isolation methods can be used.

[0101] In this embodiment, each tenant is associated with a tenant ID. Each network resource in a multi-tenant computer network is tagged with a tenant ID. A tenant is only allowed access to a specific network resource if the tenant and the specific network resource are associated with the same tenant ID.

[0102] In this embodiment, each tenant is associated with a tenant ID. Each application implemented by the computer network is tagged with a tenant ID. Additionally or alternatively, each data structure and / or dataset stored by the computer network is tagged with a tenant ID. A tenant is allowed access to a specific application, data structure, and / or dataset only if the tenant and the specific application, data structure, and / or dataset are associated with the same tenant ID.

[0103] As an example, each database implemented in a multi-tenant computer network can be identified by a tenant ID. Only the tenant associated with the corresponding tenant ID can access the data in a specific database. As another example, each entry in a database implemented in a multi-tenant computer network can be identified by a tenant ID. Only the tenant associated with the corresponding tenant ID can access the data in a specific entry. However, the database can be shared by multiple tenants.

[0104] In this embodiment, the subscription list indicates which tenants are authorized to access which applications. For each application, a list of tenant IDs of tenants authorized to access that application is stored. A tenant is only allowed to access a specific application if its tenant ID is included in the subscription list corresponding to that specific application.

[0105] In this embodiment, network resources (such as digital devices, virtual machines, application instances, and threads) corresponding to different tenants are isolated to tenant-specific overlay networks maintained by a multi-tenant computer network. As an example, data packets from any source device within a tenant overlay network can be sent only to other devices within the same tenant overlay network. Encapsulation tunnels are used to prevent any transmission from a source device on one tenant overlay network to devices in other tenant overlay networks. Specifically, data packets received from the source device are encapsulated within an outer data packet. The outer data packet is sent from a first encapsulation tunnel endpoint (communicating with the source device in the tenant overlay network) to a second encapsulation tunnel endpoint (communicating with the destination device in the tenant overlay network). The second encapsulation tunnel endpoint decapsulates the outer data packet to obtain the original data packet sent by the source device. The original data packet is then sent from the second encapsulation tunnel endpoint to the destination device within the same specific overlay network.

[0106] In the foregoing description, embodiments of the invention have been described with reference to numerous specific details that vary depending on the implementation. Therefore, the description and drawings should be considered illustrative rather than restrictive. The sole and exclusive reference to the scope of the invention, and what the applicant intends to define as the scope of the invention, is the literal and equivalent scope of the set of claims issued in this application, in the specific form of such claims, including any subsequent corrections.

Claims

1. A non-transitory computer-readable medium comprising instructions that, when executed by one or more hardware processors, cause the execution of operations, the operations including: Authenticated users of the PIAR management application, via the plug-in application recipe, receive PIAR licenses. The PIAR license applies to multiple users of the PIAR management application. The PIAR management application stores information indicating that the authenticated user has permission to enable PIAR functionality for at least the plurality of users, wherein the PIAR functionality includes automatically executing a prescribed action in response to the fulfillment of a trigger condition. The PIAR management application manages PIAR definitions, and each PIAR definition is identified as follows: (a) A trigger, wherein one or more trigger variables of the trigger are exposed to the PIAR management application by a first plug-in application, the values ​​of the one or more trigger variables being necessary for continuous evaluation of the trigger, wherein an instance of evaluating the trigger includes determining whether a restricted characteristic condition is satisfied based at least in part on one or more values ​​of the one or more trigger variables, wherein the one or more trigger variables satisfying the restricted characteristic condition include one or more of the following: Any personally identifiable information, Private company information, or Unauthorized communications originating from private computing devices, and (b) An action for which the second plug-in application exposes an interface to the PIAR management application to enable the second plug-in application to perform the action, wherein an instance of evaluating the action includes performing the action based on one or more values ​​of one or more input variables input to the action in the PIAR definition. The PIAR management application conditions the action on the ongoing trigger, and The PIAR license identifies permitted functions of the PIAR management application. If these functions are not permitted, they will be unavailable to any specific user among the plurality of users who has an active account for a specific plug-in application. Once the specific plug-in application is linked to the specific user and associated with a specific PIAR in the PIAR management application, at least some of the permitted functions will not be available without the PIAR license. The permitted functions of the PIAR management application include one or more of the following: allowing the creation of PIARs or allowing the activation of PIARs; and The PIAR license is stored, wherein the PIAR management application stores information for allowing the permitted functionality.

2. The medium according to claim 1, wherein, Based on the PIAR license, the PIAR management application allows the permitted functionality during the execution of the specific PIAR.

3. The medium according to claim 1, wherein, Based on the PIAR license, the PIAR management application displays data exposed to PIAR by the specific plug-in application and having permitted characteristics.

4. The medium according to claim 1, wherein, When the permitted function is executed, the PIAR management application generates a notification.

5. The medium according to claim 1, wherein, Based on the PIAR license, the PIAR management application enables active PIARs that use the permitted functions.

6. The medium according to claim 1, wherein, Based on the PIAR license, the PIAR management application enables a graphical user interface (GUI) element. If the GUI element is not enabled, the allowed functions will be unavailable to the multiple users.

7. The medium according to claim 1, wherein, Based on the PIAR license, the PIAR management application allows the active account to be linked to the specific user within the PIAR management application.

8. The medium according to claim 1, wherein, Based on the PIAR license, the PIAR management application allows specific operations of the specific plug-in application.

9. The medium according to claim 1, wherein, Based on the PIAR license, the PIAR management application allows interaction between the specific plugin application and different plugin applications via the PIAR management application.

10. The medium according to claim 1, wherein, Based on the PIAR license, the PIAR management application allows interaction between a first operation of a specific plug-in application and a second operation of different plug-in applications.

11. The medium according to claim 1, wherein, The PIAR license is based on legal and compliance rules.

12. The medium according to claim 1, wherein, The PIAR license is based on the authorization level of the multiple users of the PIAR management application.

13. The medium according to claim 1, wherein, The PIAR management application implements PIAR licensing based on an optimistic constraint model, where PIAR functionality is permitted unless explicitly restricted.

14. The medium according to claim 1, wherein, Based on the PIAR license, the PIAR management application allows the execution of the specific PIAR when the execution of the specific PIAR will not exceed the threshold expenditure.

15. The medium according to claim 1, wherein, The PIAR license is based on a specific ordering of operations within that particular PIAR.

16. A method comprising: Authenticated users of the PIAR management application, via the plug-in application recipe, receive PIAR licenses. The PIAR license applies to multiple users of the PIAR management application. The PIAR management application stores information indicating that the authenticated user has permission to enable PIAR functionality for at least the plurality of users, wherein the PIAR functionality includes automatically executing a prescribed action in response to the fulfillment of a trigger condition. The PIAR management application manages PIAR definitions, and each PIAR definition is identified as follows: (a) A trigger, wherein one or more trigger variables of the trigger are exposed to the PIAR management application by a first plug-in application, the values ​​of the one or more trigger variables being necessary for continuous evaluation of the trigger, wherein an instance of evaluating the trigger includes determining whether a restricted characteristic condition is satisfied based at least in part on one or more values ​​of the one or more trigger variables, wherein the one or more trigger variables satisfying the restricted characteristic condition include one or more of the following: Any personally identifiable information, Private company information, or Unauthorized communications originating from private computing devices, and (b) An action for which the second plug-in application exposes an interface to the PIAR management application to enable the second plug-in application to perform the action, wherein an instance of evaluating the action includes performing the action based on one or more values ​​of one or more input variables input to the action in the PIAR definition. The PIAR management application conditions the action on the ongoing trigger, and The PIAR license identifies permitted functions of the PIAR management application. If these functions are not permitted, they will be unavailable to any specific user among the plurality of users who has an active account for a specific plug-in application. Once the specific plug-in application is linked to the specific user and associated with a specific PIAR in the PIAR management application, at least some of the permitted functions will not be available without the PIAR license. The permitted functions of the PIAR management application include one or more of the following: allowing the creation of PIARs or allowing the activation of PIARs; and The PIAR license is stored, wherein the PIAR management application stores information for allowing the permitted functionality.

17. The method according to claim 16, wherein, Based on the PIAR license, the PIAR management application allows the permitted functionality during the execution of the specific PIAR.

18. The method according to claim 16, wherein, Based on the PIAR license, the PIAR management application displays data exposed to PIAR by the specific plug-in application and having permitted characteristics.

19. The method of claim 16, wherein, When the permitted function is executed, the PIAR management application generates a notification.

20. The method of claim 16, wherein, Based on the PIAR license, the PIAR management application enables active PIARs that use the permitted functions.

Citation Information

Patent Citations

  • Method and system for managing access to add-on data files

    CN101523398A

  • Multi-factor authentication to achieve required authentication assurance level

    CN105144656A