Computer systems are currently in wide use. Some computer systems are deployed by organizations, such as enterprise organizations, in order to assist the organization in performing its operations.
Some computer systems, of this type, can be modified before they are deployed at an end user organization. For instance, some systems are originally manufactured by a manufacturer. They can then be modified by an independent software vendor (ISV) or another developer to obtain a customized system. The customized system can then be sold to an end user organization, where it is even further customized before it is deployed.
At times, the computing system that is deployed at the end user may be replacing an existing solution that the organization is using. In that case, data from the existing system is sometimes entered into the new computing system.
In these types of scenarios, the base computing system manufactured by the computing system manufacturer may be a relatively generic system, that is not specific to any given industry. In order to set up an industry-specific application of the computing system, the end users or developers have often needed to carry out a great deal of configuration and customization of the generic system. Therefore, two different solutions that are generated for the same industry (even though they derive from the same base system), may be completely different, even though they are performing relatively similar functions, because they are both separately customized and configured from the base system. For instance, the operations for customizing the computing systems to that specific industry were repeated for each individual application, often by different people. Therefore, while the end solutions may operate similarly, they may be provided in a very different way.
This can cause in a wide variety of different problems as well. For instance, when the computing system manufacturer generates updates to the base system, applying updates to all the various instances of the customized applications can be difficult, time consuming and error prone because they are all different. This is the case even for two different customized applications in the same industry. Because they were developed and customized by different people, even though they perform relatively similar functions, they are different systems and therefore applying updates to each of them can be difficult as well.
The discussion above is merely provided for general background information and is not intended to be used as an aid in determining the scope of the claimed subject matter.
A solution package is configured for a given solution with computing system components from a base computing system. A data package is generated and included with the solution package for deployment to a given environment. A user deploy input is detected and the configured solution package is automatically deployed, along with the data package, to the given environment.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. The claimed subject matter is not limited to implementations that solve any or all disadvantages noted in the background.
The example shown in
Before describing the operation of architecture 100 in more detail, a brief overview will first be provided. It will also be noted that the components of the systems discussed (e.g., the package contents, rules, etc.) can be dynamic and can be continuously updated.
Solution package provider 114 may illustratively generate an industry-specific solution package 144 by customizing a base computing system 146. For instance, the base computing system 146 may be manufactured by a computing system manufacturer. It may be a relatively generic computing system that is meant to be customized for various industries, and for individual end user systems. As an example, the base system 146 may be a system that includes a scheduling system, an inventory management system, an electronic mail system, or a wide variety of other systems. It may be customized for individual industries, such as for the airline industry, the cosmetics industry, the wholesale product distribution industry, etc. The end user organizations in each of the individual industries may need highly similar functionality. Therefore, solution package provider 114 can customize the base system 146 by configuring it to provide that common set of similar functionality.
Once customized in this way, solution package 144 can be provided to solution package verification and distribution system 104. System 104 runs a verification system that verifies that the solution package 144 meets a set of requirements to be exposed to potential users.
After the verification system is run, system 104 provides a verification notification 147 to solution package provider 114. Notification 147 illustratively either indicates that the solution package 144 has been verified, or that it has not been verified, in which case notification 147 provides the reasons that it was not yet verified. Solution package provider 114 can then revise the solution package 144 and resubmit it for verification.
If it is verified, the solution package is exposed to a set of users that can access and review information about the solution package 144. In one example, solution package provider 114 can scope the various portions of solution package 144 so that they can be viewed by users on a restricted basis. For instance, solution package provider 114 may indicate that certain solution packages or certain portions of solution packages can only be reviewed by certain groups (such as people on the same team as solution package provider 114, people within the same organization, based on the roles of individuals in a given organization, or they can be marked as global, publicly available items that can be reviewed by anyone).
When an end user 122 selects one of the solution packages in system 104, system 104 provides a prospect notification 148 to solution package provider 114. Notification 148 illustratively provides contact information for the end user organization (e.g., the prospective user, or prospect) that selected the solution package 144 for deployment at its end user system 116. In that way, solution package provider 114 can contact the end user organization to prepare the solution package for deployment at the end user system 116. In one example, the deployment automatically (e.g., without substantially any other user input other than starting and perhaps verifying) deploys the solution in the prepared solution package in a given environment and enters data from a data package into the solution.
In one example, end users 122 are end users at an organization that uses a given solution or application. For instance, end user system 116 can include application component 124 that runs an application instance 126. It can also include one or more processors or servers 128, a user interface component 130, user source data store 132, and other items 136. User source data store 132 illustratively stores entities 134, metadata 136, processes 138, workflows 140, and it can include other items 142. It will be noted that the entities 134, processes 138, workflows 140, etc., can have their own metadata 136, or the metadata can be stored separately, or both. Entities 134 illustratively represent items within the computing system deployed at end user system 116 (such as within the application instance 126). Therefore, a product entity illustratively represents and describes a product. A vendor entity illustratively represents and describes a vendor, a purchase order entity illustratively defines and describes a purchase order, an electronic mail entity illustratively describes and defines an item of electronic mail, etc. The application component 124 illustratively runs application instance 126 which operates on entities 134 and performs processes 138, workflows 140, etc. The application instance 126 can be an electronic mail application instance, a document management application instance, or a wide variety of other application instances, or combinations of them, that can be deployed at an end user organization (which may be an enterprise organization).
It may happen that the end user organization may wish to deploy a different application instance (or solution) in end user system 116. For instance, the end user organization may be switching to a different solution, upgrading to a different solution, or deploying a new solution. In doing so, the end user organization (such as through end user 122 or another user) can access solution packages that have been generated by solution package provider 114 and that have been verified and exposed to user 122 within solution package verification and distribution system 104. The user can select one of the solution packages and use solution package deployment system 106 to deploy the solution package at end user system 116. In doing so, solution package deployment system 106 illustratively generates user input mechanisms that can be used to prepare a solution package for deployment in a specific end user system 116, and to prepare data packages that extract source data from user source data store 132 so that it can be loaded into the new solution deployed at end user system 116. All of this is described in greater detail below.
Architecture 100, and its various components will now be described in more detail. It will first be noted that although base system 146 is shown as part of solution package generation system 102, that need not necessarily be the case. Instead, it can be stored remotely or separately from system 102, and accessed by system 102. The same is true of other items stored in system 102.
System 102 illustratively includes one or more system asset libraries 150, processors or servers 152, test component 153, user interface component 154, environment configuration component 156, data configuration component 158, promotional material configuration component 160, model file configuration component 162, methodology configuration component 164, workflow configuration component 166, upload component 168, and it can include other items 170 as well.
Solution package verification and distribution system 104 illustratively includes one or more processors or servers 172, user interface component 174, verification component 176, verification rules 178, package distribution component 180, and verified package store 182 which, itself, illustratively includes a set of one or more verified solution packages 184. System 104 can include other items 186 as well.
Solution package deployment system 106 illustratively includes package selection component 188, deployment component 190, package maintenance component 192, data package generator 194, package preparation component 196, one or more processors or servers 198, user interface component 200, data store 202, and it can include other items 206.
It will also be noted that while each system 102-106 includes a user interface component, that need not be the case. Instead, when all of the systems are deployed on a product life cycle management system 108, it may be system 108 that provides the user interface component for all systems. The same thing can be true of the various data stores. That is, system 108 may provide the data stores for all of systems 102-106. Also, there may be a single set of processors or servers for system 108, instead of a different set for each system 102-106. It will be noted that the functionality of each of the items shown in
Referring again to solution package generation system 102, asset libraries 150 illustratively include one or more assets for base system 146. Therefore, solution package provider 114 can use and reuse various assets in order to customize base system 146. Environment configuration component 156 illustratively interacts with base system 146 and generates user interface displays, with user input mechanisms that allow solution package provider 114 to configure an environment for the solution package. Data configuration component 158 allows the user to configure pre-defined data for the solution package 144. For instance, it may be that each individual industry has a set of common data items that are often used in that industry. By way of example, if solution package 144 is for an airline, then the pre-defined data items may include such things as a list of aircraft, characteristics of each aircraft (such as its booking capacity, fuel capacity, range, speed, size, etc., among a wide variety of other things). Component 158 generates user interface displays with user input mechanisms that can be actuated to configure such pre-defined industry-specific data. Promotional material configuration component 160 illustratively allows solution package provider 114 to generate promotional material that can be included in solution package 144. The promotional material can be exposed by system 104 to potential end user organizations. Model file configuration component 162 illustratively allows solution package provider 114 to configure various model files in solution package 144. Methodology configuration component 164 allows solution package provider 114 to configure various methodologies that are used in preparing and deploying solution package 144. Workflow configuration component 166 illustratively generates user interface displays with user input mechanisms that allow solution package provider 114 to configure various workflows within solution package 144. Test component 153 allows provider 114 to test a solution package. Upload component 168 illustratively allows provider 114 to upload solution package 144 to system 104 for verification and distribution to end user systems.
With respect to solution package verification and distribution system 104, verification component 176 illustratively receives solution package 144 and parses it to identify its contents. It can access verification rules 178 to determine whether the contents of solution package 144 meet the various requirements embodied in rules 178, for verification. It will be noted that the verification rules 178 may vary based upon industry, or based upon other things. In addition, in one example, verification rules 178 do not require verification component 176 to access any of the proprietary information in solution package 144, that is proprietary to solution package provider 114. Instead, for instance, it may simply confirm the presence of content, but not the actual content itself. Package distribution component 180 illustratively exposes various parts of verified solution packages 184 that are stored in store 182. It illustratively allows end user organizations to browse through the various packages 184, to select them for potential deployment at their end user systems, among other things.
Solution package deployment system 106 allows either end user 122 or solution package provider 114 to select a given verified solution package 184 for preparation so that it can be deployed on end user system 116. For instance, where end user 122 has identified a solution package that it wishes to deploy on end user system 116, then prospect notification 148 illustratively notifies provider 114 of this. Provider 114 can then select that particular package 184 using package selection component 188 so that it can be prepared for deployment. Package preparation component 196 illustratively generates user interface displays with user input mechanisms that can be actuated by a user (such as user 122, provider 114, or another developer or user) to prepare the selected solution package for deployment. This can include making customized configurations for the particular end user, etc. Data package generator 194 illustratively generates user interface displays that can be actuated by the user to generate a data package. The metadata used by application instance 126 and stored in user source data store 132 is automatically pulled to identify the various entities, workflows, processes, etc. that are used in application instance 126. It presents that to the user for confirmation or modification, and then automatically pulls the user's data (e.g., from data store 132). It presents that data to the user for confirmation or modification as well. Deployment component 190 deploys the finally configured solution package to end user system 116. It then uses the data packages generated by generator 194 to import the customer's data into the deployed solution. Package maintenance component 192 illustratively generates user interface displays with user input mechanisms that allow a user to perform maintenance on the solution package.
The various components in system 102 then display package configuration user interface displays with configuration user input mechanisms that allow provider 114 to customize the base system 146 (or otherwise pre-configure it for a specific industry). This is indicated by block 218 in
The various components within system 102 then detect user interactions with the configuration user input mechanisms. This is indicated by block 240. System 102 then generates a solution package based upon the detected user interactions. This is indicated by block 242. The provider 114 can then use test component 153 to test the solution package to ensure that it works the way provider 114 wishes. This is indicated by block 244. This continues, as indicated by block 256 until upload component 168 detects an upload request from provider 114.
At this point, this indicates that provider 114 has configured solution package 144 to be a customized version of base system 146. It is customized to a pre-configured industry-specific customization so that it can be prepared and deployed at an end user system 116 in that particular industry. Solution package 144 can illustratively be re-used by multiple different organizations in that industry. This can significantly enhance the operation of those systems in uptaking updates, in performing upgrades, or in performing a wide variety of maintenance or operational tasks on the deployed solutions. This is because the solution package used by all of them is common.
When upload component 168 detects an upload request, then it uploads solution package 144 to solution package verification and distribution system 104. This is indicated by block 248. Verification component 176 then verifies the solution package 144 to determine whether it meets the requirements of being exposed to potential users in verified package store 182. This is indicated by block 250. If it is not verified, then verification component 176 provides verification notification 147 to provider 114 indicating that it has not been verified, and also indicating the reasons that it has not been verified. This is indicated by block 252.
However, if package 144 is verified, then verification component 176 also sends verification notification 147 to provider 114, but this time it indicates that the solution package has been verified. It then places the verified solution package in verified package store 182 where it appears as a verified package 184 and where it can be accessed through distribution component 180 by various end user organizations. This is indicated by block 256. In doing so, system 104 illustratively exposes the information in the verified package based on the scope set by provider 114. This is indicated by block 258. For instance, it may be that provider 114 has set a scope on certain portions of the information in package 144 indicating that those portions are only to be exposed to members of his or her own organization, his or her own team, certain roles within end user organizations, etc. Provider 114 may have set the scope on other information indicating that it is globally available or limited in other ways. System 104 can perform other operations in making the verified package available as well, and this is indicated by block 260.
At some point, users at an end user organization (such as user 122, a developer, etc.), will illustratively browse the packages 184 in system 104 looking for a new solution to deploy. When the user finds one, they can select it and package distribution component 180 then initiates a prospect notification 148 to provider 114. This is indicated by blocks 262 and 264 in
Before proceeding with a discussion of how the solution package is prepared and deployed at system 106, a more detailed description of how it is generated, verified, and reviewed and selected by end users will first be provided.
The example shown in
In the example shown in
Components 324 can also include a set of configure components that may include, for instance, configuration key lists 352, menu visibility information 354 and other information 356. The key lists 352 may indicate how the system is to be configured, once it is installed. This may identify such things as what search services are to be used, which localizations are to be deployed, which languages are supported, among a wide variety of other configuration keys.
When the environment setup components 324 have been configured, then data components 326 are configured. The particular data may be very different based upon the particular industry for which package 144 is being generated. By way of example, if it is being generated for a retail industry, the data components may include one set of data. However, if it is being generated for a manufacturing industry, the data components may be entirely different. However, within a given industry, the various solutions may use data items that are highly similar. Thus, data components 326 can pre-define a wide variety of different data items that may likely be used by end user organizations within a given industry. Components 326 can illustratively include industry-specific setup data 358, security roles 360, industry parameter data 362, master data records 364, a variety of different test scripts 366, and it can include other items 368. All of these data items may specifically configure package 144 for the target industry.
Solution package 144 may also include marketing collateral information 328. This is illustratively information that is surfaced by package distribution component 180 in solution package verification and distribution system 104. It is information that can be viewed by perspective end user organizations as they are looking for a given solution to deploy. Such information may include, for instance, a description of the solution 370, user manuals or user guides 372, provider contact information and details about the solution provider's company 374, pricing information 376 for various end user configurations that may deploy the solution package, fact sheets and case studies regarding the particular solution package 378, check lists and quick step guides or procedures 380 and a wide variety of other information 382.
Methodologies 330 can include such things as a series of steps on how the solution package 144 is to be used. This may be similar, for instance, to an automated instruction manual that indicates how to unpack and deploy solution package 144. Workflow sequences 332 may include a wide variety of information as to how workflows are organized or configured, and scope information 334 may set various scopes on the different portions of content within solution package 144.
Display 390 includes a solution package display portion 392, a code asset display portion 394, a configuration asset display portion 396, and it can include other items as well, such as methodology assets, process model assets, etc. Each portion 392-396 illustratively has a name section 398, and a scope section 400. Name section 398 illustratively includes a name of an asset within that display portion. For instance, solution package display portion 392 has name portion 398 that lists names of solution package assets that are available. Scope portion 400 includes an indicator as to the scope of availability for the individually named item. In display portion 392, for instance, scope portion 400 identifies whether the corresponding solution package named in section 398 is publically available, privately available, or available to a given organization. Each display portion 392-396 also illustratively has an accept mechanism 402, a reject mechanism 404, and a promote mechanism 406. Mechanisms 402 and 404 can be actuated by provider 114 to accept or reject assets from the library, respectively. Promote actuator 406 can be actuated by provider 114, and the asset library 150 then illustratively allows the user to promote a given asset to change its scope, to change environments or projects, etc.
It will be appreciated that
Package contents display portion 452, in the example shown in
Verification component 176 then accesses verification rules 178. This is indicated by block 482. As an example, component 176 may identify a particular industry for which solution package 144 has been generated. This can be used by verification component 176 to access a particular set of verification rules 178 that specify what content is to be included in a solution package, for that industry. In another example, the verification rules may vary based on the particular type of solution package that is being generated. Identifying the set of verification rules to apply to the received solution package in order to verify it is indicated by block 484. Identifying those rules based on the target industry is indicated by block 486. Identifying them based on solution type is indicated by block 488, and they can be identified in other ways as well, and this is indicated by block 490. Or, they can be the same rules for all packages. That is contemplated as well.
Verification component 176 then applies the identified verification rules to the received solution package. This is indicated by block 492. This can also be done in a wide variety of different ways. For instance, each solution package 144 may have certain portions that are used to compute a checksum. If the checksum computes properly, then the solution package is deemed to contain the items necessary to be verified. Computing a checksum is indicated by block 494. In another example, the verification rules that are being applied may simply map to required content within a solution package. Component 176 can then compare the contents of the solution package 144 to the required content to determine whether all required items are present. This is indicated by block 496. The solution package can be verified in other ways as well, and this is indicated by block 498.
In one example, all of the verification is performed automatically by component 176. In another example, however, there may be certain manual verifications that are performed as well. Thus, any manual verifications can be performed, and this is indicated by block 500.
Verification component 176 then determines whether the package meets the verification rules applied. This is indicated by block 502. If not, then provider 114 is notified with verification notification 147 that the solution package 144 has failed the verification process, and it also provides the reasons so that provider 114 can remedy those reasons. This is indicated by block 504.
If the solution package 144 is verified, then verification component 176 notifies provider 114 with the verification notification 147 and stores the verified package in the verified package store 182 for access by prospects. This is indicated by block 506 in
In order for a prospective user of a solution package (e.g., end user 122 or a developer, etc.) to browse through the various verified packages 184 that are available, the end user (also referred to herein as a prospect or prospective user) accesses solution package verification and distribution system 104 (also referred to as SPVD system 104). This is indicated by block 508 in
The prospect 122 will then be navigated through an experience by package distribution component 180, through which the prospect 122 can review the marketing content for the various solutions 184 that are available. In doing this, package distribution component 180 illustratively identifies the prospective user or characteristics of the prospective user. This is indicated by block 518. For instance, component 180 can identify the end user organization through which user 122 is accessing the packages 184. This is indicated by block 520. Component 180 can identify the user through the user's authentication information or other logon information, as indicated by block 522. The component 180 can ask the user for his or her identity, or otherwise obtain the identity of the prospect in other ways, as indicated by block 524.
Based upon the identity of the prospective user, page distribution component 180 illustratively exposes relevant solution packages 184 and their details for browsing by the prospective user. This can be done based upon the identity of the prospect or characteristics of the prospect, as well as based upon the scope of the information made available in the solution packages 184 that are being browsed. In other words, component 180 illustratively restricts access to the information in the solution packages 184 based upon the identity of the user or the user organization, and based upon the scope assigned to the information in the packages. This is indicated by block 526. Again, as briefly mentioned above, the scope of the content of the verified solution packages 184 can vary based upon the particular content. It can have a global scope 528 in which case anyone can view it. It can have an organizational or project scope 530 or 532, respectively, in which case the access to the content is restricted based upon the organization or project that the prospective user has access to. It can also be scoped based upon a given prospective user's role within an organization, as indicated by block 534. The access can be restricted based on other types of scope as well, and this is indicated by block 536.
In restricting the access, component 180 illustratively identifies the scope of the content for the various packages 184 and then looks up the relevant information about the prospective user (such as the user's organization, the projects he or she has access to, the role within a given organization, etc.) and determines whether the user meets the scope of the content. If so, the content is displayed by component 180. If not, the content is not displayed or made accessible to this particular prospective user.
In one example, package distribution component 180 also illustratively, and automatically, collects available information from the prospect regarding his or her browsing and navigation behavior, and other interactions with SPVD system 104. This is indicated by block 538. By way of example, it may be that a particular solution package 184 is only being viewed for a few seconds before prospective users navigate off of it in system 104. This may indicate that the promotional material included with that solution package is confusing or otherwise unattractive to prospective users. In that case, system 104 can notify the particular solution provider 114 that generated that solution package and give them feedback as to potential modifications that may enhance the solution package in the eyes of prospective users. A wide variety of other navigation information or user behavior information can be collected and used as well.
For instance,
At some point during the prospective user's browsing, and for the sake of the present description, it is assumed that the prospective user selects one of the verified solution packages 184 or initiates contact with a solution provider of one of those packages 184. This is indicated by block 566 in the flow diagram of
By way of example,
Once a prospective user has selected a solution package for deployment, the prospective user (and/or solution package provider 114) illustratively interacts with solution package deployment system 106 in order to prepare the solution package for deployment at the end user system 116, and to create the customer data records and import customer data into the deployed solution.
Data package generator 194, shown in
Beginning with an overall description of generating a data package, data package generator 194 first detects a user input indicating that the user wishes to prepare a data package in order to input data into a deployed solution package. This is indicated by block 580 in
Data package configuration/editing component 581 in generator 194 then displays a user interface display with storage settings user input mechanisms that allow the user to identify how and where the data is to be stored. This is indicated by block 588 in the flow diagram of
Metadata extraction component 583 then automatically detects configuration metadata from the selected environment. This is indicated by block 608. For instance, it can detect configuration metadata from the running application instance 126 identified by the prospective user as the environment. This is indicated by block 610. It can detect configuration metadata from the selected environment in other ways as well, and this is indicated by block 612. Metadata extraction component 583 can also illustratively generate a user interface display indicative of this.
Metadata extraction component 583 then generates an editable representation of the detected configuration metadata. This is indicated by block 616 in
It then displays the editable representation for user confirmation or modification. This is indicated by block 622. For instance, component 583 can generate a user input mechanism that allows the user to download the editable representation, modify it, and then upload it back to component 583. As one example, the user can download the spreadsheet, as indicated by block 624. Component 583 can display the editable representation in other ways as well, and this is indicated by block 626.
The user can then affirm or modify the editable representation of the configuration metadata, to ensure that it is the desired configuration metadata that is to be deployed with the new solution package that is being prepared. Receiving user modifications is indicated by block 628. This can be done by uploading the modified spreadsheet as indicated by block 630, or in other ways, as indicated by block 632.
Component 583 then displays a summary of the data that is going to be pulled from the running instance of the application 126 in the identified environment. This is indicated by block 644 in the flow diagram of
Setup data extraction component 585 can be part of metadata extraction component 583 or separate from it. For purposes of the present discussion it is shown separately. Component 585 extracts the setup data from the specified environment and pulls it into the data package being generated. This is indicated by block 654 in
For each of the processes enabled by the solution package, data extraction component 585 first selects one of those processes and accesses stored metadata on the running instance. Entity identifier 587 identifies a leading entity corresponding to the selected process. This is indicated by blocks 664 and 666 in
Hierarchy traversal component 589 then analyzes the underlying table data that makes up the leading entity to generate a table hierarchy graph of tables that correspond to the process of the leading entity. This is indicated by block 668 in
For each table encountered in the table relationships, a node in the table hierarchy graph is entered. By way of example, the tables may have references to one another, or the entity may have a reference to various tables. The relationship information will indicate a hierarchical arrangement of those tables for that particular entity. For instance, a customer entity may have a group of tables. One table may contain the customer name, and another table may contain the customer contact information. The customer contact information table may be dependent on an address table that contains the customer's address, as well as on a telephone number table that contains the customer's telephone number, etc. All of these types of relationships are analyzed to generate a table hierarchy graph that identifies the table, and their hierarchical relationship relative to one another.
The lower portion of
Data extraction component 585 then stores the hierarchy graph that was generated for the selected process. This is indicated by block 688. It then determines whether there are more processes as indicated by block 690 and, if so, processing reverts to block 664 where the next process is selected. If not, then data extraction component 585 illustratively stores the editable representation of the hierarchy graph so that it can be reviewed by the user and either approved or modified. This is indicated by block 692.
Before describing the deployment process in more detail, a number of additional user interface displays that can be generated by package preparation component 196 in order to prepare a package for deployment will first be described.
If the user actuates a different user input mechanism corresponding to a different implementation view, then the other information also changes.
Once deployment component 190 has successfully deployed the solution package, a user interface display can be generated to indicate this. For instance,
Deployment component 190 then parses the solution package being deployed, as indicated by block 786. It detects user inputs identifying an environment name and purpose for the deployment, as indicated by block 788. It obtains a base system, upon which the solution package was generated, and installs it in the identified environment. This is indicated by block 790. This may include an image of the base operating system as indicated by block 792, and other information as indicated by block 794.
It then joins the base system to the domain of the environment, from the prepared solution package, and sets up users of the deployed solution. This is indicated by block 796. The users can be generated based on user-entered data, as indicated by block 798, or otherwise as indicated by block 900.
It then installs any remaining environment components in the prepared solution package. This is indicated by block 902. For instance, they can include process component 904, deployment components 906, configuration components 908, or other components in the prepared solution package as indicated by block 910.
Deployment component 190 then installs any additional model files (or code) from the prepared solution package. This is indicated by block 912. It installs any additional client-server files, help files, etc., from the prepared solution package. This is indicated by block 914. It then completes the installation of the solution and marks it with a timestamp. This is indicated by block 916. It then compiles the installed solution as indicated by block 918 and finally performs post-deployment steps as indicated by block 920. At this point, the solution is fully deployed, and is available for use in the environment in which it was deployed (e.g., in the development environment, test environment, production environment, etc.).
Component 190 then restarts any desired parts of the deployed solution and verifies that they are up and running, after they are restarted. This is indicated by blocks 928 and 930, respectively.
It can then configure any desired performance switches as indicated by block 932. The performance switches are switches which can further modify or configure the operation of the deployed solution in order to enhance its performance. These performance switches can be predefined as indicated by block 934, or they can be derived or obtained elsewhere, as indicated by block 936.
Deployment component 190 then illustratively generates a provisioning report as indicated by block 938. This can include adding the provision environment to a management system that can be used to manage the deployed solution. This is indicated by block 940. Generating the provisioning report can include other steps as well, as indicated by block 942. Deployment component 190 can move customer-specific data into the deployed solution from the approved data packages. This is indicated by block 944.
Component 190 then creates and imports master data records for that legal entity. This is indicated by block 954. The master data records, for instance, may include master data records that are used by the end user organization. If the end user organization is an airline, for instance, then the master data records may include such things as plane types that are used by that airline, etc.
Component 190 then creates parameter records and imports the parameter data from the data package. This is indicated by block 956. Continuing on with the airline scenario, the parameter records may include such things as how much the airline will overbook its capacity for each type of airplane.
Component 190 then performs any additional configurations as indicated by block 958 and generates validation user interface displays, with validation user input mechanisms, so that the data can be validated before it is used. This is indicated by block 960. If it is not valid, then a user can modify it so that it can be validated. This is indicated by blocks 962 and 964 in
Component 190 then determines whether there are any more legal entities to create, and for which data is to be imported. This is indicated by block 966. If so, processing reverts to block 950. If not, however, then component 190 creates any documents and/or transactions, as well as the data for those, in the system. This is indicated by block 968. By way of example, just before the solution is to go live, all of the current documents and transactions being used on the existing instance of the application in the end user system need to be moved as well. This is so that users that are using those documents and transactions can continue to operate on them.
The present system thus provides significant advantages. The system enables a provider 114 to generate a solution package for a given industry that can be reused multiple times for different end user organizations in that industry. Because the end user organizations start from a common solution package, they can more easily and quickly deploy updates and perform maintenance on the system. This reduces errors and increases the efficiency of the computing system itself.
The verification and distribution system advantageously exposes the solution packages, on a restricted basis, to a variety of different end users. The end users can see different information, depending upon who they are, the organization they work for, their role within that organization, etc. This allows a plurality of end user organizations to browse available solutions at one location, without disclosing proprietary information of the providers 114. This significantly saves on the processing overhead for both the end user organizations and system 104, because the end user organizations need not navigate to a plurality of different provider sites, and the providers themselves need not host traffic in that way. This advantageously reduces network traffic and improves the efficiency of all systems involved.
Deployment system 106 advantageously deploys a solution package with virtually no interaction by a user. The user need only provide an input indicating that the prepared solution package is to be deployed, and it is automatically deployed. This greatly enhances the efficiency of the deployment system. It can deploy a solution based on a solution package in a fraction of the time that is needed to deploy a solution from a customized base system, without starting from a solution package. This is because each such deployment is a highly customized deployment which requires a great deal of processing overhead, memory, and network traffic. Instead, by starting from a solution package and automatically deploying the solution from that package, it reduces processing overhead, network traffic, and it greatly enhances the accuracy of the deployment and thus the accuracy of the deployed computing system. Further, it greatly enhances the maintenance operations for the deployed solution.
The present discussion has mentioned processors and servers. In one embodiment, the processors and servers include computer processors with associated memory and timing circuitry, not separately shown. They are functional parts of the systems or devices to which they belong and are activated by, and facilitate the functionality of the other components or items in those systems.
Also, a number of user interface displays have been discussed. They can take a wide variety of different forms and can have a wide variety of different user actuatable input mechanisms disposed thereon. For instance, the user actuatable input mechanisms can be text boxes, check boxes, icons, links, drop-down menus, search boxes, etc. They can also be actuated in a wide variety of different ways. For instance, they can be actuated using a point and click device (such as a track ball or mouse). They can be actuated using hardware buttons, switches, a joystick or keyboard, thumb switches or thumb pads, etc. They can also be actuated using a virtual keyboard or other virtual actuators. In addition, where the screen on which they are displayed is a touch sensitive screen, they can be actuated using touch gestures. Also, where the device that displays them has speech recognition components, they can be actuated using speech commands.
A number of data stores have also been discussed. It will be noted they can each be broken into multiple data stores. All can be local to the systems accessing them, all can be remote, or some can be local while others are remote. All of these configurations are contemplated herein.
Also, the figures show a number of blocks with functionality ascribed to each block. It will be noted that fewer blocks can be used so the functionality is performed by fewer components. Also, more blocks can be used with the functionality distributed among more components.
The description is intended to include both public cloud computing and private cloud computing. Cloud computing (both public and private) provides substantially seamless pooling of resources, as well as a reduced need to manage and configure underlying hardware infrastructure.
A public cloud is managed by a vendor and typically supports multiple consumers using the same infrastructure. Also, a public cloud, as opposed to a private cloud, can free up the end users from managing the hardware. A private cloud may be managed by the organization itself and the infrastructure is typically not shared with other organizations. The organization still maintains the hardware to some extent, such as installations and repairs, etc.
In the embodiment shown in
It will also be noted that architecture 100, or portions of it, can be disposed on a wide variety of different devices. Some of those devices include servers, desktop computers, laptop computers, tablet computers, or other mobile devices, such as palm top computers, cell phones, smart phones, multimedia players, personal digital assistants, etc.
Under other examples, applications or systems are received on a removable Secure Digital (SD) card that is connected to a SD card interface 15. SD card interface 15 and communication links 13 communicate with a processor 17 (which can also embody any of the processors from
I/O components 23, in one embodiment, are provided to facilitate input and output operations. I/O components 23 for various embodiments of the device 16 can include input components such as buttons, touch sensors, multi-touch sensors, optical or video sensors, voice sensors, touch screens, proximity sensors, microphones, tilt sensors, and gravity switches and output components such as a display device, a speaker, and or a printer port. Other I/O components 23 can be used as well.
Clock 25 illustratively comprises a real time clock component that outputs a time and date. It can also, illustratively, provide timing functions for processor 17.
Location system 27 illustratively includes a component that outputs a current geographical location of device 16. This can include, for instance, a global positioning system (GPS) receiver, a LORAN system, a dead reckoning system, a cellular triangulation system, or other positioning system. It can also include, for example, mapping software or navigation software that generates desired maps, navigation routes and other geographic functions.
Memory 21 stores operating system 29, network settings 31, applications 33, application configuration settings 35, data store 37, communication drivers 39, and communication configuration settings 41. Memory 21 can include all types of tangible volatile and non-volatile computer-readable memory devices. It can also include computer storage media (described below). Memory 21 stores computer readable instructions that, when executed by processor 17, cause the processor to perform computer-implemented steps or functions according to the instructions. Similarly, device 16 can have a client system 24 which can run various business applications or embody parts or all of architecture 100. Processor 17 can be activated by other components to facilitate their functionality as well.
Examples of the network settings 31 include things such as proxy information, Internet connection information, and mappings. Application configuration settings 35 include settings that tailor the application for a specific enterprise or user. Communication configuration settings 41 provide parameters for communicating with other computers and include items such as GPRS parameters, SMS parameters, connection user names and passwords.
Applications 33 can be applications that have previously been stored on the device 16 or applications that are installed during use, although these can be part of operating system 29, or hosted external to device 16, as well.
Additional examples of device 16 can be used as well. Device 16 can be a feature phone, smart phone or mobile phone. The phone can include a set of keypads for dialing phone numbers, a display capable of displaying images including application images, icons, web pages, photographs, and video, and control buttons for selecting items shown on the display. The phone can include an antenna for receiving cellular phone signals such as General Packet Radio Service (GPRS) and 1×rtt, and Short Message Service (SMS) signals. In some examples, the phone also includes a Secure Digital (SD) card slot that accepts a SD card.
The mobile device can also be a personal digital assistant or a multimedia player or a tablet computing device, etc. (hereinafter referred to as a PDA). The PDA can include an inductive screen that senses the position of a stylus (or other pointers, such as a user's finger) when the stylus is positioned over the screen. This allows the user to select, highlight, and move items on the screen as well as draw and write. The PDA can also include a number of user input keys or buttons which allow the user to scroll through menu options or other display options which are displayed on the display, and allow the user to change applications or select user input functions, without contacting the display. The PDA can include an internal antenna and an infrared transmitter/receiver that allow for wireless communication with other computers as well as connection ports that allow for hardware connections to other computing devices. Such hardware connections are typically made through a cradle that connects to the other computer through a serial or USB port. As such, these connections are non-network connections.
Note that other forms of the devices 16 are possible.
Computer 810 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 810 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media is different from, and does not include, a modulated data signal or carrier wave. It includes hardware storage media including both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 810. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
The system memory 830 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 831 and random access memory (RAM) 832. A basic input/output system 833 (BIOS), containing the basic routines that help to transfer information between elements within computer 810, such as during start-up, is typically stored in ROM 831. RAM 832 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 820. By way of example, and not limitation,
The computer 810 may also include other removable/non-removable volatile/nonvolatile computer storage media. By way of example only,
Alternatively, or in addition, the functionality described herein can be performed, at least in part, by one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include Field-programmable Gate Arrays (FPGAs), Program-specific Integrated Circuits (ASICs), Program-specific Standard Products (ASSPs), System-on-a-chip systems (SOCs), Complex Programmable Logic Devices (CPLDs), etc.
The drives and their associated computer storage media discussed above and illustrated in
A user may enter commands and information into the computer 810 through input devices such as a keyboard 862, a microphone 863, and a pointing device 861, such as a mouse, trackball or touch pad. Other input devices (not shown) may include a joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 820 through a user input interface 860 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A visual display 891 or other type of display device is also connected to the system bus 821 via an interface, such as a video interface 890. In addition to the monitor, computers may also include other peripheral output devices such as speakers 897 and printer 896, which may be connected through an output peripheral interface 895.
The computer 810 is operated in a networked environment using logical connections to one or more remote computers, such as a remote computer 880. The remote computer 880 may be a personal computer, a hand-held device, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 810. The logical connections depicted in
When used in a LAN networking environment, the computer 810 is connected to the LAN 871 through a network interface or adapter 870. When used in a WAN networking environment, the computer 810 typically includes a modem 872 or other means for establishing communications over the WAN 873, such as the Internet. The modem 872, which may be internal or external, may be connected to the system bus 821 via the user input interface 860, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 810, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
It should also be noted that the different embodiments described herein can be combined in different ways. That is, parts of one or more embodiments can be combined with parts of one or more other embodiments. All of this is contemplated herein.
Example 1 is a computing system, comprising:
a package preparation component that generates a user interface display with preparation user input mechanisms that are actuated to configure a solution package, with computing system assets from a base computing system configured for a given solution, and for deployment to a given environment;
a data package generator that displays a data package generation user interface display with data package preparation user input mechanisms that are actuated to generate a data package to be included in deployment of the configured solution package; and
a deployment component that generates a deploy user input mechanism and detects actuation of the deploy user input mechanism and, in response, automatically deploys the configured solution package, including the data package, to the given environment.
Example 2 is the computing system of any or all previous examples and further comprising:
a package selection component that displays a package selection user input mechanism and detects user actuation of the package selection user input mechanism to select the solution package.
Example 3 is the computing system of any or all previous examples wherein the deployment component displays, before deploying the solution package, an indication of which data and code is to be deployed in the solution package, along with a modification user input mechanism that is actuated to modify the data and code to be deployed in the solution package.
Example 4 is the computing system of any or all previous examples wherein the deployment component displays an environment selection user input mechanism and detects user actuation of the environment selection user input mechanism to identify the given environment.
Example 5 is the computing system of any or all previous examples wherein the deployment component displays the environment selection user input mechanism to select the given environment from a plurality of different environments comprising a development environment, a test environment and a production environment.
Example 6 is the computing system of any or all previous examples wherein the deployment component, in response to the actuation of the deploy user input mechanism, automatically creates a set of virtual machines in the given environment.
Example 7 is the computing system of any or all previous examples wherein the deployment component, in response to actuation of the deploy user input mechanism, automatically installs a solution in the solution package on the virtual machines in the given environment.
Example 8 is the computing system of any or all previous examples wherein the deployment component, in response to the actuation of the deploy user input mechanism, automatically configures the installed solution for operation in the given environment.
Example 9 is the computing system of any or all previous examples wherein the deployment component automatically installs the solution by installing the base computing system and joins the base computing system to a domain identified in the solution package.
Example 10 is the computing system of any or all previous examples wherein the deployment component automatically installs the solution by installing additional environment components from the solution package.
Example 11 is the computing system of any or all previous examples wherein the deployment component automatically installs the solution by installing model files identified in the solution package.
Example 12 is the computing system of any or all previous examples wherein the deployment component automatically time stamps and compiles the installed solution package.
Example 13 is the computing system of any or all previous examples wherein the deployment component automatically configures the installed solution for operation by accessing a set of configuration keys in the solution package and turning on parts of the installed solution to conform to the configuration keys.
Example 14 is the computing system of any or all previous examples wherein the deployment component automatically configures the installed solution for operation by accessing a set of performance switches in the solution package and configuring the installed solution based on the performance switches.
Example 15 is a computer implemented method, comprising:
controlling a user interface component to display a user interface display with preparation user input mechanisms that are actuated to configure a solution package, with computing system assets from a base computing system configured for a given solution, and for deployment to a given environment;
detecting user actuation of the preparation user input mechanisms to generate a prepared solution package;
controlling the user interface component to display a data package generation user interface display with data package preparation user input mechanisms that are actuated to generate a data package to be included in deployment of the configured solution package;
detecting user actuation of the data package preparation user input mechanisms to obtain a prepared data package;
controlling the user interface component to display a deploy user input mechanism;
detecting user actuation of the deploy user input mechanism; and
in response to detecting the user actuation of the deploy user input mechanism, automatically creating a set of virtual machines in the given environment, automatically installing a solution in the solution package on the virtual machines in the given environment, and automatically configuring the installed solution for operation in the given environment.
Example 16 is the computer implemented method of any or all previous examples wherein automatically installing the solution comprises:
installing the base computing system;
joining the base computing system to a domain identified in the solution package; and
installing additional environment components from the solution package.
Example 17 is the computer implemented method of any or all previous examples wherein automatically installing the solution comprises:
installing model files identified in the solution package;
time stamping the installed solution; and
compiling the installed solution package.
Example 18 is the computer implemented method of any or all previous examples wherein automatically configuring the installed solution for operation in the given environment comprises:
accessing a set of configuration keys in the solution package;
selectively activating parts of the installed solution to conform to the configuration keys;
accessing a set of performance switches in the solution package; and
configuring the installed solution based on the performance switches.
Example 19 is a computing system, comprising:
a package preparation component that generates a user interface display with preparation user input mechanisms that are actuated to configure a solution package, with computing system assets from a base computing system configured for a given solution, and for deployment to a given environment;
a data package generator that displays a data package generation user interface display with data package preparation user input mechanisms that are actuated to generate a data package to be included in deployment of the configured solution package; and
a deployment component that generates a deploy user input mechanism and detects actuation of the deploy user input mechanism and, in response, automatically deploys the configured solution package, including the data package, to the given environment by automatically creating a set of virtual machines in the given environment, automatically installing a solution in the solution package on the virtual machines in the given environment, and automatically configuring the installed solution for operation in the given environment.
Example 20 is the computing system of any or all previous examples wherein the deployment component automatically installs the solution by installing model files identified in the solution package, time stamping the installed solution, and compiling the installed solution package, and wherein the deployment component automatically configures the installed solution for operation in the given environment by accessing a set of configuration keys in the solution package, selectively activating parts of the installed solution to conform to the configuration keys, accessing a set of performance switches in the solution package, and configuring the installed solution based on the performance switches.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.