1. Field of the Embodiments
The embodiments relate generally to computer-implemented technologies for business rule creation and implementation, and, more specifically, to systems and methods for modifying rules in a cloud computing and locally implementing the modified rules.
2. Background
Companies often use business software solutions that help organize and streamline their business by improving insight, efficiency, and flexibility. These business solutions, such as enterprise software solutions, solutions for small businesses and midsize companies, on-demand solutions, and others are built on platforms that consolidate data, which simplifies the IT environment and reduces operational costs. This, in turn, frees resources to focus on strategic, innovative solutions.
One common component of such a business software solution is a business rule engine. The business rule engine is used to design and run business rules that are tailored to the particular system. A business rule may, for example, be used to detect that a particular business situation has occurred or to analyze whether or not information provided to the system meets certain criteria (e.g., checking whether a loan meets underwriting criteria). Product or service pricing may also be specified or determined by business rules. Other types of business rules, sometimes called work flow rules, may check for and/or respond to events affecting the actual business process (e.g., detecting a routing point overload and specifying what to do about it).
Business rules may change much more often than other aspects of the business system. For example, pricing may change weekly or even daily in some businesses. Because business rules typically change more often that the rest of the business application code, a business rules design component may allow companies to change their business rules as needed with minimal IT intervention.
However, technical releases and updates for the business rules engine are often bundled with updates for the other components of the business software solution, including various technical features. This bundling forces the customer (e.g., company running the business) to update the technical features of the system in addition to the business rules engine. Updating the entire solution may be very expensive for the customer, both in terms of costs to purchase (or license) and costs to implement, particularly in complex business systems. Because business rules are updated more often than the other parts of the system, it is often most important that the customer has the most up-to-date rules engine, thus creating a tension as to whether to update the entire business solution (i.e., software solution and/or hardware).
In the past, business rules engines have not been provided by remote Internet-based solutions. Other types of applications have been provided using Internet-based computing called “cloud computing,” which involves supplying resources and software to computers on demand, analogous to an electricity grid. But cloud computing has never been used to provide business rule engines because of the inefficiencies that would be introduced by providing different parts of the business system at different geographic locations. Business rule execution is highly performance-critical, and therefore business rules are typically run as locally as possible to the backend data that is used by the rules. The extra time required for remote operation of the rules, aggregated over the massive number of transactions that take place in some business systems, has made remote rule invocation prohibitive.
Therefore, a need exists for providing an updatable business engine component separately from the technical environment in which the rules run, without sacrificing efficiencies when the business system is running.
Accordingly, systems and methods are provided herein for creating business rules using remote cloud computing that are implemented locally in the local system (e.g., customer productive system) to which the rules belong.
Embodiments described herein include systems and methods for designing business rules in a remote computing cloud and implementing the rules on a local system (e.g., customer productive system). In one embodiment, the local system requests at least a portion of a rule design interface from a remote computing cloud. The portion of the rule design interface may be part of a remote application hosted and executed in the remote computing cloud. This remote application may be updated (i.e., upgraded) independently from the local system and local applications thereon. The local system then may receive, over a network (e.g., the Internet), a modified set of business rules from the remote computing cloud that were created via the rule design interface.
Once the modified business rules are received, the local system may integrate (e.g., compile) the modified set of rules to operate with a local business application with which the rules are designed to operate. The compiled modified rules may be stored on a local non-transient memory that is part of the local system.
Subsequent to compiling the modified rules, the local system then applies the modified rules to backend data to perform the business task during runtime of the local business application.
Another embodiment described herein includes a computer-implemented method that is implemented by one or more processors of a computing cloud. The method may include receiving a request for at least a portion of a rule design interface, the request including an indicator related to a backend system in which the rules will operate, the backend system being remote from the computing cloud, wherein the backend system is one of a plurality of systems that utilize the computing could for rule design. The computing cloud may, in one embodiment, locate a current set of rules in a database by using the received indicator.
In response to the request, the method may include providing a rule design interface populated with a current set of rules related to the indicator. Then, modifications may be received, and the set of rules may be modified accordingly in the computing cloud. The modified set of rules may be stored in a database in the computing cloud in one embodiment. The rule design interface and the underlying rule design application may be updated in the computing cloud independently of the local systems that the rule design application provides rules to.
The method may also include creating a file representing the modified set of rules by utilizing the indicator to identify a programming language and/or structure that is usable by the remote backend system. In one embodiment, the method may
In addition to computer-implemented methods, embodiments disclosed herein include a non-transitory tangible computer-readable medium and a system that includes a processor.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the embodiments, as claimed.
The accompanying drawings, which are incorporated in and constitute a part of this disclosure, illustrate various embodiments and aspects of the present invention. In the drawings:
Reference will now be made in detail to the present exemplary embodiments, including examples illustrated in the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts.
Exemplary embodiments herein allow a local system to utilize a rule design component that is located remotely in a computing cloud, while still running the resulting set of rules locally. In one embodiment, the local system requests at least a portion of a rule design interface, which runs and/or is provided as part of an remote rule design application stored and executed in the remote computing cloud. A modified set of rules, therefore, may be designed by accessing the rule design application remotely. The same rule design application (e.g., component) may serve multiple different systems. Additionally, the rule design application may be updated independently from applications on local systems that implement the rules created with the rule design application, which effectively separates the costs of updating a rules engine from the costs of updating other aspects of the local system.
In one embodiment, the request from the local system includes an identifier that allows the computing cloud to identify a current set of rules, current format of the runtime application, a version of the runtime application, and/or distinguish the local system 110 from a plurality (e.g., hundreds or thousands) of other systems serviced by the computing cloud 138. With this information, the computing cloud may provide a modified set of rules that are compatible with the runtime application of the local system. This also allows the design time application of the computing cloud to service various different versions or and types of business applications for multiple different business customers.
By locally storing and implementing the remotely modified rules, the performance of the business system is improved compared to running the rules in the remote computing cloud. Running the rules remotely comes at a high cost for data transfer and rule invocations, because this is done via web services.
As used herein, “modified rules” may include completely new rules created for the first time in addition or in alternative to changes to pre-existing rules. A modified rule set may be any set of rules resulting from using the remote rule design interface.
As referred to above and herein, a “remote computing cloud” comprises one or more servers located remotely from a local system. The server(s) provide physical infrastructure and applications that are remotely accessed by a local system. Each server may comprise one or more non-transient computer-readable mediums and one or more processors.
As referred to above and herein, a “local system” may also comprise one or more servers. This server(s) may comprise at least one processor that executes instructions representing a business application. The business rules may be integrated (e.g., compiled) on this server(s) and can locally interact with the business application. The local system may comprise one or more non-transient computer-readable mediums and one or more processors.
As used herein, the term “local” may indicate that devices are connected directly to one another and/or connected over a local area network. The term “local” is also used for convenience herein to distinguish hardware that is not part of a computing cloud located remotely relative to a (local) system. It is understood that devices that connect to each other over the Internet, rather than directly or over a local area network (or similar), are not local to one another. On the other hand, the term “remote” may indicate that devices communicate with one another over the Internet or some other non-local network. Systems that communicate in this fashion are deemed “remote” from one another for convenience of discussion herein.
Embodiments herein include computer-implemented methods, tangible non-transitory computer-readable mediums, and systems. The computer-implemented methods may be executed, for example, by a processor that receives instructions from a non-transitory computer-readable storage medium. Similarly, a system described herein may include a processor and a memory, and the memory may be a non-transitory computer-readable storage medium. As used herein, a non-transitory computer-readable storage medium refers to any type of physical memory on which information or data readable by a processor may be stored. Examples include random access memory (RAM), read-only memory (ROM), volatile memory, nonvolatile memory, hard drives, CD ROMs, DVDs, flash drives, disks, and any other known physical storage medium. Singular terms, such as “memory” and “computer-readable storage medium,” may additionally refer to multiple structures, such a plurality of memories and/or computer-readable storage mediums. As referred to herein, a “memory” may comprise any type of computer-readable storage medium unless otherwise specified. A computer-readable storage medium may store instructions for execution by a processor, including instructions for causing the processor to perform steps or stages consistent with an embodiment herein. Additionally, one or more computer-readable storage mediums may be utilized in implementing a computer-implemented method. The term “computer-readable storage medium” should be understood to include tangible items and exclude carrier waves and transient signals.
The local system 110, in one embodiment, may be accessed by one or more user devices 175 over a network 130. The network 130 may be a local area network (LAN), or some other type of network, including the Internet. The user devices 175 may be used to retrieve and/or enter data 150 from and/or to the local system 110 by connecting, for example, to a frontend portion of the system. The local system 110 stores the data 150 in a backend portion 145 of the system 110, in a non-transient computer-readable medium such as a database of backend 145 (i.e., a repository). The backend portion 145 of the local system 110 may be accessible by administrators.
In this arrangement, the business application 170 may run on the local system 110, providing the business system's functionality. Although application 170 is referred to herein as a single application for simplicity, in an embodiment application 170 is a software solution comprising multiple interrelated applications that are used to run the business system. In one embodiment, a customer (e.g., a business) may purchase or license a business solution that includes application 170. Then, the customer may customize application 170 by creating rules 160 that define how the particular business system operates. A portion of the application(s) 170 may run as part of the backend portion 145 of the system, accessible by administrators. Another portion of the application 170 may run in a frontend, providing a means for the public or other types of users to access features of the business. In some instances, other applications 170 includes a frontend component or application, such as a web interface for running reports and other business tasks.
User devices 175 may be connected to the local system to allow users to perform particular business functions. For example, a user might access a frontend portion of application 170 to execute reports. The reports, in turn, may use backend processes, such as stored procedures using business rules 160 on data 150 in the backend portion 145 of the local system 110. In another embodiment, a user device 175 may input information into local system 110. For example, sales information may be entered as part of an ordinary business transaction, which may trigger the use of one or more rules 160, and result in sales data being stored as data 150 in the backend portion 145 of the local system 110. Business rules 160 may also be used, for example, in validating and/or interpreting data input into the local system 110. The business rules 160 may also be used in conjunction with the data 150 to carry out various other business tasks executed by the application 170. In general, the business rules 160 customize the operation of the application 170 and help distinguish the particular business system of one user from business systems of other users.
In one embodiment, the business rules 160 are also stored in the backend portion 145 of the local system 110. By executing the business rules 160 in close proximity to the data 150, performance of the local system 110 generally may be increased.
In one embodiment, the local system 110 may connect to remote computing cloud 138 over the Internet. The local system 110 may exchange information with the remote computing cloud 138 using a secure network service 140. The specific type of secure network service 140 used may vary among embodiments. The secure connection may include the use of certificate tokens, encryption, virtual private networks, and other known methods of creating a secure connection. The exchange of information may include a plurality of remote procedure calls between the local system 110 and remote computing cloud 138.
In one embodiment, the local system 110 requests at least a portion of a rule design interface from a remote computing cloud 138. The rule design interface provides a user with the ability to modify and/or create business rules for use in a local system. To this end, the specific functionality and graphical layout of the rule design interface may vary between embodiments. In one aspect, the rule design interface of the remote computing cloud 138 may be altered, updated, and even dramatically changed without any update to the application 170 of the local system 110.
The requested portion of the rule design interface may be all or part of a design time application 180 hosted and executed in the remote computing cloud for creating and/or modifying business rules. For example, the entire rule design interface (i.e., the entire portion) can be executed and provided by the computing cloud 138 in one embodiment. In other words, the rule design interface may be completely rendered within the cloud in one embodiment. Alternatively, at least a portion of the rule design interface can be rendered locally, utilizing information received from the remote computing cloud 138. For example, the remote computing cloud 138 may provide a decision table (or data to populate a decision table) in one embodiment, and the graphical portions of the rule design interface may be rendered locally.
In one embodiment, the rule design interface 200 (i.e., the entire portion) is completely rendered in the remote computing cloud 138. In another embodiment, a smaller portion of the rule design interface 200 is rendered in the remote computing cloud 138. For example, in one embodiment the remote computing cloud provides the decision table 210 to the local system 110, which implements the decision table 210 into locally-executed graphical framework of the rule design system. In another embodiment, different servers within the cloud 138 are responsible for different portions of the rule design interface, for example, so that different portions of the rule design interface can be changed or updated independently from one another.
In one aspect, the requested rule design interface is presented to a user to appear as if the design time application is part of the application(s) 170 of the local system 110 even when it is rendered remotely. For example, the rule design interface may be embedded into a screen that includes local system 110 information and/or
Additionally, the permissible interactions between the local system 110 and remote computing cloud 138 may vary between embodiments. For example, in one embodiment the service 140 allows the computing cloud 138 to make remote procedure calls on the local system 110. Remote procedure calls can allow the computing cloud 138 to inspect the local system, for example, to determine at least one attribute of application 170 that can be used in providing a customized and/or compatible portion of the rule design interface.
In one embodiment, the computing cloud 138 can execute a remote procedure call to request the fields of the data dictionary and/or schema used by the system 110 in running the business application 170. By obtaining the data dictionary, the computing cloud 138 may, in one aspect, generate a decision table that can be used for modifying (e.g., creating, deleting, or editing) rules that comport with the data infrastructure of the system.
The remote procedure calls can also be used to request the values of the fields (i.e., one type of application attribute) in one embodiment. The current values can be used to populate a decision table so that the user can modify the current rules used by application 170 and system 110.
In this way, in one embodiment, the business rules may be uploaded from the local system and processed on an as-needed basis in the computing cloud. For example, the rule design interface may be displayed to a user of the local system 110 as if it is part of the software solution 165. When the user selects a set of rules to modify that are located on the local system 110, the local system 110 may automatically upload all or part of rules to be modified to the remote computing cloud 138 for modification using the design time application.
In another aspect, the local system 110 may provide a rules identifier (i.e., another type of application attribute) to the remote computing cloud 138 that identifies the local system's 110 current rule set, in one embodiment. The rule set identifier may be used by the remote computing cloud to locate the current set of rules of the local system in a remote database that stores rule sets for multiple different systems. Storing at least a blueprint of the rules remotely may cut down on uploading delays when future iterations of rule design are performed from the local system 110. Once the rules are located, information from the rules may be incorporated into the rule design interface that is displayed to a user of the local system 110.
In still another embodiment, the computing cloud 138 can execute a remote procedure call to obtain information about (or an attribute indicating) the current version of application 170. This may include having the local system 110 provide a version identifier to the remote computing cloud 138 to identify the version of application(s) 170 that runs the business rules. The identifier can allow the design time application 180 in the remote computing cloud 138 to provide a modified rule set that is compatible with the runtime application 170 of the local system 110 (e.g., using the correct programming language, schema, etc.). More particularly, the runtime application 170 may have several different versions released over time, and the version identifier allows the design time application to create rules compatible with the particular version of the runtime application residing on the local system 110. In one embodiment, an application programming interface may provide a template from which the remote computing cloud may design the rules, in one embodiment.
In an alternate embodiment, the version of the application 170 (i.e., one type of application attribute) is sent to the computing cloud 138 by the system 110 when the system 110 requests a portion of the rule design interface. As an example, the request may include metadata that allows the computing cloud 138 and/or design application 180 to identify characteristics of the requesting system 110 and maintain compatibility with that system 110.
In one embodiment, the version identifier may be used by the remote computing cloud 138 to distinguish between different types of applications that may be used on a local system. For example, the version identifier might indicate that local system 110 utilizes a SAP runtime application compatible with ABAP code. In this instance, the remote computing cloud 138 could create a rule set written in ABAP code to be compatible with the runtime application 170. However, a second (and different) local system might submit a version identifier indicating a runtime application written in JAVA™. In this instance, the remote computing cloud 138 could utilize the version identifier to create a rule set written in JAVA code to be compatible with the JAVA runtime application.
In one embodiment, separate identifiers (i.e., attributes) may be provided for identifying the application type and the application version. Alternatively, a single version identifier may be used to identify both the specific application that will run the rules and the version of that application.
In this way, the remote computing cloud 138 may create at least one file in a compatible format, representing the modified set of rules created using the rule design interface. In one embodiment, the file comprises at least one class that represents the modified business rules. The class may be used by the application 170 to implement a modified business rule after the file is compiled at the local system 110. The class may contain definitions of various rule attributes that are utilized by application 170 (e.g., by stored procedures that are part of application 170). In another embodiment, the file is an executable that is run on the local system to unpack and/or integrate (e.g., compile) the rules. In yet another embodiment, the modified rule set 160 is provided in the form of stored procedures that are compiled by running them locally on a backend 145 database of the local system 110.
In one embodiment, the remote computing cloud sends the modified rule set 160 to the local system 110 to reside locally with the backend data 150. This may be facilitated using the secure network connection in one embodiment. In one aspect, the computing cloud 138 may make a remote procedure call to send the modified rule set to the local system 110 and integrate the modified rule set with application 170.
The exact location to which the file is delivered may vary in different embodiments. In one aspect, the application 170 specifies a particular location for modified rule sets to be delivered. This may be communicated to and/or determinable by the remote communication cloud 138 based on the version identifier. Additionally, the application 170 may be set up to automatically compile any new files found at the specific location when application 170 is no longer running. The compiled code may be stored on a non-transient memory that is part of the local system.
In another embodiment, the remote computing cloud schedules a job with the local system 110 to compile the file at a specific time, such as during system maintenance. This scheduling may be done as part of a remote procedure call in one aspect. In one embodiment, a user may select the specified compile time while using the rule design interface. In another embodiment, the compile time is scheduled on the local system 110 in response to receiving the file from the remote computing cloud 138. In this embodiment, the compilation may be completely automated.
Turning now to
At step 320, the local system may request a portion of a rule design interface from a remote computing cloud. This portion of the rule design interface may be stored and updated on the remote computing cloud 138 independently from the local business application 170. As previously mentioned, in one embodiment, the rule design interface, although hosted and executed in the cloud 138, may be presented to the user as if it is part of the local system 110.
The user may then manipulate the rule design interface to modify the rules (which may include creating new rules), which may be facilitated by the rule design application in the computing cloud 138 rather than on the local system 110.
At step 330, the local system 110 may receive, over a network, a modified set of rules from the remote computing cloud 138, the modified set of rules created via the computing cloud 138. As previously stated, this may be facilitated with a secure network service 140 that allows the remote computing cloud to securely send and receive information with the local system 110. Additionally, the modified set of rules may be provided as a file representing one or more classes recognized by the business application of the local system 110.
At step 340, the local system 110 may automatically compile the modified set of rules to operate with the local business application. The compiling operation may be performed during system downtime in one embodiment. In an embodiment where the modified rules are represented by one or more object classes, the compilation allows the application to instantiate modified business rules during the next runtime period.
At step 350, the modified rule set is implemented during runtime of the local system application. This may include using the modified business rules in conjunction with stored procedures to access and/or modify backend data in one embodiment.
Turning now to
At step 420, the remote computing cloud 138 provides a rule design interface to the local system 110 (i.e., a remote backend system from the perspective of the computing cloud) and/or user of the local system 110. In one embodiment, the provided rule design interface may be populated by the current set of rules used by the local system.
At step 430, the remote computing cloud may modify the set of rules (which may include creating a completely new set of rules) in accordance with inputs received in the rule design interface.
In one embodiment, the modifications made possible by the rule design interface may be restricted by an application programming interface associated with the application on the local system. The application programming interface may provide a template from which the remote computing cloud may design the rules, in one
At step 440, the remote computing cloud 138 may create a file representing the modified set of rules. The format of the file may be based on the version of the application on the local system, as previously described. Additionally, the format may be based on the application programming interface associated with the application on the local system in another aspect.
At step 450, the remote computing cloud 138 transfers the file(s) to the local system 110 (i.e., a remote backend system from the perspective of the computing cloud). In one embodiment, the file is transferred to a specific location specified by the local system (e.g., the application on the local system may have a rule download directory where the modified rule set is stored and retrieved for compilation).
Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims.