Dynamic Plug-in Dependency Resolution via Manifest

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing plug-in technologies resolve dependencies only at compile-time, limiting the complexity and adaptability of plug-ins and requiring explicit referencing of dependent components in host application code.

Innovation Solution

The approach dynamically resolves plug-in dependencies and selects interfaces at runtime using meta information stored in a manifest, allowing plug-ins to be loaded, unloaded, and re-loaded without referencing dependent components in the host application's code, enabling dynamic instantiation and management of dependent components.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If plug-in dependencies are resolved at compile-time, then the host application code can reference dependent components explicitly, but the plug-in complexity and adaptability are limited

Engineering Contradiction:
Improveplug-in adaptabilityVSAvoiddependency resolution complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent implements dynamic dependency resolution at runtime instead of static compile-time resolution. The host application loads a manifest file containing dependency information and dynamically resolves dependencies during execution, allowing plug-ins to be loaded, unloaded, and re-loaded without recompiling the host application. This dynamic approach enhances adaptability while managing complexity through structured manifest-based dependency declaration.

Inventive Principle:
Principle #15Dynamics

2Adaptability or versatility

If plug-in dependencies are resolved at compile-time, then the host application structure is simple, but the plug-in cannot be dynamically loaded or unloaded

Engineering Contradiction:
Improveplug-in lifecycle managementVSAvoidruntime overhead
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent performs preliminary action by loading and parsing the manifest file containing dependency information before runtime plug-in loading. The manifest pre-declares all dependencies in a structured format, enabling the system to quickly resolve dependencies during runtime without extensive searching or analysis. This preliminary preparation reduces runtime overhead while enabling dynamic plug-in lifecycle management.

Inventive Principle:
Principle #10Preliminary action

3Ease of manufacture

If the host application code references dependent components of the plug-in, then the dependency relationship is explicit, but the plug-in cannot be independently managed

Engineering Contradiction:
Improveplug-in independenceVSAvoiddependency information
Core Design Contradiction:
Ease of manufactureVSLoss of information

Solution Approach 1:

The patent extracts dependency information from the host application code and places it in a separate manifest file associated with the plug-in. This extraction allows the host application to reference the plug-in as a black box without knowing its internal dependencies. The manifest contains all necessary dependency information, enabling independent plug-in management while preserving complete dependency information through the manifest structure.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentEP2098955B1Dynamic resolution of dependent components
Publication Date: 2011.12.28 SAP SE
  • EP2098955B1 patent drawingFigure 1
  • EP2098955B1 patent drawingFigure 2
  • EP2098955B1 patent drawingFigure 3

AI summary

The dynamic resolution of dependent components of a plug-in including, during a runtime of an application, dynamically accessing, for a plug-in invoked by the application, a manifest listing classes capable of providing an interface for the plug-in, and dependent components that provide functionality to the plug-in, and dynamically instantiating a class instance of at least one of the listed classes. Furthermore, the process includes dynamically resolving the listed dependent components, and dynamically loading the plug-in.