Flexible provisioning of multi-application content

CN115993988BActive Publication Date: 2026-10-16SAP SE
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202211272239.5
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2021-10-19
Filing Date
2022-10-18
Publication Date
2026-10-16
Estimated Expiration
2042-10-18

AI Technical Summary

Technical Problem

[0003]然而,在共享和部署软件更新或内容方面存在各种障碍

Benefits of technology

[0005] This describes the technologies and solutions used to define and deploy application content. Content (such as objects) can be created in a repository defined for a first application. Packages can be defined, at least in part, based on objects used in a computing environment where only the first application is needed. Second packages can be defined, at least in part, based on objects used in a computing environment where both the first and second applications are available. Content can be moved between repositories defined for a single application and repositories defined for multiple applications. Content can be added to or removed from the client computing system when the application available on the client computing system changes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115993988B_ABST
    Figure CN115993988B_ABST
Patent Text Reader

Abstract

Techniques and solutions are described for defining and deploying application content. Content, such as objects, can be created in a repository defined for a first application. A package can be defined based at least in part on objects used in a computing environment that only requires the first application. A second package can be defined based at least in part on objects used in a computing environment in which the first application and a second application are available. Content can be moved between a repository defined for a single application and a repository defined for multiple applications. Content can be added to or removed from a client computing system as the applications available on the client computing system change.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure generally relates to providing application content, such as application enhancements or content that can be used with or by an application. Certain implementations allow defining packages that include enhancements or content for a single application, or packages that include enhancements or content available when both a single application and another application are available to a client. Background Technology

[0002] Software is becoming increasingly complex. Especially with the expansion of available memory, disk storage, and processing power, developers can include more and more complex features in their software. These features can be expanded and updated later, including by numerous entities. For example, if a software suite is released by one company, other companies or even individual users can develop products that work in conjunction with that suite to provide additional functionality, or provide products (code or non-code content, where non-code content can be, for example, a data model or its elements) upon which users can build. This added functionality can be incorporated into a marketable product, or the content can be shared among users of the software application.

[0003] However, various obstacles exist in sharing and deploying software updates or content. For example, gathering materials for updates or sharing can be a complex task, so updates or new content may be released relatively infrequently. Furthermore, some updates or content may be limited to specific software products. If a user has a combination of software products where an update or content might be useful, but the update or content requires licenses specific to the two applications used together, the user may not be able to utilize the update or content. Therefore, there is room for improvement. Summary of the Invention

[0004] This summary is provided to introduce, in a simplified form, the selected concepts that will be further described below in the detailed embodiments. This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to limit the scope of the claimed subject matter.

[0005] This describes the technologies and solutions used to define and deploy application content. Content (such as objects) can be created in a repository defined for a first application. Packages can be defined, at least in part, based on objects used in a computing environment where only the first application is needed. Second packages can be defined, at least in part, based on objects used in a computing environment where both the first and second applications are available. Content can be moved between repositories defined for a single application and repositories defined for multiple applications. Content can be added to or removed from the client computing system when the application available on the client computing system changes.

[0006] In one embodiment, this disclosure provides a method for defining different packages of objects (such as a package that can be installed when a first application is available on a target system, and a package that can be installed when both the first and second applications are available). A first plurality of first objects that can be used with the first application are received. The first plurality of objects or references to the first plurality of objects are stored in a repository. A second plurality of objects that can be used with the first application when the second application is also installed on the target system are received. The second plurality of objects or references to the second plurality of objects are stored in a repository. A first package of objects that includes at least a portion of the first plurality of objects but does not include the second plurality of objects is defined. A second package that includes at least a portion of the second plurality of objects is defined.

[0007] This disclosure also includes computing systems and tangible, non-transitory computer-readable storage media configured to perform or include instructions for performing the methods (or operations) described above. As described herein, various other features and advantages may be incorporated into these techniques as needed. Attached Figure Description

[0008] Figure 1 This is a diagram illustrating a computing environment with a repository that can be used to define packages that can be deployed to client computing systems.

[0009] Figure 2 This is a diagram illustrating how an app can have available content if another app is available.

[0010] Figure 3 This is a diagram illustrating how packages can be created for different potential computing environments that may exist on a client computing system.

[0011] Figure 4 This is an example package definition that shows how application dependencies can be incorporated into the package definition.

[0012] Figure 5A and Figure 5B This demonstrates how content can migrate between cross-application object spaces and single application object spaces.

[0013] Figure 6A and Figure 6B This demonstrates how content can be added to or removed from a client computing system as the applications available on the client computing system change over time.

[0014] Figure 7 This is a flowchart illustrating operation according to the disclosed embodiments.

[0015] Figure 8 This is a diagram of an example computing system in which some of the described embodiments can be implemented.

[0016] Figure 9 This is an example cloud computing environment that can be used in conjunction with the technologies described in this article. Detailed Implementation

[0017] Example 1 - Overview

[0018] Software is becoming increasingly complex. Especially with the expansion of available memory, disk storage, and processing power, developers can include more and more complex features in their software. These features can be expanded and updated later, including by numerous entities. For example, if a software suite is released by one company, other companies or even individual users can develop products that work in conjunction with that suite to provide additional functionality, or provide products (code or non-code content, where non-code content can be, for example, a data model or its elements) upon which users can build. This added functionality can be incorporated into a marketable product, or the content can be shared among users of the software application.

[0019] However, various obstacles exist in sharing and deploying software updates or content. For example, gathering materials for updates or sharing can be a complex task, so updates or new content may be released relatively infrequently. Furthermore, some updates or content may be limited to specific software products. If a user has a combination of software products where an update or content might be useful, but the update or content requires licenses specific to the two applications used together, the user may not be able to utilize the update or content. Therefore, there is room for improvement.

[0020] This disclosure helps make cross-application content available to clients. Cross-application content generally refers to content that can be used in a second application as well as content that can be used by a first or second application in combination with other applications. As used herein, an application can refer to a particular software application or a particular set or grouping of data or metadata. For example, an "application" can refer to a collection of data models available in a particular domain (or subject area) (such as accounting or human resources).

[0021] Cross-application content can take the form of updates, upgrades, plugins, or other programming enhancements to one or more applications, or it can be content used by one or more applications (this can also “enhance” applications, such as by providing users with pre-built content). Such content can include models and their elements (e.g., database artifacts, elements of database artifacts such as dimensions, dimension hierarchies, data type definitions, semantic information associated with database artifacts or elements of database artifacts, or artifacts or elements of artifacts in a virtual data model), key performance indicators (KPIs), role definitions, user definitions, connection definitions (e.g., information that can be used to connect one computing system to another), files, user interface definitions and their elements, data structure definitions, abstract or composite data types or similar types of computed objects, themes, widgets, or definitions of validation rules. Therefore, cross-application content can include specific elements of a data model that can be used by a first software application when the client computing system also has a second software application available, or it can refer to specific elements of a data model that can be used by the first software application in a first domain (or “application,” such as accounting) and a second domain (or “application,” such as human resources).

[0022] Cross-application content may be included in a package. A package generally refers to a collection of one or more (typically multiple) cross-application contents. However, at least in the techniques provided in this disclosure, a package may include application-specific (only required) content, rather than cross-application content. A package may be a file or an object and may optionally be compressed. In at least some cases, content associated with the package is included within the package. However, in other cases, the package may include a list of content items that can be retrieved by a system that uses (e.g., installs) the package. When content is not included in the package, the package may include identifiers of the package's content or location information that can be used to retrieve the package's content.

[0023] Packages can be associated with a data space (or object space or namespace) or a repository. Packages can be assembled from content in a data space, and defined packages can be included as objects in a data space. In certain implementations, multiple packages can be created from a data space, where different packages comprise different subsets of content from the data space.

[0024] A package can be associated with one or more computing environments, such as an application or application suite. Different packages can be created for different computing environments. Alternatively, a single package can include information that can be used to indicate which parts of the package should be installed in a specific computing environment. For example, if the computing environment only includes application A, a set of content can be included (or defined or extracted). If the computing environment includes both application A and application B, another set of content can be included (or defined or extracted). Packages can be defined for any desired number or combination of applications or application components. Similar definitions can optionally be made based on plugins associated with applications or application configuration information.

[0025] In some implementations, specific packages can be defined or selected for deployment based on the satisfaction of dependency requirements. For example, a package for application A can be defined, and a package for scenarios where both application A and application B are available can also be defined. Both packages can be available, and a particular computer system can choose or has already chosen a package that matches the computing system's environment, such as choosing a package with the highest number of dependencies satisfied by the computing system (e.g., if the computing system has applications A, B, and C, a package that includes all three applications as dependencies will be chosen, rather than a package that includes only one or two of these applications). Alternatively, a combined package comprising multiple sub-packages can be defined, and the receiving system (or its users) can choose which sub-package to install (e.g., based on what dependency information is defined, although in at least some cases a sub-package containing fewer dependencies than those satisfied by the computing environment can be installed).

[0026] While packages can be defined relative to a specific application or application suite, package or package dependencies can be defined in other ways. For example, a package can depend on one or more other packages, rather than on a specific application or application suite. This can be useful, for instance, when multiple packages are available for a given application or application suite—a client system may have the application or application suite installed, but may not have all the packages available for that application or application suite installed.

[0027] Publicly available technologies can offer numerous advantages. Content or upgraded features can be made available to a large number of clients without requiring clients to have a license to a specific cross-application suite in order to use at least some of the functionality associated with the cross-application. It can also make features more readily available to users, even if the feature is eventually integrated into the cross-application. Making cross-application content available to users can generate client interest in obtaining a full license to the cross-application (e.g., a package that may require a separate license and potentially contain broader or more complex cross-application content) to gain access to additional features or content compared to those available in a package primarily defined for a single application. If one or more additional applications happen to be available on the client system, some content or features will be installed / available.

[0028] While not limited to this purpose, this disclosure can be found in specific applications within SAP Analytics Cloud software available from SAP SE in Walldorf, Germany. In this embodiment, the package can be an ACN (Analytics Content Network) package. The content included in the ACN package can be objects as used in SAP Analytics Cloud, and the application can be a line of business. The repository or object space can be a data plane space as used in SAP Analytics Cloud.

[0029] Example 2 - Example Computing Environment

[0030] Figure 1 An example computing environment 100 in which the disclosed techniques can be implemented is shown. The computing environment 100 includes a computing system 110 in which various contents can be defined or maintained. As described in Example 1, contents can be code, such as code that updates or upgrades an application or is attached to an application. Content can also be non-code content, such as the definition of components of a data model, which can be expressed in formats such as JSON and CSN (core schema notation, as used in the available software of SAP SE in Walldorf, Germany). Content (e.g., a specific file or program with a list of CSNs or JSON) can generally be referred to as an "object," although it should be understood that in this usage, "object" does not necessarily refer to a software object as a term used in object-oriented programming, although such a software object can also be an "object."

[0031] Computing system 110 has a storage library 114 that can store multiple objects 118, wherein all or some of the objects can be included in package definition 122. In some cases, package definition 122 includes or results in deployment package 132, which includes the appropriate objects 118. In some cases, the contents of object 118 are directly included in deployment package 132. In other cases, deployment package 132 references object 118 in storage library 114 (or another location), and a system that has the deployment package installed retrieves object 118 from storage library (or other location) during installation.

[0032] Repository 114 can be one of multiple repositories within computing system 110. For example, repository 114 can be defined for a specific software application or software suite to help organize objects 118, although some objects may reside in multiple repositories. Alternatively, repository 114 can be created for a specific subject area (such as accounting or human resources), where objects 118 in the repository can be used by one or more specific applications, or can be at least partially application-agnostic. For example, object 118 can be a definition of a database object and can be used by any application capable of reading the format representing the object.

[0033] Computing environment 100 is shown as comprising three packages 142, 144, and 146, each configured to be installed in an environment that meets specific requirements. Packages 142, 144, and 146 may be package definitions in repository 114 (e.g., an example of package 122) or may be deployment packages (e.g., an example of package 132). Each of packages 142, 144, and 146 includes one or more objects 118 from repository 114, or references to those objects. Package 142 includes content that can be used with a first application, thus depending on the first application. Similarly, package 144 includes content that can be used with a second application. Package 146 includes content that can be used with both the first and / or second applications, but depends on whether both applications 1 and 2 are installed on the target system (or otherwise available on the target system). Traditionally, not only do applications 1 and 2 need to be deployed to the client system, but the client also needs to license the content associated with these two applications (e.g., a license for a single application does not authorize access to content from a cross-application). In some cases, a cross-application package refers to a package that does not include object 118 of a "local" (only required) single application.

[0034] As will be further described, this disclosure provides techniques for moving cross-application dependencies to a lower / fineer granular level, thereby helping to avoid situations where a lack of licensing for a higher-level software application or package prevents the merging of features that could increase the utility of another software application or package. That is, instead of making the availability of a feature of a second application dependent on having a license for the product that defines the cross-application content for the second application and the first application, the availability of a feature can depend on whether a particular system has the available software functionality required to use the feature, such as checking to see if a particular system has a particular application or particular content installed. Thus, for example, a system can use cross-application content relative to application 1 relative to application 2, or relative to application 1 relative to application 2, as long as application 1 and application 2 are available. In another example, a feature of application 1 can be used as long as specific content or features are available, where that specific content or feature can be content or features associated with application 2.

[0035] Computing environment 100 includes three client computing systems 150, 152, and 154. Packages 142, 144, and 146, which can be installed on one of client systems 150, 152, and 154, depend on the application installed on (or otherwise available at / to the client system). For example, client computing system 150 includes a copy 160 of a first application. Since package 142 requires only the first application, package 142 can be installed on client computing system 150. Packages 144 and 146 cannot be installed on client computing system 150 because that client system does not include the second application that these packages depend on.

[0036] The client computing system 152 includes a copy 166 of the first application and a copy 168 of the second application. Therefore, the client computing system 152 can install one or more of package 142 (only the first application is required), package 144 (only the second application is required), or package 146 (both the first and second applications are required).

[0037] The client computing system 154 is a multi-tenant system with a first tenant 170 and a second tenant 180. The first tenant 170 has a copy 172 of the second application available to it, but cannot access the first application. Therefore, only package 144 can be installed for the first tenant. The second tenant 180 has a copy 182 of the first application and a copy 184 of the second application, and therefore one or more of packages 142, 144, and 146 can be installed for the second tenant.

[0038] Example 3 - Cross-application content example

[0039] Figure 2 This illustrates how packages (whether defined in a repository or deployed packages) can include content or enhancements for a single application, or content or enhancements that provide benefits when used by multiple applications. Specifically, Figure 2 A first package 210 for a first application is shown, which includes enhancements 214 to a specific feature (feature C) for the first application. A second package 220 also includes enhancements 224 to feature C for the first application. However, while the first package 210 requires only the first application, the second package 220 requires both the first and second applications.

[0040] Figure 2 This demonstrates some content and enhancements that can be used alone in a single application, while others apply when two applications are used together, or at least when they are available. For example, Figure 2A first client system 230 is shown with a copy 232 of the first application and a copy 234 of the second application installed. The first application has components or features AC 236, 238, 240, and the second application has components or features C-E 242, 244, 246. The two versions 240, 242 of feature C may represent the same feature, but natively in both applications. Alternatively, a version of feature C may be added to either the first or second application by package 220.

[0041] As a more practical example, consider a scenario where the first application is a human resources application and the second application is a financial application. Feature C 240 could involve employee performance records. If the client also has the second application installed in addition to the first application, the human resources functionality could be useful in the financial application—such as linking employee performance information to sales or production data. Therefore, including feature C 242 could benefit the client system 230 because it increases the usefulness of the second application.

[0042] The second client system 250 only has the first application and its features 236, 238, and 240 installed. Since the second client system 250 does not have the second application installed, installing package 220 would be impossible, or even if it could be installed, it would not provide any benefit to the second client system 250. On the other hand, the first package 210 enhances the features or content of the independent first application, therefore providing the first package to both the first client system 230 and the second client system 250 is useful.

[0043] Example 4 – Example Alternative Package Definition

[0044] As discussed in Example 1, existing technologies for enhancing applications may be limited when the enhancement involves multiple applications. Due to the time and licensing requirements of development kits, enhancements involving multiple applications working together are typically only available if their number or nature is sufficient to develop a specific cross-product, where the cross-product usually requires additional (paid) licenses compared to the applications considered individually. That is, even if the enhancement requires a first application and a second application, and a particular client has licenses to both applications, features associated with the combination of the first and second applications may only be available if the client obtains a separate license to the cross-product obtained when the first and second applications are used together.

[0045] Figure 3 This demonstrates how cross-application enhancement can be facilitated by creating additional packages for cross-application enhancement within a repository defined for a single application. Specifically, Figure 3 A first object space 310 is shown, which may be a first repository (e.g., Figure 1The first object space 310 includes all or part of the storage 114. The first object space 310 comprises multiple objects 314, which may be... Figure 1 Object 118.

[0046] The first object space 310 also includes packages 318, 320, 322, and 324, which can be similar to... Figure 1 Package definition 122. For example... Figure 1 In the case of package 318, one of the packages can be specific to the scenario where the first application needs to be enhanced or updated. Additional packages 320, 322, and 324 can be defined as depending on the first application and one or more additional applications. Specifically, package 320 requires application A and application C, package 322 requires application A and application C, and package 324 requires applications A, B, and C.

[0047] As illustrated in Example 3, an enhancement or update that depends on multiple applications can indicate that both applications include common components or features, or that such a dependency may stem from the need for a component or feature in the second application to be available for use with the enhancement or update in the first application. For example, suppose the enhancement for the first application is creating or modifying a data model (e.g., the definition of a table) to include data representing a specific attribute (e.g., a specific field or column in a database table). Including that attribute in the first application's data model might only "make sense" if it is available in the second application, since the second application might be the data source used to obtain the value of that attribute.

[0048] In some cases, packages 318-324 can be defined as independent. That is, for example, a package can be created for each unique computing environment (a combination of applications), and all relevant objects are included in or referenced by that package. Thus, in the example above, package 320 includes all objects 314 related to application A when used alone, and the package includes all objects for scenarios where application A is used with application B (wherein, if any object is inconsistent with the object used for a scenario of application A alone, the object used for the application A + application B scenario is used instead). In other cases, packages 318-324 can be supplementary. For example, if the client computer system includes application A and application B, package 318 can be installed to provide updates or enhancements when application A is used alone, and package 320 can be installed to provide updates or enhancements specific to the use of applications A and B together. If applications A, B, and C are available, package 318 can be used to install updates or enhancements for application A used alone, package 320 can be used to deploy enhancements or updates related to applications A and B used together, and package 322 can be used to deploy enhancements or updates related to applications A and C used together. In this scenario, it may not be necessary to define package 324, which is specific to the scenario where applications A and C are used together.

[0049] In other cases, a single package may include objects 314 for multiple scenarios, and installation logic may be used to determine which packages should be installed (and optionally, retrieve (if the installation logic is not part of the package)). For example, package 320 may include all objects 314 for application A and all objects for a scenario in which application A is used with application B. During deployment, it may be determined whether only application A is available, in which case only application A-specific objects 314 are deployed, or it may be determined whether both application A and B are available, in which case all objects (or at least all objects defined for the application A + application B usage scenario) may be deployed. Similarly, if an application is installed, new content may be available for previously installed applications, so it may be desirable to check not only what content or features can be installed for newly installed applications, but also whether content or features can be added for previously installed applications. Accordingly, removing an application (or content or features, depending on how dependencies are tracked or defined) may cause some cross-application content for other applications to become unavailable, so it may be desirable to consider whether removing an application should result in the removal of cross-application features or content for the remaining applications.

[0050] Figure 3 The object space 330 of application B, containing packages 334 and 338, is shown. Package 334 contains application B-specific objects 314, while package 338 contains objects used when application B is used with application A. Typically, packages 334 and 338 can be implemented as described for packages 318 and 320. In some cases, at least some objects 314 in package 338 can be the same as objects in package 320. That is, the same object 314 can be useful at any time when application A is used with application B. However, not all objects 314 need to be transitive. For example, it might be desirable to include object 314 in a package for a "primary" application, where the application can be considered primary if the application is modified by the object or if the application primarily uses the object. In the above example where object 314 represents an attribute of a table, it might be desirable to include the object in a package of the application that has the table, rather than in the application from which the data is obtained. In yet another example, multiple objects 314 may be needed to implement a specific function, and some objects may be in a package for the first application (A+B), while others may be in a package for the second application (B+A).

[0051] Object spaces 310, 330, and their associated packages can represent intermediate stages between packages 142, 144, and 146 described in Example 2. That is, object space 340 of application C includes package 344, which contains content purely associated with application C (local content). Object space 350 includes package 354 and is strictly defined for scenarios where two of these applications are available and fully licensed to the client. On the other hand, packages 320, 322, or 324 of object space 310 include local content and some additional content associated with one or more other applications, but do not require fully defined (and restricted) cross-application. That is, the availability of packages 320-324 depends on the appropriate applications available on the client system, rather than on whether the client system has licenses for content associated with multiple applications. In a more specific implementation, packages associated with multiple applications (such as package 320) are available as long as the appropriate "base" package is available. Therefore, package 320 can be used by the client system as long as package 318 is also deployed to the client system.

[0052] Furthermore, although Example 4 describes a "local plus" scenario defined for a single "base" application, these scenarios can also be applied to cross-applications. For example, object space 350 may optionally include cross-application package 358, which is defined for scenarios where client systems include applications A and B (and have permission to access cross-application content) and also include application C. Packages 354 and 358 can be implemented in other ways as described for packages 318 and 320.

[0053] Example 5 - Example Package Definition

[0054] Figure 4 The definition 410 contains a portion of the package definition that depends on a single application (using CSN (Core Schema Notation), as used in products available from SAP SE in Walldorf, Germany), and a definition 420 for packages that depend on multiple applications. Therefore, package 410 can represent... Figure 1 Package 142 or Figure 3 Example of package 318. Package 410 includes definitions 414 for two objects. In this case, no name is given for the package, although a name may be included in some implementations. In some cases, it may be assumed that a particular repository (or object space / namespace) is for a particular application.

[0055] Package 420 includes the name 424 of the defined package (“package2”) and includes dependency information 428 indicating that installing package2 requires “package1”. Package 420 includes the definition 432 of objects from the second package and also includes the definition 414 of any objects included in package2 from package1.

[0056] Package 410 thus represents features and enhancements specific to Package 1 (which may in turn be associated with a first specific application), or “local” content, and Package 410 includes “local content” (object definition 414) and additional content (object definition 432) available when Package 2 (for a second application) is available.

[0057] Example 6 - Example migration of content between single and cross-application spaces

[0058] As discussed in Example 1, this disclosure facilitates the availability of content in an intermediate zone between application content strictly available to a single application and cross-application content available as a formal "product" (which may require separate licensing). Some enhanced application functionality leveraging the availability of another application or content can be included within the content of the "base" application or content. Over time, it may be desirable to change the definition of what content should be available in a "native plus" format (base application / content plus cross-content) or strictly as cross-application content (which may require additional licensing). Packages can be modified to account for these transitions, providing flexibility compared to methods that include content in a specific cross-application product or "main" product. That is, in existing methods, creating or changing cross-application products or changing available features or content in a given product is relatively difficult due to the limited number of tools available for making changes and because making relatively frequent changes to such a comprehensive product is impractical. In at least some of the disclosed embodiments, content can be added to or removed from different application or cross-application packages as in existing methods, but smaller, more frequent updates or changes are also possible, provided that the necessary(s) applications and content are available in a given system.

[0059] Figure 5A Scenario 500 is illustrated, where the object space 506 of a first application (Application A) has object 508. Object space 506 includes package 510 with basic content and package 514 for content available if the client also has Application B available. In other words, package 514 represents "local plus" content. It can be determined that at least a portion of the content in package 514, or at least content specific to the combination of Application A and Application B, is valuable enough to be included in a cross-application package, where such inclusion might require the client to pay for the content, rather than the content being available without additional cost in the "local plus" paradigm.

[0060] Therefore, packet 514, or its specific contents, can be transferred to object space 520, which is specific to the combination of application A and application B. Object space 506 holds packet 510 containing content specific to application A.

[0061] In a similar manner, over time, one might want to retrieve content from object spaces associated with multiple applications and make it available in the object space of a single application. Therefore, the content is available to users who can access it through both application A and application B, even if they do not have permission for content defined to include the object space of both application A and application B.

[0062] Figure 5B The scenario 550 is illustrated, where object space 556, containing objects 558 specific to a combination of applications A and B, includes package 560, which contains objects associated with the combination of applications A and B. At least a portion of the content associated with the combination of applications A and B is moved to object space 564 associated with application B. Object space 564 includes package 568 containing objects 572 that only require application A, and package 576 containing objects 580 specific to the combination of applications A and B. In this scenario, all content of package 558 has been merged into package 576, so package 558 is no longer shown. In other cases, only a portion of package 558 is merged into package 576, so package 560 can be retained along with objects 558 that are not merged into package 576.

[0063] Example 7 - Example modifications to content on client systems based on application availability

[0064] Over time, clients can add or remove applications from the computing system. When assuming a specific combination of applications exists and content is available, whether a client can use that content can change as the client adds or removes applications. If a client removes an application, it may be beneficial to determine if some content is no longer available to the client, and optionally remove or disable such content. Similarly, if a client adds an application, it may be beneficial to see if new content is available to the client (e.g., whether the first application can now use cross-content that also requires the second application). If new content is available, it may be useful to notify the client (or the user associated with the client) of the new content's availability.

[0065] Figure 6AScenario 600 is illustrated when additional content is available to the user. Client computing system 608 includes application 612, i.e., application A, which has one or more objects 616 that only require application A. At 620, the client installs application B 624. Client computing system 608 can determine that object 628, which depends on application A that also makes application B available, is now available to the client computing system, and therefore the object is installed on the client computing system. The logic used to analyze whether an object can be added may reside in application A 612, application B 624, or another component, such as a content manager component or an installation component.

[0066] Figure 6B Scenario 650 is illustrated, where content is no longer available to the client, such as because the client has removed the application required for the content to be available. Client computing system 654 includes application 658 (application A) and application 662 (application B). Application A 658 includes application A-specific content 666 and content 670 available if application B is also available. At 674, application B is removed from client computing system 654. Logic determines that application B 662 has been removed and searches for, removes, or disables content 670. After the "detachment" process, application A 658 includes only content 666.

[0067] Example 8 - Example Implementation

[0068] Figure 7 A flowchart of an example method 700 is shown, illustrating different packages for defining objects (such as packages that can be installed when the first application is available on the target system, and packages that can be installed when both the first and second applications are available). Method 700 can be... Figure 1 Implemented in computing environment 100, and more specifically, can be used with Figure 3 The environment shown is implemented consistently.

[0069] At 710, a first plurality of first objects that can be used with the first application are received. At 720, the first plurality of objects or references to the first plurality of objects are stored in a repository. At 730, a second plurality of objects that can be used with the first application when the second application is also installed on the target system are received. At 740, the second plurality of objects or references to the second plurality of objects are stored in a repository. At 750, a first package comprising at least a portion of the first plurality of objects but excluding the second plurality of objects is defined. At 760, a second package comprising at least a portion of the second plurality of objects is defined.

[0070] Example 9 - Computing System

[0071] Figure 8A general example of a suitable computing system 800 in which the described innovations can be implemented is depicted. The computing system 800 is not intended to impose any limitation on the scope or functionality of this disclosure, as the innovations can be implemented in a variety of general-purpose or special-purpose computing systems.

[0072] refer to Figure 8 The computing system 800 includes one or more processing units 810, 815 and memories 820, 825. Figure 8 In the diagram, the basic configuration 830 is included within the dashed lines. Processing units 810 and 815 execute computer-executable instructions, such as those for implementing... Figure 1 The components of environment 100 include those described in Examples 1-8. The processing units can be general-purpose central processing units (CPUs), processors in application-specific integrated circuits (ASICs), or any other type of processor. In a multiprocessor system, multiple processing units execute computer-executable instructions to increase processing power. For example, Figure 8 A central processing unit 810 and a graphics processing unit or coprocessor 815 are shown. Physical memories 820, 825 may be volatile memories (e.g., registers, caches, RAM), non-volatile memories (e.g., ROM, EEPROM, flash memory, etc.), or some combination thereof, accessible by the processing unit(s) 810, 815. Memories 820, 825 store software 880 implementing one or more innovations described herein in the form of computer-executable instructions suitable for execution by the processing unit(s) 810, 815.

[0073] The computing system 800 may have additional features. For example, the computing system 800 includes a storage device 840, one or more input devices 850, one or more output devices 860, and one or more communication connections 870. Interconnection mechanisms (not shown), such as buses, controllers, or networks, interconnect the components of the computing system 800. Typically, operating system software (not shown) provides an operating environment for other software executing in the computing system 800 and coordinates the activities of the components of the computing system 800.

[0074] The physical storage device 840 may be removable or non-removable and includes a magnetic disk, magnetic tape or cassette tape, CD-ROM, DVD, or any other medium that can be used to store information in a non-transitory manner and can be accessed within the computing system 800. The storage device 840 stores instructions for implementing one or more innovative software 880 described herein.

[0075] Multiple input devices 850 may be touch input devices such as keyboards, mice, pens, or trackballs, voice input devices, scanning devices, or other devices that provide input to computing system 800. Multiple output devices 860 may be displays, printers, speakers, CD burners, or other devices that provide output from computing system 800.

[0076] Multiple communication connections 870 enable communication with another computing entity via a communication medium. The communication medium transmits information such as computer-executable instructions, audio or video inputs or outputs, or other data in modulated data signals. A modulated data signal is a signal whose one or more characteristics are set or altered in a manner that encodes information in the signal. By way of example and not limitation, the communication medium may be electrical, optical, RF, or other carriers.

[0077] Innovations can be described in the general context of computer-executable instructions, such as instructions included in program modules that execute on a computing system targeting a real or virtual processor. Typically, program modules or components include routines, programs, libraries, objects, classes, components, data structures, etc., that perform specific tasks or implement specific abstract data types. In various embodiments, the functionality of a program module can be combined or divided among program modules as needed. The computer-executable instructions of a program module can execute on a local or distributed computing system.

[0078] The terms “system” and “device” are used interchangeably herein. Unless the context clearly indicates otherwise, neither term implies any limitation on the type of computing system or computing device. Generally, a computing system or computing device can be local or distributed and can include any combination of dedicated hardware and / or general-purpose hardware with software that implements the functions described herein.

[0079] In the various examples described herein, modules (e.g., components or engines) can be "coded" to perform specific operations or provide specific functionality. This means that computer-executable instructions for the module can be executed to perform those operations, cause those operations to be performed, or otherwise provide those functionalities. While the functionality described with respect to a software component, module, or engine can be implemented as discrete software units (e.g., programs, functions, class methods), it does not need to be implemented as discrete units. That is, the functionality can be incorporated into a larger or more general program, such as one or more lines of code within a larger or more general program.

[0080] For purposes of description, the use of terms such as "determine" and "use" to describe computer operations in a computing system is described in detail. These terms are high-level abstractions of the operations performed by the computer and should not be confused with actions performed by humans. The actual computer operations corresponding to these terms vary depending on the implementation method.

[0081] Example 10 - Cloud Computing Environment

[0082] Figure 9 An example cloud computing environment 900 in which the described technologies can be implemented is depicted. The cloud computing environment 900 includes a cloud computing service 910. The cloud computing service 910 may include various types of cloud computing resources, such as computer servers, data storage repositories, network resources, etc. The cloud computing service 910 may be centrally located (e.g., provided by a data center of an enterprise or organization) or distributed (e.g., provided by various computing resources located in different locations (such as different data centers and / or in different cities or countries)).

[0083] The cloud computing service 910 is utilized by various types of computing devices (e.g., client computing devices) (such as computing devices 920, 922, and 99). For example, computing devices (e.g., 920, 922, and 99) can be computers (e.g., desktop or laptop computers), mobile devices (e.g., tablets or smartphones), or other types of computing devices. For example, computing devices (e.g., 920, 922, and 99) can utilize the cloud computing service 910 to perform computing operations (e.g., data processing, data storage, etc.).

[0084] Example 11 - Implementation Method

[0085] Although some operations of the disclosed methods have been described in a specific order for ease of presentation, it should be understood that this descriptive approach encompasses rearrangement unless the specific language used below requires a particular order. For example, the operations described in sequence may be rearranged or performed concurrently in some cases. Furthermore, for simplicity, the accompanying figures may not show the various ways in which the disclosed methods can be used in conjunction with other methods.

[0086] Any disclosed method can be implemented as a computer-executable instruction or computer program product stored on one or more computer-readable storage media (such as tangible, non-transitory computer-readable storage media) and executed on a computing device (e.g., any available computing device, including smartphones or other mobile devices that include computing hardware). A tangible computer-readable storage medium is any available tangible medium that can be accessed in a computing environment (e.g., one or more optical media discs, such as DVDs or CDs, volatile memory components (such as DRAM or SRAM), or non-volatile memory components (such as flash memory or hard disks)). For example, a computer-readable storage medium includes memory and storage devices. The term computer-readable storage medium excludes signals and carrier waves. Furthermore, the term computer-readable storage medium excludes communication connections.

[0087] Any computer-executable instructions used to implement the disclosed technology, and any data created and used during the implementation of the disclosed embodiments, may be stored on one or more computer-readable storage media. The computer-executable instructions may be, for example, a dedicated software application or part of a software application accessed or downloaded via a web browser or other software application (such as a remote computing application). Such software may execute, for example, on a single local computer (e.g., any suitable commercially available computer) or in a network environment using one or more networked computers (e.g., via the Internet, a wide area network, a local area network, a client-server network (such as a cloud computing network), or other such networks).

[0088] For clarity, only specific selected aspects of the software-based implementation have been described. Other details well-known in the art have been omitted. For example, it should be understood that the disclosed techniques are not limited to any particular computer language or program. For instance, the disclosed techniques can be implemented by software written in C, C++, C#, Java, Perl, JavaScript, Python, Ruby, ABAP, SQL, Xcode, Go, Adobe Flash, or any other suitable programming language, or in some examples, by markup languages ​​such as HTML or XML, or a combination of suitable programming languages ​​and markup languages. Similarly, the disclosed techniques are not limited to any particular computer or hardware type. Specific details of suitable computers and hardware are well-known and do not need to be elaborated in this disclosure.

[0089] Furthermore, any software-based implementation (including, for example, computer-executable instructions for causing a computer to perform any of the disclosed methods) can be uploaded, downloaded, or remotely accessed via suitable communication means. Such suitable communication means include, for example, the Internet, the World Wide Web, intranets, software applications, cables (including fiber optic cables), magnetic communication, electromagnetic communication (including RF, microwave, and infrared communication), electronic communication, or other such means.

[0090] The disclosed methods, apparatuses, and systems should not be construed as limiting in any way. Rather, this disclosure is directed toward all novel and non-obvious features and aspects of the various disclosed embodiments, individually and in various combinations and sub-combinations with each other. The disclosed methods, apparatuses, and systems are not limited to any particular aspect or feature or combination thereof, nor are the disclosed embodiments required to have any one or more particular advantages or problems solved.

[0091] The techniques from any example can be combined with the techniques described in any one or more other examples. Given that the principles of the disclosed techniques can be applied to many possible embodiments, it should be understood that the illustrated embodiments are examples of the disclosed techniques and should not be considered as limiting the scope of the disclosed techniques. Rather, the scope of the disclosed techniques includes what is covered by the scope and spirit of the appended claims.

Claims

1. A computing system, comprising: At least one hardware processor; At least one memory coupled to the at least one hardware processor; and One or more computer-readable storage media storing computer-executable instructions that, when executed, cause the computing system to perform operations, said operations including: Receives a first set of objects that can be used with the first application; Store the first plurality of objects or references to the first plurality of objects in the repository; Receive a second plurality of objects that can be used with the first application when the second application is also installed on the client system; Store the second plurality of objects or references to the second plurality of objects in the storage library; A first package is defined that includes the first plurality of objects but does not include the second plurality of objects, wherein the first package includes the definitions of the first plurality of objects; The definition includes a second package comprising the definitions of the first plurality of objects and the second plurality of objects, wherein the second package includes the definitions of the first plurality of objects and the second plurality of objects; and The first package and the second package are stored in the storage repository.

2. The computing system according to claim 1, wherein, The first package and the second package are stored simultaneously in the storage repository.

3. The computing system according to claim 1, further comprising: It is determined that the client computing system can access the first application, but cannot access the second application; as well as In response to the determination, the first package, instead of the second package, is deployed to the client computing system.

4. The computing system according to claim 3, wherein, The determination to execute at the first moment, the operation further includes: A second time is determined, after the first time, at which the client computing system is able to access the second application; and Deploy one or more of the second plurality of objects to the client computing system.

5. The computing system according to claim 4, further comprising: Provide a notification indicating that the features of the object or the object associated with the second plurality of objects are now available at the client computing system.

6. The computing system according to claim 1, further comprising: It is determined that the client computing system can access the first application and the second application; as well as In response to the determination, the first package and the second package are deployed to the client computing system.

7. The computing system according to claim 6, wherein, The determination is made at the first moment, and the operation further includes: A second time is determined, after the first time, in which the client computing system cannot access the second application; and Remove the second plurality of objects from the client computing system, or make one or more of the second plurality of objects unavailable to the client computing system.

8. The computing system according to claim 1, wherein, The first package includes the contents of the first plurality of objects.

9. The computing system according to claim 1, wherein, The first package includes references to objects of the first plurality of objects, but does not include all the contents of the objects of the first plurality of objects.

10. The computing system according to claim 1, wherein, The storage library is defined for the first application.

11. The computing system according to claim 1, wherein, The storage repository is a first storage repository, and the operation further includes: Create a second repository for the object definitions associated with both the first application and the second application; and Move or copy the second plurality of objects to the second storage.

12. The computing system according to claim 11, wherein, Moving or copying the second plurality of objects includes moving the second plurality of objects.

13. The computing system according to claim 1, wherein, The storage repository is a first storage repository, and the operation further includes: Create a second repository for the object definitions associated with both the first application and the second application; and The second plurality of objects are stored in the second storage, wherein receiving the second plurality of objects includes receiving objects from the second storage.

14. The computing system according to claim 13, wherein, The objects of the second plurality of objects received by the first storage are removed from the second storage.

15. The computing system according to claim 1, wherein, The storage repository is a first storage repository, and the operation further includes: Create a second repository defined as objects associated with both the first application and the second application; Store the first plurality of objects or references to the first plurality of objects, and the second plurality of objects or references to the second plurality of objects, in the second repository; and Define a third package that includes the second plurality of objects.

16. The computing system according to claim 15, wherein, The second plurality of objects are removed from the first repository.

17. One or more computer-readable storage media, comprising: Computer-executable instructions, when executed by a computing system including at least one hardware processor and at least one memory coupled to said at least one hardware processor, cause said computing system to receive a first plurality of objects that can be used with a first application; Computer-executable instructions, when executed by the computing system, cause the computing system to store the first plurality of objects or references to the first plurality of objects in a storage library; Computer-executable instructions, when executed by the computing system, cause the computing system to receive a second plurality of objects that can be used with the first application when the second application is also installed on the client system; Computer-executable instructions, when executed by the computing system, cause the computing system to store the second plurality of objects or references to the second plurality of objects in the storage library; Computer-executable instructions, when executed by the computing system, cause the computing system to define a first package of objects that includes the first plurality of objects but does not include the second plurality of objects, wherein the first package includes the definitions of the first plurality of objects; Computer-executable instructions, when executed by the computing system, cause the computing system to define a second package including the first plurality of objects and the second plurality of objects, wherein the second package includes the definitions of the first plurality of objects and the second plurality of objects; and Computer-executable instructions, when executed by the computing system, cause the computing system to store the first package and the second package in the storage.

18. A method implemented in a computing environment including a computing system, the computing system including at least one hardware processor and at least one memory coupled to the at least one hardware processor, the method comprising: Receives a first set of objects that can be used with the first application; Store the first plurality of objects or references to the first plurality of objects in the repository; Receive a second plurality of objects that can be used with the first application when the second application is also installed on the client system; Store the second plurality of objects or references to the second plurality of objects in the storage library; A first package is defined that includes the first plurality of objects but does not include the second plurality of objects, wherein the first package includes the definitions of the first plurality of objects; The definition includes a second package comprising the definitions of the first plurality of objects and the second plurality of objects, wherein the second package includes the definitions of the first plurality of objects and the second plurality of objects; and The first package and the second package are stored in the storage repository.

Citation Information

Patent Citations

  • Method for loading application and upgrading application and terminal device

    CN111095199A