GENERATING AND VISUALIZING A DATA STRUCTURE OF A MANAGEMENT MODEL OF AN APPLICATION SERVER

Generating and visualizing a data structure for a management model of an application server is provided herein. In particular, a computing system obtains, from an executing application server, a first version of a management model comprising a plurality of resources. A set of the plurality of resources comprising a key identifying a resource type, a value identifying a resource name for the resource type, and an address identifying a path from a root resource of a resource tree. The computing system stores, in a first version data structure, a plurality of resource node records, each of the plurality of resource node records corresponding to a different one of the plurality of resources. The computing system stores, in the first version data structure, a plurality of edge records, at least a portion of the plurality of edge records identifying a relationship between resource node records.

BACKGROUND

Application servers are increasingly used to simplify application development, to facilitate application distribution, for scalability purposes, and for a variety of other reasons.

SUMMARY

The examples disclosed herein provide generating and visualizing a data structure of a management model of an application server. In particular, a computing system including one or more processor devices of one or more computing devices obtains from an executing application server configured to provide one or more services to a plurality of applications, each application being configured to interface with the application server to obtain the one or more services, a first version of a management model comprising a first plurality of resources. The first plurality of resources includes configuration parameters used by the application server to provide at least some of the services to the plurality of applications, and includes first relationship information that identifies relationships among the first plurality of resources. A set of the first plurality of resources includes a key identifying a resource type, a value identifying a resource name for the resource type, and an address identifying a path from a root resource of a resource tree. A set of the first plurality of resources is capable of implementing an operation comprising a parameter. The computing system stores, in a first version data structure, a first plurality of resource node records, each of the first plurality of resource node records corresponding to a different one of the first plurality of resources. The computing system stores, in the first version data structure, a first plurality of edge records, at least a portion of the first plurality of edge records identifying a relationship between resource node records.

In one example, a method is provided. The method includes obtaining, by a computing system comprising one or more processor devices of one or more computing devices, from an executing application server configured to provide one or more services to a plurality of applications, each application being configured to interface with the application server to obtain the one or more services, a first version of a management model comprising a first plurality of resources. The first plurality of resources includes configuration parameters used by the application server to provide at least some of the services to the plurality of applications, and includes first relationship information that identifies relationships among the first plurality of resources. A set of the first plurality of resources includes a key identifying a resource type, a value identifying a resource name for the resource type, and an address identifying a path from a root resource of a resource tree. A set of the first plurality of resources is capable of implementing an operation comprising a parameter. The method further includes storing, in a first version data structure, a first plurality of resource node records, each of the first plurality of resource node records corresponding to a different one of the first plurality of resources. The method further includes storing, in the first version data structure, a first plurality of edge records, at least a portion of the first plurality of edge records identifying a relationship between resource node records.

In another implementation, a computing system is disclosed. The computing system includes one or more processor devices of one or more computing devices obtaining, from an executing application server configured to provide one or more services to a plurality of applications, each application being configured to interface with the application server to obtain the one or more services, a first version of a management model comprising a first plurality of resources. The first plurality of resources includes configuration parameters used by the application server to provide at least some of the services to the plurality of applications, and includes first relationship information that identifies relationships among the first plurality of resources. A set of the first plurality of resources includes a key identifying a resource type, a value identifying a resource name for the resource type, and an address identifying a path from a root resource of a resource tree. A set of the first plurality of resources is capable of implementing an operation comprising a parameter. The one or more processor devices of the one or more computing devices further stores, in a first version data structure, a first plurality of resource node records, each of the first plurality of resource node records corresponding to a different one of the first plurality of resources. The one or more processor devices of the one or more computing devices further stores, in the first version data structure, a first plurality of edge records, at least a portion of the first plurality of edge records identifying a relationship between resource node records.

In another implementation, a computer program product is disclosed. The computer program product is stored on a non-transitory computer-readable storage medium and includes instructions to cause one or more processor devices of one or more computing devices to obtain, from an executing application server being configured to provide one or more services to a plurality of applications, each application being configured to interface with the application server to obtain the one or more services, a first version of a management model comprising a first plurality of resources. The first plurality of resources includes configuration parameters used by the application server to provide at least some of the services to the plurality of applications, and includes first relationship information that identifies relationships among the first plurality of resources. A set of the first plurality of resources comprises a key identifying a resource type, a value identifying a resource name for the resource type, and an address identifying a path from a root resource of a resource tree. A set of the first plurality of resources is capable of implementing an operation comprising a parameter. The instructions to cause the one or more processor devices of the one or more computing devices further include instructions to store, in a first version data structure, a first plurality of resource node records, each of the first plurality of resource node records corresponding to a different one of the first plurality of resources. The instructions to cause the one or more processor devices of the one or more computing devices further include instructions to store, in the first version data structure, a first plurality of edge records, at least a portion of the first plurality of edge records identifying a relationship between resource node records.

DETAILED DESCRIPTION

Application servers are increasingly used to simplify application development, to facilitate application distribution, for scalability purposes, and for a variety of other reasons.

Application servers, such as a WildFly application server, host and run applications, such as for testing and development. Application servers have a management model that includes components accessible to a user, such as a software developer, through an Application Programming Interface (API), which may be at least partially defined by the application server itself. Administrators often require a detailed understanding of the management model, including relationships between different elements of the management model. However, accessing the management model generally requires execution by the application server, such that the management model cannot be accessed separately from the application server. Further, oftentimes it is difficult to search and navigate the management model and/or ascertain differences between different versions of the management model, such as due to changed attributes and/or deprecated operations.

The examples disclosed herein provide generating and visualizing a data structure of a management model of an application server. A computing system obtains a version of a management model and then stores resource node records identifying a resource in a data structure and stores edge records identifying a relationship of the resource in the data structure. A different data structure is developed for each version of the management model. Accordingly, the computing system provides data structures independent from the application server. These data structures can be accessed to search the complete management model, illustrate relationships of resources, access to all versions of a management model from a single user interface (UI), compare different versions of the management model, and/or can compare different versions of resources between different versions of the management models.

FIG.1Ais a block diagram of a computing system suitable for generating and visualizing a data structure of a management model of an application server according to one example. The computing system10includes a computing device12, which in turn includes a processor device14coupled to a memory16. It is noted that for illustrative purposes to reduce space, only some of the computing devices12and other computer components are shown with a processor device14and a memory16. However, each of the computing devices12and/or other computer components may include a processor device14and/or a memory16. Further, each of the computing devices12may include a plurality of computing devices12. Collectively, the processor devices14may be referred to as a processor device set14.

The computing device12is in communication with one or more application servers18. The phrase “application server” as used herein refers to a middle ware execution environment that provides services to applications20that have been written to interface with the application server, such as, by way of non-limiting example, database connectivity and access services, session security services, state maintenance services, and the like. For example, an application server may host applications20and include a database connection service interacts with an application20to facilitate connection of the application20to a database.

The examples are disclosed herein using a particular application server18as an example, in particular the WildFly application server. The WildFly application server is written in Java, implements the Java Platform, Enterprise Edition (Java EE) specification, and runs on multiple platforms. The applications20may include any useful or desired application, such as, by way of non-limiting example, a human resources application, a customer relations application, a billing application, and the like.

The application server18includes a management model22, which may have different versions24-1,24-N. A management model is a comprehensive service layer model that includes a set of entities26-1,26-N accessible through an Application Programming Interface (API)27. At least a portion of the management model22is defined by the application server18. Accordingly, a management model22is generally accessed only when executed by the application server18. The management model22is not generally accessible separate from the application server18. The management model22includes resources28-1-1-28-N-N (referred to generally as resources28), and features30-1-1-30-N-N (referred to generally as features30), such as attributes, operations, parameters, capabilities, constraints, etc. In certain implementations, the management model includes XML files and metadata regarding resources28and/or features30.

Resources28program objects with a unique address, provide operations, may contain attributes, and can declare one or more capabilities. As used herein, reference to a resource is a reference to a resource record of a resource. Each resource includes a key29A, a value29B, and an address29C.

For example, one resource28contains a configuration to connect to a database, which is used by the application server18to provide a database connection service for the applications20running on the application server18. Resources28are organized in a resource tree, where the address for a particular node is the path to the node in the tree. Each segment in a resource28address is a key/value pair, where the key is the resource type and the value is the name of a particular resource of the given resource type. For example, resource types include subsystem, interface, socket-binding, etc. Further, the subsystem has child resources of type connector and virtual-server. As another example, names may include web or messaging for a subsystem type resource, or http or https for a web subsystem connectors type resource. Accordingly, the address for a resource28is the ordered list of key/value pairs from a root resource of the resource tree to the resource. For example, for resource “connector=http,” the key is “connector,” the value is “http,” and the address is “/subsystem=web/connector=http,” meaning the path to the resource28is from the root resource to the resource “subsystem=web.” It is noted that for an HTTP API, a “/” may be used to separate the key and the value instead of an “=”. For example, one such resource address would be “http://localhost:9990/management/subsystem/web/connector/http.” Further, resources28may be singletons allowing a fixed number of children or non-singletons allowing an arbitrary number of children.

One example of a resource is “/subsystem=messaging-activemq/server=my-server/jms-queue=my-jms-queue,” which provides a message queue to application developers. Another example of a resource is “/subsystem=batch-jberet/jdbc-job-repository=my-repository,” which provides a job repository for batch processing to application developers.

One feature30of a resource28is attributes that provide information about the properties or state of the resource28. In certain implementations, each resource28includes at least one attribute. Attributes may have a string name and a value type, such as Boolean, numeric, string, etc. Attributes may be read-only or read-write. Attributes may have two storage types, configuration and runtime. A configuration storage type means the value of the attribute is stored in the persistent configuration, such as in an XML file. A runtime storage type means the value is only available from a running server, and not stored in a persistent configuration.

One feature30of a resource28is operations that may be implemented by a resource28, such as to query or modify a state of the resource28. In certain implementations, an operation has a string name and may include parameters (optional), which is another feature30of the resource28. Each parameter may include a string name and a value type. Parameters may operate similarly to attributes and be used to invoke operations. Some operations are global operations that apply to all resources28. Some operations only apply to certain resources28. For example, in certain implementations, every resource28except the root resource has an add operation and a remove operation. The add operation may include parameters and the remove operation does not include parameters.

Another feature30of a resource28is child/parent relationships. Resources28may support child resources that are associated with the resource28. Resources28may include descriptions that include metadata describing attributes, operations, and/or child types, or the like.

Another feature30of a resource28includes capabilities, which have a string name and are declared by resources28. Capabilities are used to create references between resources28and attributes. A value of an attribute can be a capability-reference to indicate that the attribute is a reference to another area of the management model22.

As noted above, the application server18may include different versions24-1-24-N (may be referred to generally as version24) of the management model22as each new version of the application server18includes a new version24of the application server18. The version24of the management model22is stored in the root resource of the management model22. Every new version24of the management model22introduces new resources, attributes, operations and parameters. At the same time other resources, attributes, operations and parameters are marked as deprecated. Every deprecation contains the version24from when the element is obsolete and a reason for the deprecation.

The computing device12includes an analyzer44. Because the analyzer44is a component of the computing device12, functionality implemented by the analyzer44may be attributed to the computing device12generally. Moreover, in examples where the analyzer44comprises software instructions that program the processor device14to carry out functionality discussed herein, functionality implemented by the analyzer44may be attributed herein to the processor device14.

In certain implementations, the analyzer44is a command line tool that parses the management model22and stores the information in a data structure46-1-46-N (may be referred to as a data structure46), such as a graph database. The data structures46may be stored in a data structure repository48. The analyzer44can process the entire management model22or a subsection thereof, such as a subtree of the management model22. It is noted that the analyzer44obtains the management model22from an executing application server18configured to provide one or more services to a plurality of applications20. Each application20is configured to interface with the application server18to obtain the one or more services.

The analyzer44traverses the resource tree in a recursive manner until all entities26, such as resources28and features30, are processed and stored in the data structure46. The analyzer44creates a new data structure46for each version24of the management model22. Further, the entities26of the management model22are saved as nodes50in the data structure46. For example, the entities26-1of a first version24-1of the management model22are stored as nodes50-1of a first data structure46-1. Resources28of the management model22are stored as resource nodes52-1-1-52-N-N (referred to generally as resource nodes52), and features30of the management model22are stored as feature nodes54-1-1-54-N-N (referred to generally as feature nodes54). Each of the resource nodes52corresponds to a different one of the resources28of the management model22. It is noted that any reference to resource nodes52and/or feature nodes54is a reference to resource node records and/or feature node records.

For example, for each resource28, the analyzer44executes the read-resource-description operation for the resource28. The analyzer44stores the resource28, including the key, value, address, and/or description, as a resource node52in the data structure46. The analyzer44also stores any features30as a feature node54in the data structure. For example, attributes, operations, parameters, capabilities, constraints, and versions are stored in the data structure46. Further, the analyzer44stores relationship information42-1-42-N (may be referred to generally as relationship information42) of the management model22associated with the resource node52in the data structure46as edge records56-1-56-N (may be referred to generally as edge records56). At least a portion of the edge records56identify a relationship between resource nodes52, such as between a resource28and a parent resource or child resource. At least a portion of the edge records56identify a relationship between a resource node52and a feature node54. For example, linking a particular resource with a particular operation, linking a particular resource with a particular attribute, or the like.

As noted above, in certain implementations, the data structure46is a graph database structure. As noted above, use of the data structure46allows for queries directed to the management model22without need for a running application server18. Especially as querying different versions of the management model22or comparing resources28between different versions would require many different application servers18. Further, some information may be hidden in the management model22and/or hard to find. Use of an independent data structure46provides easier and faster access.

To use the data structures46, the computing device12includes a model service repository60including a plurality of model services62-1-62-N (referred to generally as model service62). Each model service62may use a REST (representational state transfer) API to retrieve specification information about the management model22from the data structures46. Each model service62is bound to one data structure46, which itself represents one specific version24of the management model22. In certain implementations, the model service62defines endpoints, such as URLs, which may return JSON (JavaScript Object Notation). The computing device12further includes an API service64with a model service registry66. Each model service62registers with the model service registry66using a unique identifier68-1-68-N (may be referred to generally as identifier68). The unique identifier may contain information specific to the version24of the management model22, such as: Upon startup the model service registers itself at the API service using a unique identifier. The identifier contains central information from the analyzed management model: <product name>-<product version>-mgt-<management version>.

A user, through a browser70on a user computing device72, sends a request to the API service64. The API service64provides a registry for the model services62, a single point of contact and proxy for the browser70, and computes differences between different versions of resources28, such as through two versions24of the management model22. In certain implementations, the API service64extracts the identifier68from the URL in the request to identify the particular model service62being queried.

The API service64can compare a resource28between two different versions24of a management model22. In certain implementations, the API service64produces a JSON patch document that contains operations describing the necessary modifications to turn the source version into the target version. The API service64uses the model service62to get the resource descriptions, and then generates a JSON patch and uses the mime type application/json-patch+json to send the result back to the client.

Some example queries that may be made by the user computing device72are as follows:

/management-model/query?name=<name>: Returns all resources, attributes, operations, and capabilities which match the given name.

/management-model/deprecations?since=<version>: Returns all resources, attributes, operations and parameters which have been marked as deprecated since the given version.

/resources/query?name=<name>: Returns all resources which match the given name.

/resources/deprecations?since=<version>: Returns all deprecated resources since the given version.

/resources/resource?address=<address>&skip=a|o|g|c: Returns the resource with the given address with all attributes, operations, and capabilities, but without child resources.

/resources/subtree?address=<address>: Returns a sub-tree starting at the root resource down to the resource with the given address.

/resources/children?address=<address>: Returns the direct children of the resource with the given address.

/attributes/query?name=<address>: Returns all attributes which match (ignore case) the given name.

/attributes/deprecations?since=<version>: Returns all deprecated attributes since the given version. If the version is omitted, this endpoint returns all deprecations.

/operations/query?name=<name>: Returns all operations which match (ignore case) the given name.

/operations/deprecations?since=<version>: Returns all deprecated operations since the given version. If the version is omitted, this endpoint returns all deprecations.

/capabilities/query?name=<name>: Returns all capabilities which match (ignore case) the given name.

Accordingly, data of the management model22of the application server18is prepared and stored in such a way to facilitate performance of certain tasks. For example, the data structure46may provide a graphical representation of resources28. The data structure46may illustrate relationships between resources28, and capabilities, operations, and attributes of the resources28. The data structure46facilitates finding inconsistencies and identifying weakness and opportunities for optimizations. The data structure may facilitate performing evaluations and analyses over a multitude of resources28, attributes, and operations. The data structure46may facilitate finding attributes which have been marked as deprecated since a given version.

FIG.1Bis a diagram of a data structure46embodied as a graph database80of the computing system ofFIG.1Aaccording to one example. The graph database80includes a plurality of nodes, each of which may include a further plurality of nodes52,54. The graph database80includes resource nodes52and feature nodes54(seeFIG.1A). The feature nodes54include attribute nodes82, operation nodes84, parameter nodes86, version nodes88, capability nodes90, and constraint nodes92. Further, the graph database80includes relationships between the resource nodes52and feature nodes54.

For example, a resource node52may be linked to one or more other resource nodes52indicating a relationship that the resource node52is a child of the other resource nodes52. The resource node52may be linked to one or more operation nodes84indicating a relationship that the resource node52provides the one or more operations. The resource node52may be linked to one or more capability nodes90indicating that the resource node52declares the one or more capabilities. The resource node52may be linked to one or more attribute nodes82indicating a relationship that the resource node52has the one or more attributes.

For each attribute, the analyzer44stores the attribute and basic properties thereof, such as data type, access type, and/or storage type, in an attribute node82(may also be referred to as an attribute node record). If the attribute references a capability, the analyzer44stores the relationship to the capability. If the attribute has constraints, requires other attributes, or defines alternatives, the analyzer44stores information such as relationships in the data structure46. An attribute node82holds most of metadata of the attribute, such as type, required, nillable, storage, etc. Type may include string or a complex data type of other attributes. An attribute node82may be linked to one or more other attribute nodes82indicating a relationship that the attribute node82is an alternative of the other attribute nodes82, comprises the other attribute nodes82(e.g., as in a complex attribute), and/or requires the other attribute nodes82, or the like. Further, the attribute node82may be linked to a capability node90indicating a relationship that the attribute node82references a capability. The attribute node82may be linked to one or more constraint nodes92indicating a relationship that the attribute is sensitive to the constraint.

For each operation, the analyzer44stores the operation and basic properties thereof, such as data type, access type, and/or storage type, in an operation node84(may also be referred to as an operation node record). Each operation node record84corresponds to an operation implementable by a resource28. For each parameter of the operation, the analyzer44stores the parameter and basic properties thereof, such as data type, access type, and/or storage type, in a parameter node86(may also be referred to as a parameter node record). If the parameter references a capability, the analyzer44stores a relationship to this capability in the data structure46. If the parameter has constraints, requires other attributes, or defines alternatives, the analyzer44stores such information as relationships in the data structure46. In certain implementations, global operations are stored only once in the database.

An operation node84may be linked to one or more parameter nodes86indicating a relationship that the operation node84accepts the parameter node86. The parameter node86may be linked to one or more other parameter nodes86indicating a relationship that the parameter node86requires the other parameter nodes86, comprises the other parameter nodes86, and/or is an alternative to the other parameter nodes86, or the like. Further, the parameter node86may be linked to one or more capability nodes90indicating a relationship that the parameter node86references the capability node90.

Version information may be stored in version nodes88(may also be referred to as a version node records). A set of the version nodes88corresponds to resources28. One or more of the resource nodes52, attribute nodes82, operation nodes84, and/or parameter nodes86may be linked to a version node88indicating a relationship that the nodes are associated with and/or deprecated since a particular version.

FIG.2is a flowchart of a method for generating a data structure46of a management model22of an application server18according to one example.FIG.2will be discussed in conjunction withFIGS.1A-1B. A computing system10including one or more processor devices14of one or more computing devices12obtains, from an executing application server18configured to provide one or more services to a plurality of applications20, each application20being configured to interface with the application server18to obtain the one or more services, a first version24-1of a management model22comprising a first plurality of resources28(1000). The first plurality of resources28includes configuration parameters used by the application server to provide at least some of the services to the plurality of applications20, and includes first relationship information42that identifies relationships among the first plurality of resources28. A set of the first plurality of resources28includes a key29A identifying a resource type, a value29B identifying a resource name for the resource type, and an address29C identifying a path from a root resource of a resource tree. A set of the first plurality of resources28is capable of implementing an operation comprising a parameter.

The computing system10stores, in a first version data structure46, a first plurality of resource node records52, each of the first plurality of resource node records52corresponding to a different one of the first plurality of resources28(1002). The computing system10stores, in the first version data structure46, a first plurality of edge records56, at least a portion of the first plurality of edge records56identifying a relationship between resource node records52(1004).

FIG.3is a flowchart illustrating a method for generating a data structure46of a management model22of an application server18according to one example. The analyzer44identifies a resource28(2000) and reads a resource description of the resource28(2002). The analyzer44stores the resource28in a data structure46, such as a graph database, as a resource node52(2004). The analyzer44links the resource28to any parent resource (2006). It is noted that the root resource does not have a parent resource. The analyzer44, for each feature of the resource28, stores features as feature nodes54in the data structure46and links relationships of features, such as to resource nodes52and other feature nodes54(2008). In particular, for each capability, the analyzer44stores capabilities as capability nodes90and links relationships (2010). For each attribute, the analyzer44stores attributes as attribute nodes82and links relationships (2012). For each operation, the analyzer44stores operations as operation nodes84and links relationships (2014). For each parameter, the analyzer44stores parameters as parameter nodes86and links relationships (2016).

The analyzer44reads child resources, if any (2018). The analyzer44then determines whether there are more child resources (2020). If so, the process proceeds to step2000and the child resource is identified. If not, the process ends. In this way, the process continues until the analyzer reads each resource28.

FIG.4is a flowchart illustrating a method for generating capability nodes90in the data structure46according to one example. The analyzer44identifies a capability (3000) and then stores the capability in the data structure as a capability node90(3002). The analyzer44determines whether there are more capabilities (3004). If so, the process proceeds to step3000. Otherwise, the process ends. In particular, for each resource28, the analyzer44identifies and stores the related capabilities. In this way, the process continues until the analyzer has read each capability of a resource28.

FIG.5is a flowchart illustrating a method for generating attribute nodes82in the data structure46according to one example. The analyzer44identifies an attribute (4000) and stores the attribute in the data structure46as an attribute node82(4002). The analyzer44links capabilities, constraints, alternatives, and/or requirements of the attribute (4004). The analyzer44determines whether the attribute is a complex attribute (4006). If so, the analyzer44identifies a next attribute of the complex attribute (4008), and then proceeds to step4002. In this way, the process continues until each attribute of the complex attribute is stored in the data structure46as an attribute node82. If in step4006, the attribute is not complex attribute, the analyzer44determines whether there are more attributes (4010). If so, the process proceeds to step4000. Otherwise, the process ends. In this way, the process continues until the analyzer44has stored each attribute of a resource as an attribute node82.

FIG.6is a flowchart illustrating a method for generating operation nodes84and parameter nodes86of the data structure46according to one example. The analyzer44identifies an operation (5000) and stores the operation in the data structure46as an operation node84(5002). The analyzer44then identifies a parameter of the operation (5004) and stores the parameter in the data structure46as a parameter node86(5006). The analyzer44links capabilities, constraints, alternatives, and/or requirements of the parameter (5008). The analyzer44determines whether the parameter is a complex parameter (5010). If so, the analyzer44identifies the next parameter of the complex parameter (5012), and proceeds to step5004. In this way, the process continues until each parameter of the complex parameter is stored in the data structure46as a parameter node86. If in step5010, the parameter is not a complex parameter, the analyzer44determines whether there are more parameters (5014). If so, the process proceeds to step5004. If not, the analyzer44links the operation to any global operation (5016), if applicable. The analyzer44then determines whether there are more operations (5018). If so, the process proceeds to step5000. If not, the process ends. In this way, the process continues until the analyzer44has stored each operation as an operation node84, and each corresponding parameter as a parameter node86.

FIGS.7A-7Eare diagrams illustrating a graphical user interface of the system ofFIGS.1A-1B. In particular,FIG.7Aillustrates a graphical user interface (GUI) providing different WildFly versions and associated management model versions. In this example, the browser provides a first card100-1of WildFly version 23.0.0 and corresponding management model version 16.0.0, a second card100-2of WildFly version 17.0.0 and corresponding management model 10.0.0, and a third card100-3of WildFly version 11.0.0 and corresponding management model 5.0.0. The user can switch the active WildFly version using the cards100-1-100-3on the home screen or using the context selector102in the header.

FIG.7Billustrates a GUI providing a navigation of resources and corresponding features. For example, the GUI provides an expandable list104of the resource tree of resources28associated with a management model22. Selecting a resource28provides details of the selected resource28, such as attributes, operations and capabilities. The list of resources28includes Core Service, Deployment, Deployment-Overlay, Extensions, Interface, Path, Socket-Binding-Group, and Subsystem. Further, the Subsystem resource has a child resource of Batch-Jberet, which has further child resources.

The GUI provides a feature section106providing attributes, operations, and capabilities. For example, for the Batch-Jberet resource, the table current provides associated attributes and corresponding information, including name, description, type, storage, and access type. Attributes of the batch subsystem include a default-job-repository, default-thread-pool, restart-jobs-on-resume, and security-domain. Attributes of restart-jobs-on-resume states that if set to true when a resume operation is to be invoked after a suspend operation, any jobs stopped during the suspend will be restarted, and a value of false will leave the job in a stopped state. Attributes of security-domain references the security domain for batch jobs, and this can only be defined if the Elytron subsystem is available.

FIG.7Cillustrates a GUI providing text search functionality. For example, the GUI provides a text search bar108, and a user has requested a search for the word “transport.” The GUI provides a search results list110providing those nodes containing the term “transport,” such as in the name or description of the node. The search result list110can be filtered by resources, attributes, operations, and capabilities.

FIG.7Dillustrates a GUI providing deprecated attributes, operations, and/or resources associated with a particular version, such as with WildFly 23.0.0 and management model version 16.0.0. For example, the deprecated attributes include thread-pool-size. This screen shows a list of all deprecated resources, attributes, and operations. It can be filtered by version and element type. With this information at hand, an administrator can quickly get a grasp about what has changed compared to the last version.

FIG.7Eillustrates a GUI providing differences between resources. In particular, the GUI provides a first version selector112-1, a second version selector112-2, and a resource selector114. For example, the first version is WildFly Full 23.0.0Final, the second version is WildFly Full 11.0.0.Final, and the resource is /subsystem=ee. A first version of /subsystem=ee associated with WildFly Full 23.0.0.Final is provided in a first resource version section116-1, and a second version of /subsystem=ee associated with WildFly Full 11.0.0.Final is provided in a second resource version section116-2. A comparison version section118is provided therebetween, illustrating differences between the first resource version and the second resource version. In certain implementations, the difference is shown as a JSON patch.

FIG.8Ais a flowchart illustrating accessing different versions of a management model according to one implementation. The computing system10on a display device presents user interface imagery that identifies the first version24of the management model22and the second version24of the management model22(6000). The computing system10receives user input selecting the first version22of the management model24(6002). The computing system10subsequently receives a request for information about a resource28(6004). The computing system10, based on the user input, accesses the first version24of the management model22(6006). The computing system10accesses a node record52that corresponds to the resource28(6008). The computing system10presents information from the node record52about the resource28(6010).

FIG.8Bis a flowchart illustrating conducting a textual search request of a management model according to one implementation. The computing system10receives a textual search request comprising a keyword identifying a set of characters (7000). The computing system10traverses the first version data structure46(7002). The computing system10identifies at least one resource node record52or feature node record54that contains a value or a description that includes the keyword (7004). The computing system10sends a reply that identifies each resource28corresponding to a resource node record52that contains the value or the description and each feature30corresponding to a feature node record54that contains the value or the description (7006).

FIG.8Cis a flowchart illustrating comparing two different versions of a resource of a management model according to one implementation. The computing system10receives a request to compare two different versions of a resource28(8000). The computing system10retrieves a first version24of a resource node record52corresponding to the resource28from the first data structure46(8002). The computing system10retrieves a second version24of the resource node record52corresponding to the resource28from the second data structure46(8004). The computing system10determines differences between the first version of the resource node record52and the second version of the resource node record52(8006). The computing system sends a reply that identifies differences between the first version24of the resource node record52and the second version24of the resource node record52(8008).

FIG.9is a simplified block diagram of the computing system10illustrated inFIG.1Aaccording to one implementation. In this example, the computing system10includes one or more processor devices14of one or more computing devices12. The computing system10obtains from an executing application server18configured to provide one or more services to a plurality of applications20, each application20being configured to interface with the application server18to obtain the one or more services, a first version24-1of a management model22comprising a first plurality of resources28. The first plurality of resources28includes configuration parameters used by the application server18to provide at least some of the services to the plurality of applications20, and includes first relationship information42-1that identifies relationships among the first plurality of resources28. A set of the first plurality of resources28includes a key29A identifying a resource type, a value29B identifying a resource name for the resource type, and an address29C identifying a path from a root resource of a resource tree. A set of the first plurality of resources28is capable of implementing an operation comprising a parameter. The computing system10stores, in a first version data structure46-1, a first plurality of resource node records52, each of the first plurality of resource node records52corresponding to a different one of the first plurality of resources28. The computing system stores, in the first version data structure46-1, a first plurality of edge records56-1, at least a portion of the first plurality of edge records56-1identifying a relationship between resource node records52.

FIG.10is a block diagram of a computing device120containing components suitable for implementing any of the processing devices disclosed herein. The computing device120includes a processor device122, a system memory124, and a system bus126. The system bus126provides an interface for system components including, but not limited to, the system memory124and the processor device122. The processor device122can be any commercially available or proprietary processor.

The system bus126may be any of several types of bus structures that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and/or a local bus using any of a variety of commercially available bus architectures. The system memory124may include non-volatile memory128(e.g., read-only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), etc.), and volatile memory130(e.g., random-access memory (RAM)). A basic input/output system (BIOS)132may be stored in the non-volatile memory128and can include the basic routines that help transfer information between elements within the computing device120. The volatile memory130may also include a high-speed RAM, such as static RAM, for caching data.

A number of modules can be stored in the storage device134and in the volatile memory130, including an operating system136and one or more program modules, which may implement the functionality described herein in whole or in part. All or a portion of the examples herein may be implemented as a computer program product138stored on a transitory or non-transitory computer-usable or computer-readable storage medium, such as the storage device134, which includes complex programming instructions, such as complex computer-readable program code, to cause the processor device122to carry out the steps described herein. Thus, the computer-readable program code can comprise software instructions for implementing the functionality of the examples described herein when executed on the processor device122. The processor device122, in conjunction with the network manager in the volatile memory130, may serve as a controller or control system for the computing device120that is to implement the functionality described herein.

The computing device120may also include one or more communication interfaces140, depending on the particular functionality of the computing device120. The communication interfaces140may comprise one or more wired Ethernet transceivers, wireless transceivers, fiber, satellite, and/or coaxial interfaces by way of non-limiting examples.