The present disclosure relates to methods and software for software modeling, and, more particularly, to methods and software for modeling one or more business adaptation catalogs.
Enterprise software systems are generally large and complex. Such systems can require many different components, distributed across many different hardware platforms, possibly in several different geographical locations. In order to design, configure, update or implement an enterprise software system, one is generally required to understand details of the system at varying levels, depending on his role in designing, managing or implementing the system. For example, a systems administrator may need a high-level technical understanding of how various software modules are installed on physical hardware, such as a server device or a network, and how those software modules interact with other software modules in the system. A person responsible for configuring the software may utilize a high-level functional understanding of the operations that each functional component provides. An application designer may utilize a low-level technical understanding of the various software interfaces that portions of the application require or implement. Further, an application developer may utilize a detailed understanding of the interfaces and functionality he is implementing in relation to the remainder of the system. However, the flow of a business process within an application today is typically hidden from a user. In some cases, it is possible to manually create a textual or graphical documentation of this process flow. This documentation, however, is typically not detailed enough and can become quickly outdated since its consistency with the actual application software is not (initially) verified or maintained automatically.
Within a development environment, an application can be developed using modeling systems. In general, these models can specify the types of development objects or components that can be used to build applications, as well as the relationships that can be used to connect those components. In an object-oriented architecture, for example, a defined application can include a combination of various data objects and resources (i.e., development objects). In that example, relationships among the development objects can include a relationship indicating that one data object inherits characteristics from another data object. Another example architecture is the model-view-controller (MVC) architecture. Applications built using the MVC architecture typically include three different types of components—models, which store data such as application data; views, which display information from one or more models; and controllers, which can relate views to models, for example, by receiving events (e.g., events raised by user interaction with one or more views) and invoking corresponding changes in one or more models. When changes occur in a model, the model can update its views. Data binding can be used for data transport between a view and its associated model or controller. For example, a table view (or a table including cells that are organized in rows and columns) can be bound to a corresponding table in a model or controller. Such a binding indicates that the table is to serve as the data source for the table view and, consequently, that the table view is to display data from the table. Continuing with this example, the table view can be replaced by another view, such as a graph view. If the graph view is bound to the same table, the graph view can display the data from the table without requiring any changes to the model or controller. In the MVC architecture, development objects can include models, views, controllers, and components that make up the models, views, and controllers. For example, application data in a model can be an example of a component that is a development object.
To graphically model an application such that a combination of abstract, graphical representations represent the components of the application and the relationships between those components, a developer typically uses a drawing tool, such as Microsoft Visio, that provides abstract representations and tools for manipulating and/or generating abstract representations. For example, a user of the drawing tool (such as a developer) can choose to use a circle (or any other suitable abstract representation or model) to represent a class (such as a class defined in the C++ or other object-oriented programming language) of an application developed under the object-oriented architecture. The circle that represents a development object can include data from the development object. For example, a name of a class (i.e., data from a development object) can be entered in a text box that is part of the circle, and that name can be displayed in the center of the circle. In addition to drawing tools, the developer can also use other graphical tools to generate graphical representations and models (e.g., Unified Modeling Language (UML) diagrams or Business Process Execution Languages (BPEL)) from application code or vice versa.
This disclosure provides various embodiments of systems, software, and computerized methods for generating a business adaptation catalog model. In one aspect, the software identifies one of a plurality of solutions associated with a particular application, and identifies a business adaptation catalog associated with the identified solution. The software then retrieves information from the business adaptation catalog defining a set of business elements, and generates a business adaptation catalog model illustrating the one or more business elements. Further, the business adaptation catalog can comprise a data structure defining the hierarchical relationships between the set of business elements and a set of constraints defining at least one relationship between at least two of the set of business elements.
While generally described as computer implemented software that processes and transforms the respective data, some or all of the aspects may be computer implemented methods or further included in respective systems or other devices for performing this described functionality. The details of these and other aspects and embodiments of the present disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims.
This disclosure generally describes an example environment 100 for creating and modeling additional variability for functions and data in an application, modeling information associated with one or more solutions used in connection with the application, and modifying and verifying the business integrity of both the application and its related solutions. At a high level, the model is a representation of a software system, part of a software system, or an aspect of a software system. The model can be associated with one or more views. A view of the model represents a subset of the information in the model. For purposes of discussion, the term “model” will be used to refer to both the model and a view of the model. The model, such as illustrated model 104, can be used in a software development process to describe or specify a software application, or parts or aspects of a software application, for developers implementing or modifying the application. The model specifies the design to a useful level of detail or granularity. In this way, a compliant implementation or deployment of the modeled functionality can conform to the specification represented by the model. For example, the model may represent a sequence of steps, executed to achieve a business result. According to the particular design, each step can result in the change of state of a business object. Business processes can be part of, triggered by, and superior to other business processes. Business processes can be modeled in a hierarchy. As described herein, the business process hierarchy includes a requirements definition, design specification, and implementation description level, but other ways of defining a business process or other view hierarchy are possible. Thus, the models described herein can be written in description notations appropriate for process modeling. As described in more detail below, the model may include any number of logical layers, each of which include one or more domains and represent a logical category of modeling such as high level business views, system independent process views, and implementation views. Each layer may be considered a sub-model or a model in its own right that can be bound with other layers/models. Moreover, each logical layer can—in some cases—be bound with a plurality of lower layers, such as one system independent process view being bound to a number of disparate, but similar, implementation views. Often, the domains in one layer substantially match the domains in other bound layers.
In this disclosure, techniques are provided to create and define one or more configuration controls in an application to provide additional points of built-in variability to functions and data within the application. Additional techniques are described for defining and modeling a set of constraints between these newly created configuration controls and other existing application engineering entities. One advantage of the configuration controls and their associated constraints is that they allow an application's business integrity to be ensured. In other words, the constraints are used to define certain requirements and relationships between application (or engineering) entities that must be met in order for the application (or instances of the application platform) to execute properly. In some instances, configuration controls and other engineering entities representing the variability of the application (collectively described as “variable engineering entities”) can be mapped to or associated with certain business elements of a business adaptation catalog associated with the solution that is built upon or in association with the underlying application. By mapping the business elements of the solution's business adaptation catalog to the variable and other engineering entities of the associated application, the configuration of the business adaptation catalog can be verified against the application's defined constraints to ensure that the each solution adheres to the business and logical integrity of the application and the requirements specified by the associated BAC. By verifying the relationship between these engineering and business entities via mapping and a model visualizing that mapping, runtime errors and issues caused by incompatibilities between the solution's BAC and its underlying application can be prevented before executing the solution. Further, this disclosure provides techniques for mapping configuration controls and other variable engineering entities of the application to one or more business elements associated with consumption (or business) entities associated with the BAC (or BACs) built on top of the application. The mapping between the business elements (of the BAC) and application's engineering entities can be visualized via one or more generated models to provide transparency and clear understanding to both customers and developers, providing detailed working models based upon the relationship between the underlying application and the one or more associated BACs. Still further, this disclosure provides additional techniques for generating (in some cases, automatically) constraints between the consumption (or business) elements of the BAC and the variable (and other) engineering entities of the solution's underlying application, the constraints based upon the required constraints and defined integrity relationships defined for the underlying application. Additionally, the techniques for generating the constraints can also be used to verify constraints previously defined for the BAC. By automatically generating the constraints associated with the BAC, consistency between the solution's application and BAC can be maintained so that inconsistent applications and solutions are minimized and/or avoided. Further, the automatic generation of constraints allows customers and developers of the solutions to avoid being concerned with the development of integrity constraints, and instead allows them to focus on generating the proper combination of the application's engineering entities and the BAC's consumption entities for the current situation.
In the context of this disclosure, the term “solution” represents a specific product or software provided to one or more users. Each solution comprises an application, which in turn comprises a set of development entities (interfaces, services, coding, data types, tables, etc.) that are used and/or executed by an end user or customer (in connection with the solution). The application provides a certain set of services, offers a certain set of functionality, and supports a certain set of processes. In general, each application may, either in part or in whole, consist of or reuse the development and engineering entities of an application platform. The application platform is also a set of development entities like the application, but oriented towards reuse and thus variability, but without the solution-specific portions (i.e., the BAC or the user interface (UI) associated with the application and solution). The applications associated with different solutions may include or be based upon varying portions of the application platform according to the needs of the application's associated solution. While the underlying application platform provides the general description of a broad software architecture, each application may be associated with at least a portion of that architecture according to the needs of the solution and the end user for whom the solution is being developed. In addition to the application, each solution can also include one or more BACs, wherein the BACs expose the capabilities or functionality of the solution's application to an end (or business) user at a different level of abstraction from the application, and using terminology that is adapted to the specific target audience of the solution. By adapting the terminology to the specific target audience, the end (and business) users can select various elements from the BAC to provide a consistent subset of the available services, functionality, and processes associated with the related application that are exposed by the BAC of the solution. The solution, including the portions of the application and BAC selected in the consistent subset, can then be deployed to an end (or business) user's system, resulting in a user-specific customization of the application and solution.
Thus, in this disclosure, techniques are provided to model the development (or engineering) entities of an application with (in particular) their associated consistency constraints, the totality of which make up the engineering view or level of the solution. Additionally, techniques are provided to model the BAC associated with a particular solution, with its business elements and their associated selection or consumption constraints. The BAC makes up a consumption view or level of the solution. Further, techniques are provided to model the relationship between the elements of the application's engineering level view and the BAC's consumption level view. Additionally, techniques are provided to verify the validity, consistency, and sufficiency of the selection constraints associated with the BAC at the consumption level with regards to the consistency constraints associated with the application at the engineering level.
With respect to example
Turning to the illustrated embodiment, environment 100 includes or is communicably coupled with server 108 and one or more clients 110, at least some of which communicate across network 112. Server 108 comprises an electronic computing device operable to receive, transmit, process and store data associated with environment 100. For example, server 108 may be a Java 2 Platform, Enterprise Edition (J2EE)-compliant application server that includes Java technologies such as Enterprise JavaBeans (EJB), J2EE Connector Architecture (JCA), Java Messaging Service (JMS), Java Naming and Directory Interface (JNDI), and Java Database Connectivity (JDBC). But, more generally,
Illustrated server 108 includes example processor 120. Although
In the illustrated embodiment, processor 120 executes model-driven development tool (or environment) 116, modeled business application platform 124, and one or more solutions 126 based on the modeled business application platform 124. At a high level, the modeling environment 116, application platform 124, and solutions 126 are operable to receive and/or process requests from developers and/or users and present at least a subset of the results to the particular user via an interface.
The GUI modeling environment 116 may be or implement any development tool, toolkit, application programming interface (API), application, or other framework that allows a developer to develop, configure, and utilize various business elements that can be more easily modeled during modeling (or during design time) of a particular business application. For example, the model-driven framework or environment may allow the developer to use simple drag-and-drop techniques to develop pattern-based or freestyle user interfaces and define the flow of data between them. Such drag and drop techniques may include selecting, inputting, identifying, or some other indication that the developer is interested in a particular object or element. The result could be an efficient, customized, visually rich online experience. In some cases, this model-driven development may accelerate the application development process and foster business-user self-service. It further enables business analysts or IT developers to compose visually rich applications that use analytic services, enterprise services, remote function calls (RFCs), APIs, and stored procedures. In addition, it may allow them to reuse existing applications and create content using a modeling process and a visual user interface instead of manual coding; in other words, the modeling environment can be used to create, modify, and examine the model.
Further, the modeling environment 116 may include or be coupled with a modeling API 118. The modeling API 118 may be any API exposing the functionality of the modeling environment 116, as well as the information and data associated with or defined in the modeling environment. The modeling API 118 can be used by one or more external applications or entities to access and read information associated with one or more models 104 defined by or in the modeling environment 116. Information defining or associated with the relationships between two or more models 104, various entities in a single model 104, or associated or linked entities located in multiple models 104, can be retrieved and incorporated with newly created and/or previously-defined models.
In some cases, this example modeling environment 116 may provide a personalized, secure interface that helps unify enterprise applications, information, and processes into a coherent, role-based portal experience. Further, the modeling environment may allow the developer to access and share information and applications in a collaborative environment. In this way, virtual collaboration rooms allow developers to work together efficiently, regardless of where they are located, and may enable powerful and immediate communication that crosses organizational boundaries, while enforcing security requirements. Indeed, the modeling environment 116 may provide a shared set of services for finding, organizing, and accessing unstructured content stored in third-party repositories, and content management systems across various networks 112. Classification tools may automate the organization of information, while subject-matter experts and content managers can publish information to distinct user audiences. Regardless of the particular implementation or architecture, this modeling environment 116 may allow the developer to easily model various elements using this model-driven approach. As described in more detail later, the model is deployed, and environment 100 may translate the model into the required code or data structures for at least one application platform 124 or web service. When deployed, the application platform 124 may then be modified or enhanced, as appropriate, into a specific version of the application platform 124 (described as the application 122 in
More specifically, the application platform 124 may represent any modeled software or other portion of business functionality or logic. A first instance of application platform 124 may represent a first application that is .NET-based, while a second instance of application platform 124 may be a similar hosted web-based solution. In yet another example, application platform 124 may be a modeled composite application with any number of portions that may be implemented as Enterprise Java Beans (EJBs), or the design-time components may have the ability to generate run-time embodiments into different platforms such as J2EE, ABAP (Advanced Business Application Programming) objects, or Microsoft's .NET. In a further example, application platform 124 may merely be a modeled and published web service. Further, while illustrated as internal to server 108, one or more processes associated with modeling environment 116 or application platform 124 may be stored, referenced, or executed remotely. For example, a portion of an application may be a web service that is remotely called, while another portion of the application may be an interface object bundled for processing at remote client 110. Moreover, modeling environment 116 or application platform 124 may each be a child or sub-module of other respective software modules or enterprise applications (not illustrated) without departing from the scope of this disclosure.
In particular, the application platform 124 can be implemented to realize a software application that implements enterprise application service interfaces using a number of elements associated with and defining its architectural design. The elements of the application platform's 124 architecture are at times described in this specification as being contained or included in other elements; for example, a process component is described as being contained in a deployment unit. It should be understood, however, that such operational inclusion can be realized in a variety of ways and is not limited to a physical inclusion of the entirety of one element in another.
Generally, the architectural elements, or engineering entities, of the application platform 124 include the business object. A business object is a representation of a type of a uniquely identifiable business entity (an object instance) described by a structural model. Processes operate on business objects. A business object represents a specific view on some well-defined business content. A business object represents content, and instances of business objects include content, which a typical business user would expect and understand with little explanation. Whether an object as a type or an instance of an object is intended by the term “object” is generally clear from the context, so the distinction will be made explicitly only when necessary. Also, for convenience and brevity, an object instance may be described in this specification as being or including a real world event, activity, item, or the like; however, such description should be understood as stating that the object instance represents (i.e., contains data representing) the respective event, activity, item, or the like. Properly implemented, business objects are implemented free of redundancies.
Business objects can be further categorized as business process objects, master data objects, mass data run objects, dependent objects, and transformed objects. A master data object is an object that encapsulates master data (i.e., data that is valid for a period of time). A business process object, which is the kind of business object generally found in a process component, is an object that encapsulates transactional data (i.e., data representing a business entity or functionality that is valid for a point in time) and exposes services or interfaces that transform that data. A mass data run object is an application object that executes an algorithm for a particular mass data run. An instance of a mass data run object embodies or contains a particular set of selections and parameters. A mass data run object implements an algorithm that modifies, manages, and/or processes a large amount of data in multiple transactions, possibly but not necessarily with parallel processing. A dependent object is a business object used as a reuse part in another business object. A dependent object represents a concept that cannot stand by itself from a business point of view. Instances of dependent objects only occur in the context of a non-dependent business object. A transformed object is a transformation of multiple business objects for a well-defined purpose. It transforms the structure of multiple business objects into a common structure. A transformed object does not typically have its own persistency.
The architectural elements, or engineering entities, of the application platform 124 also include the process component. A process component is a software package that realizes a business process and generally exposes its functionality as services. Examples for process components are: due item processing, sales order processing, purchase order processing. The functionality includes the ability to perform all or parts of particular kinds of business transactions. It acts as a reuse element in different integration scenarios and is a modeling entity. A process component contains one or more semantically related business objects. Any business object belongs to no more than one process component.
Process Components are mainly modeling entities to group BOs, bundle web service calls to message choreographies and collect configuration settings. For configuration, Process Components are used to assign Business Process Variant Types to business configuration and for addressing of messages. As such, process components are modular and context-independent. That they are context-independent means that a process component is not specific to any specific application and is reusable.
The architectural elements (or engineering entities) also include the operation. An operation belongs to exactly one process component. A process component generally has multiple operations. Operations can be synchronous or asynchronous, corresponding to synchronous or asynchronous process agents, which will be described below. An operation is the smallest, separately-callable function, described by a set of data types used as input, output, and fault parameters, or some combination of them, serving as a signature. The system can optionally include a repository of service descriptions that includes a standards-based description of each of the supported service operations.
The architectural elements (or engineering entities) also include the service interface, which may be referred to simply as an interface. An interface is a named group of operations. Each operation belongs to exactly one interface. An interface belongs to exactly one process component. A process component might implement multiple interfaces. In some implementations, an interface will have only inbound or outbound operations, but not a mixture of both. One interface can include both synchronous and asynchronous operations. All operations of the same type (either inbound or outbound) which belong to the same message choreography will preferably belong to the same interface. Thus, generally, all outbound operations to the same other process component are in one interface.
The architectural elements (or engineering entities) also include the message. Operations transmit and receive messages. Any convenient messaging infrastructure can be used. A message is information conveyed from one process component instance to another, with the expectation that activity will ensue. An operation can use multiple message types for inbound, outbound, or error messages. When two process components are in different deployment units, invocation of an operation of one process component by the other process component is accomplished by an operation of the other process component sending a message to the first process component.
The architectural elements (or engineering entities) also include the process agent. Process agents do business processing that involves the sending or receiving of messages. Each operation will generally have at least one associated process agent. A process agent can be associated with one or more operations. Process agents can be either inbound or outbound, and either synchronous or asynchronous.
Asynchronous outbound process agents are called after a business object changes, e.g., after a business object instance is created, updated, or deleted.
Synchronous outbound process agents are generally triggered directly by a business object.
An outbound process agent will generally perform some processing of the data of the business object instance whose change triggered the agent or caused the agent to be called. An outbound agent triggers subsequent business process steps by sending messages using well-defined outbound services to another process component, which generally will be in another deployment unit, or to an external system. An outbound process agent is linked to the one business object that triggers the agent, but it is sent not to another business object but rather to another process component. Thus, the outbound process agent can be implemented without knowledge of the exact business object design of the recipient process component.
Inbound process agents are called after a message has been received. Inbound process agents are used for the inbound part of a message-based communication. An inbound process agent starts the execution of the business process step requested in a message by creating or updating one or multiple business object instances. An inbound process agent is not the agent of a business object but of its process component. An inbound process agent can act on multiple business objects in a process component.
Synchronous agents are used when a process component requires a more or less immediate response from another process component, and is waiting for that response to continue its work.
Operations and process components are described in this specification in terms of process agents. However, in alternative implementations, process components and operations can be implemented without use of agents using other conventional techniques to perform the functions described in this specification.
The architectural elements (or engineering entities) also include the deployment unit. A deployment unit includes one or more process components and, optionally, one or more business objects, that are deployed together on a single computer system platform. Conversely, separate deployment units can be deployed on separate physical computing systems. For this reason, a deployment unit boundary defines the limits of an application-defined transaction, i.e., a set of actions that have the ACID properties of atomicity, consistency, isolation, and durability. To make use of database manager facilities, the architecture requires that all operations of such a transaction be performed on one physical database; as a consequence, the processes of such a transaction must be performed by the process components of one instance of one deployment unit.
The process components of one deployment unit interact with those of another deployment unit using messages passed through one or more data communication networks or other suitable communication channels. Thus, a deployment unit deployed on a platform belonging to one business can interact with a deployment unit software entity deployed on a separate platform belonging to a different and unrelated business, allowing for business-to-business communication. More than one instance of a given deployment unit can execute at the same time, on the same computing system or on separate physical computing systems. This arrangement allows the functionality offered by a deployment unit to be scaled to meet demand by creating as many instances as needed.
Since interaction between deployment units is through service operations, a deployment unit can be replaced by other another deployment unit as long as the new deployment unit supports the operations depended upon by other deployment units. Thus, while deployment units can depend on the external interfaces of process components in other deployment units, deployment units are not dependent on process component interactions (i.e., interactions between process components involving their respective business objects, operations, interfaces, and messages) within other deployment units. Similarly, process components that interact with other process components or external systems only through messages, e.g., as sent and received by operations, can also be replaced as long as the replacement supports the operations of the original.
Interactions between process components that occur only within a deployment unit are not constrained to using service operations. These can be implemented in any convenient fashion.
In contrast to a deployment unit, the foundation layer does not define a limit for application-defined transactions. Deployment units communicate directly with entities in the foundation layer, which communication is typically not message based. The foundation layer is active in every system instance on which the application is deployed. Business objects in the foundation layer will generally be master data objects. In addition, the foundation layer will include some business process objects that are used by multiple deployment units. Master data objects and business process objects that should be specific to a deployment unit are preferably assigned to their respective deployment unit.
In some variations, process components are associated with one or more Business Process Variant Types (“BPVTs”). A BPVT is a modeling entity that represents a typical way of processing within a process component from a business point of view. A BPVT defines which process agents of a particular process component are activated, which in turn defines other external process components with which the particular process component interacts. The criteria to define a BPVT can include associated message choreographies or business configuration parameters belonging to different BPVTs of a particular process component. In some cases, BPVTs of one process component can have the same message choreography as another process component while the business configuration settings differ. As a result, the message choreography of a particular process component differs for each different BPVTs of that particular process component. In certain configurations, there are two categories of BPVTs: main BPVTs that are unique for a particular business object or business object node and additional BPVTs that are optional and exist in combination with a main BPVT.
During application run-time, the BPVT will be derived (based on business configuration settings, master data, incoming messages or user interaction) and stored in a business object node. The derived BPVT could be passed in a message or used as one of the parameters in a relevance condition of the outbound process agent. BPVTs can be passed in connection with service and support error tickets (to allow, for example, an embedded support scenario).
BPVTs can be used to ensure consistency among different deployments. Moreover, BPVTs can be used to verify that process interaction models associated with a particular integration scenario have been correctly assigned. Generally, however, BPVTs allow developers and application designers to create varying process flows within defined process components, allowing a particular process component to perform different tasks or operations based upon the business scenario or situation related to a particular instance of the process component.
As illustrated in
Each solution 126 may also include a BAC 128, which includes a set of business elements associated with the engineering entities of the application 122, but at a different level of abstraction. Each business element may be a business area, a business package, a business topic, or a business option. The business area may represent a logical grouping of related application modules or sub-modules, models, operations, or other relevant entities that are related to a particular business function or other functionality as defined in the modeled application platform 124 (or application 122). In some instances, the one or more business areas associated with a particular solution 126 may represent only a portion of the business areas and functionality provided by or available in the underlying application 122. Because only portions of the application 122 that are relevant to the customer are configured as part of or associated with the solution 126, the customer can focus on using and mastering only the functionality and portions of the application platform 124 (and therefore, the application 122) relevant to the customer's needs, thereby avoiding interactions with and requiring further understanding of the additional functionality typically available throughout the entire application 122. Additionally, by tailoring the BAC 128 and application 122 to the business areas and functionality relevant to the customer, more cost-effective and manageable solutions may be provided to customers on an individualized basis, thereby potentially reducing the total cost of ownership.
Each business area (e.g., Sales and Distribution) of the solution's BAC 128 may include or be associated with a number of business packages. Each business package may represent an activity or other functionality associated with the business area. For instance, in the example where the business area represents Sales and Distribution for a customer, an example business package within the Sales and Distribution business area would be Selling Products and Services. Further, each business package may include a set of business topics related to the business package. Continuing with the present example, the Selling Products and Services business package may include several business topics, including Sales Orders and Service Orders. In other words, the business topics may represent various functionality related to the business package. Finally, each business topic may be associated with one or more business options, providing customers with the ability to configure the various functionality, activities, and entities associated with each business topic. For instance, the Sales Order business topic may include a business option determining the number range associated with each Sales Order produced by the customer's business. Each business option may be associated with a business configuration set defining the values for that particular business option.
In one implementation, such as that of illustrated
Each solution 126 may be defined by a developer working or associated with the customer in order to provide a solution specific to the customer's needs. This creation process may include the customer analyzing the BAC 128 to determine which business elements (i.e., business areas, business packages, business topics, and business options) will be part of the particular solution 126. In some instances, various constraints may be associated with each BAC 128 associated with the particular solution 126. The constraints of the BAC 128 are used to maintain the integrity of each solution 126 associated with the BAC 128 by ensuring that each business element selected for the particular solution 126 has its related and required associated business elements also selected that are required by the engineering level of the associated application 122. An example BAC 128 is illustrated in
In certain embodiments, the modeling environment 116 may implement or utilize a generic, declarative, and executable GUI language (generally described as XGL). This example XGL is generally independent of any particular GUI framework or runtime platform. Further, XGL is normally not dependent on characteristics of a target device on which the graphic user interface is to be displayed and may also be independent of any programming language. XGL is used to generate a generic representation (occasionally referred to as the XGL representation or XGL-compliant representation) for a design-time model representation. The XGL representation is thus typically a device-independent representation of a GUI. The XGL representation is declarative in that the representation does not depend on any particular GUI framework, runtime platform, device, or programming language. The XGL representation can be executable and, therefore, can unambiguously encapsulate execution semantics for the GUI described by a model representation. In short, models of different types can be transformed to XGL representations.
The XGL representation may be used for generating representations of various different GUIs and supporting various GUI features, including full windowing and componentization support, rich data visualizations and animations, rich modes of data entry and user interactions, and flexible connectivity to any complex application data services. While a specific embodiment of XGL is discussed, various other types of XGLs may also be used in alternative embodiments. In other words, it will be understood that XGL is used for example description only and may be read to include any abstract or modeling language that can be generic, declarative, and executable.
Turning to the illustrated embodiment in
Illustrated modeling environment 116 also includes an abstract representation generator (or XGL generator) 204 operable to generate an abstract representation (for example, XGL representation or XGL-compliant representation) 206 based upon model representation 202. Abstract representation generator 204 takes model representation 202 as input and outputs abstract representation 206 for the model representation. Model representation 202 may include multiple instances of various forms or types, depending on the tool/language used for the modeling. In certain cases, these various different model representations may each be mapped to one or more abstract representations 206. Different types of model representations may be transformed or mapped to XGL representations. For each type of model representation, mapping rules may be provided for mapping the model representation to the XGL representation 206. Different mapping rules may be provided for mapping a model representation to an XGL representation 206.
This XGL representation 206 that is created from a model representation may then be used for processing in the runtime environment. For example, the XGL representation 206 may be used to generate a machine-executable runtime GUI (or some other runtime representation) that may be executed by a target device. As part of the runtime processing, the XGL representation 206 may be transformed into one or more runtime representations, which may indicate source code in a particular programming language, machine-executable code for a specific runtime environment, executable GUI, and so forth, that may be generated for specific runtime environments and devices. Since the XGL representation 206, rather than the design-time model representation, is used by the runtime environment, the design-time model representation is decoupled from the runtime environment. The XGL representation 206 can thus serve as the common ground or interface between design-time user interface modeling tools and a plurality of user interface runtime frameworks. It provides a self-contained, closed, and deterministic definition of all aspects of a graphical user interface in a device-independent and programming-language independent manner. Accordingly, abstract representation 206 generated for a model representation 202 is generally declarative and executable in that it provides a representation of the GUI of model 202 that is not dependent on any device or runtime platform, is not dependent on any programming language, and unambiguously encapsulates execution semantics for the GUI. The execution semantics may include, for example, identification of various components of the GUI, interpretation of connections between the various GUI components, information identifying the order of sequencing of events, rules governing dynamic behavior of the GUI, rules governing handling of values by the GUI, and the like. The abstract representation 206 is also not GUI runtime platform-specific. The abstract representation 206 provides a self-contained, closed, and deterministic definition of all aspects of a graphical user interface that is device independent and language independent.
Abstract representation 206 is such that the appearance and execution semantics of a GUI generated from the XGL representation work consistently on different target devices irrespective of the GUI capabilities of the target device and the target device platform. For example, the same XGL representation may be mapped to appropriate GUIs on devices of differing levels of GUI complexity (i.e., the same abstract representation may be used to generate a GUI for devices that support simple GUIs and for devices that can support complex GUIs), and the GUIs generated by the devices are consistent with each other in their appearance and behavior.
Abstract generator 204 may be configured to generate abstract representation 206 for models of different types, which may be created using different modeling tools 140. It will be understood that modeling environment 116 may include some, none, or other sub-modules or components as those shown in this example illustration. In other words, modeling environment 116 encompasses the design-time environment (with or without the abstract generator or the various representations), a modeling toolkit (such as 140) linked with a developer's space, or any other appropriate software operable to decouple models created during design-time from the runtime environment. Abstract representation 206 provides an interface between the design-time environment and the runtime environment. As shown, this abstract representation 206 may then be used by runtime processing.
As part of runtime processing, modeling environment 116 may include various runtime tools 208 and may generate different types of runtime representations based upon the abstract representation 206. Examples of runtime representations include device or language-dependent (or specific) source code, runtime platform-specific machine-readable code, GUIs for a particular target device, and the like. The runtime tools 208 may include compilers, interpreters, source code generators, and other such tools that are configured to generate runtime platform-specific or target device-specific runtime representations of abstract representation 206. The runtime tool 208 may generate the runtime representation from abstract representation 206 using specific rules that map abstract representation 206 to a particular type of runtime representation. These mapping rules may be dependent on the type of runtime tool, characteristics of the target device to be used for displaying the GUI, runtime platform, and/or other factors. Accordingly, mapping rules may be provided for transforming the abstract representation 206 to any number of target runtime representations directed to one or more target GUI runtime platforms. For example, XGL-compliant code generators may conform to semantics of XGL, as described below. XGL-compliant code generators may ensure that the appearance and behavior of the generated user interfaces is preserved across a plurality of target GUI frameworks, while accommodating the differences in the intrinsic characteristics of each and also accommodating the different levels of capability of target devices.
For example, as depicted in example
It should be apparent that abstract representation 206 may be used to generate GUIs for Extensible Application Markup Language (XAML) or various other runtime platforms and devices. The same model representation 206 may be mapped to various runtime representations and device-specific and runtime platform-specific GUIs. In general, in the runtime environment, machine executable instructions specific to a runtime environment may be generated based upon the abstract representation 206 and executed to generate a GUI in the runtime environment. The same XGL representation may be used to generate machine executable instructions specific to different runtime environments and target devices.
According to certain embodiments, the process of mapping a model representation 202 to an abstract representation 206 and mapping an abstract representation 206 to some runtime representation may be automated. For example, design tools may automatically generate an abstract representation for the model representation using XGL and then use the XGL abstract representation to generate GUIs that are customized for specific runtime environments and devices. As previously indicated, mapping rules may be provided for mapping model representations to an XGL representation. Mapping rules may also be provided for mapping an XGL representation to a runtime platform-specific representation.
Since the runtime environment uses abstract representation 206 rather than model representation 202 for runtime processing, the model representation 202 that is created during design-time is decoupled from the runtime environment. Abstract representation 206 thus provides an interface between the modeling environment and the runtime environment. As a result, changes may be made to the design time environment, including changes to model representation 202 or changes that affect model representation 202, generally to not substantially affect or impact the runtime environment or tools used by the runtime environment. Likewise, changes may be made to the runtime environment generally to not substantially affect or impact the design time environment. A designer or other developer can thus concentrate on the design aspects and make changes to the design without having to worry about the runtime dependencies, such as the target device platform or programming language dependencies.
One or more runtime representations 250a and 250b, including GUIs for specific runtime environment platforms, may be generated from abstract representation 206. A device-dependent runtime representation may be generated for a particular type of target device platform to be used for executing and displaying the GUI encapsulated by the abstract representation. The GUIs generated from abstract representation 206 may comprise various types of GUI elements such as buttons, windows, scrollbars, input boxes, etc. Rules may be provided for mapping an abstract representation to a particular runtime representation. Various mapping rules may be provided for different runtime environment platforms.
As described with respect to
Returning to
Data objects 102 are elements for information storage in object-oriented computing systems. Data objects can describe the characteristics of an item using a series of data fields that, for example, can correspond to described characteristics. Typically, a programmer will predefine standard object classes, referred to in the present specification as object types, that are hardcoded into a set of machine-readable instructions for performing operations. Object types are blueprints for describing individual objects using a defined set of class attributes (or properties). Instantiated objects that are members of such standard object types can be applied in a variety of different data processing activities by users, for example, customers who are largely unaware of the structure of the standard object types. Put another way, the data objects 102 are generally logical structures that can be modeled and then instantiated upon deployment to store particular data. In some instances, the data objects 102 may represent one or more business objects associated with the application platform 124 (and the instances thereof, or application 122) as described above. The data objects 102 may also be related to or store information related to the additional architectural elements of the application platform 124 or a specific application 122 as described above.
According to some embodiments, the developer (or other analyst) may use a model-driven development environment 116 to compose an application using models 104 of business logic or processes, data objects 102, user interfaces, and so forth without having to write much, if any, code. Moreover, these models can include or be different logical layers of abstraction including system-specific, system-independent, business-independent instances. Indeed, one of these logical layers may represent actual code or modules, whether source or executable, to assist developers. These layers of abstractions can include different domains that provide different views on the particular abstraction, including graphical interfaces, business processes or logic, and data flow. In some circumstances, some or all of these models 104 may conform to a particular metamodel or metadata infrastructure. To aid the developer, analyst, or other user working with the model 104, portions may be extracted from the (perhaps very large) model 104. A view of this extracted portion can then be presented to the requesting or another user, often via interface 142. The extracted portion of model 104 can be intersected or aggregated with extracted portions to generate a unified view on the subset. For example, the user may utilize a filter provided by modeling environment 116 to drill down to a more manageable subset. This example user may then provide customized criteria to focus on particular portions of this subset.
Memory 105, whether local or distributed, can also store a set of customization tables 106. The customization tables 106 may be used at application 122 runtime to store information associated with certain configurations or solutions 126 used in connection with the application 122. Information defining the configuration represented by the customer-specific solution 126 can be stored in the customization tables 106 prior to or at runtime, and the application 122 can consume that configuration information and integrate the data stored in the customization tables 106 into the particular implementation of the executed application 122. Further use of the customization tables 106 will be described later herein.
Some or all of the data objects 102, models 104, and information associated with or stored in the configuration tables 106 may be stored or referenced in a local or remote development or metamodel repository. This repository may include parameters, pointers, variables, algorithms, instructions, rules, files, links, or other data for easily providing information associated with or to facilitate modeling of the particular object. More specifically, each repository may be formatted, stored, or defined as various data structures in eXtensible Markup Language (XML) documents, text files, Virtual Storage Access Method (VSAM) files, flat files, Btrieve files, comma-separated-value (CSV) files, internal variables, one or more libraries, or any other format capable of storing or presenting all or a portion of the interface, process, data, and other models or modeling domains. In short, each repository may comprise one table or file or a plurality of tables or files stored on one computer or across a plurality of computers in any appropriate format as described above. Indeed, some or all of the particular repository may be local or remote without departing from the scope of this disclosure and store any type of appropriate data.
Server 108 may also include interface 117 for communicating with other computer systems, such as clients 110, over network 112 in a client-server or other distributed environment. In certain embodiments, server 108 receives data from internal or external senders through interface 117 for storage in memory 105 and/or processing by processor 120. Generally, interface 117 comprises logic encoded in software and/or hardware in a suitable combination and operable to communicate with network 112. More specifically, interface 117 may comprise software supporting one or more communications protocols associated with communications network 112 or hardware operable to communicate physical signals. Interface 117 may allow communications across network 112 via a virtual private network (VPN), SSH (Secure Shell) tunnel, or other secure network connection.
Network 112 facilitates wireless or wireline communication between computer server 108 and any other local or remote computer, such as clients 110. Network 112 may be all or a portion of an enterprise or secured network. In another example, network 112 may be a VPN merely between server 108 and client 110 across wireline or wireless link. Such an example wireless link may be via 802.11a, 802.11b, 802.11g, 802.20, WiMax, and many others. While illustrated as a single or continuous network, network 112 may be logically divided into various sub-nets or virtual networks without departing from the scope of this disclosure, so long as at least a portion of network 112 may facilitate communications between server 108 and at least one client 110. In other words, network 112 encompasses any internal or external network, networks, sub-network, or combination thereof operable to facilitate communications between various computing components in environment 100. Network 112 may communicate, for example, Internet Protocol (IP) packets, Frame Relay frames, Asynchronous Transfer Mode (ATM) cells, voice, video, data, and other suitable information between network addresses. Network 112 may include one or more local area networks (LANs), radio access networks (RANs), metropolitan area networks (MANs), wide area networks (WANs), all or a portion of the global computer network known as the Internet, and/or any other communication system or systems at one or more locations. In certain embodiments, network 112 may be a secure network associated with the enterprise and certain local or remote clients 110.
Client 110 is any computing device operable to connect or communicate with server 108 or network 112 using any communication link. At a high level, each client 110 includes or executes at least GUI 142 and comprises an electronic computing device operable to receive, transmit, process and store any appropriate data associated with environment 100. It will be understood that there may be any number of clients 110 communicably coupled to server 108. Further, “client 110,” “developer,” and “user” may be used interchangeably as appropriate without departing from the scope of this disclosure. Moreover, for ease of illustration, each client 110 is described in terms of being used by one user. But this disclosure contemplates that many users may use one computer or that one user may use multiple computers. As used in this disclosure, client 110 is intended to encompass a personal computer, touch screen terminal, workstation, network computer, kiosk, wireless data port, smart phone, personal data assistant (PDA), one or more processors within these or other devices, or any other suitable processing device. For example, client 110 may be a PDA operable to wirelessly connect with an external or unsecured network. In another example, client 110 may comprise a laptop that includes an input device, such as a keypad, touch screen, mouse, or other device that can accept information, and an output device that conveys information associated with the operation of server 108 or clients 110, including digital data, visual information, or GUI 142. Both the input device and output device may include fixed or removable storage media such as a magnetic computer disk, CD-ROM, or other suitable media to both receive input from and provide output to users of clients 110 through the display, namely, the client portion of GUI or application interface 142.
GUI 142 comprises a graphical user interface operable to allow the user of client 110 to interface with at least a portion of environment 100 for any suitable purpose, such as viewing transformed application, model, or model subset (view) data 144. As the models 104 are filtered, at least a viewable portion of the results 144 are presented using GUI 142. Generally, GUI 142 provides the particular user with an efficient and user-friendly presentation of data provided by or communicated within environment 100. More specifically, GUI 142 can include a modeling editor that presents views of models 104 based upon filters. The modeling editor can be connected with the modeling environment 116 (or other development environment) such that the modeling editor and/or the modeling environment 116 can automatically generate an application model (e.g., a model of an application that is being developed) from a graphical model and/or vice versa. The modeling editor can allow a user to freely choose graphical objects that can represent one or more development objects, or no development objects at all. The modeling editor can support representing different abstraction levels that correspond to a graphical model. For example, this modeling editor can support modeling a detailed view or an abstract view of a graphical model. Typically, the information that is represented in a graphical model can be freely edited. For example, a graphical model can be edited to include user-descriptions or business information that is not part of the development objects and/or relationships among development objects. Changes to development objects and/or relationships among development objects can be automatically reflected in an associated graphical model, and/or vice versa. Accordingly, GUI 142 may comprise a plurality of customizable frames or views having interactive fields, pull-down lists, and buttons operated by the user. GUI 142 may also present a plurality of portals or dashboards. For example, GUI 142 may display a portal that allows developers or information managers to view, create, and manage data objects 102 or models. GUI 142 is often configurable, supporting a combination of tables and graphs (bar, line, pie, status dials, etc.) and is able to build real-time dashboards. It should be understood that the term “graphical user interface” may be used in the singular or in the plural to describe one or more graphical user interfaces and each of the displays of a particular graphical user interface. Indeed, reference to GUI 142 may indicate a reference to the front-end or a component of any application or software, as well as the particular interface accessible via client 110, as appropriate, without departing from the scope of this disclosure. Therefore, GUI 142 contemplates any graphical user interface, such as a generic web browser or touchscreen, that processes information in environment 100 and efficiently presents the results to the user. Server 108 can accept data from client 110 via the web browser (e.g., Microsoft Internet Explorer or Mozilla Firefox) and return the appropriate HTML or XML responses to the browser using network 112.
While
Generally, BACs 128 associated with one or more solutions are available only as a text-based files, without a general model created to provide customers and developers the ability to clearly understand and review the specific business configurations associated with each solution 126 and its BAC 128. For example,
In the tree structure 317 storing the hierarchical representation of the BAC's business elements, the highest level of the tree illustrated is the business area. In the present example, the BAC 315 includes Business Area 1 (321) and Business Area 2 (351). Although illustrated as including two business areas, each BAC may include more than two business areas, or in some instances, only a single business area. The number of business areas included in a particular BAC is determined by the scope of functionality associated with the application 122 that is desired to be exposed to customers via this BAC 128/315. For instance, if a particular BAC 128 is limited to customers sales alone, then only one business area may need be included within that BAC 128. However, if the BAC 128 is designed to cover a wide-range of functionality, then the BAC 128/315 may be designed to include additional functionality of the application 122 that is relevant to the desired business activities and business areas.
Focusing on Business Area 1 (321), the business area includes two business packages, Business Package 1A (323) and Business Package 1B (333). Again, the number of business packages included in a particular BAC 128/315 is determined by the solution's 126 intended use and the customer's specific needs. Each business package can then be associated with one or more business topics. For instance, Business Package 1A (323) includes two business topics, Business Topic 1AA (325) and Business Topic 1AB (327), while Business Package 1B also includes two business topics, Business Topic 1BA (335) and Business Topic 1BB (349).
Each business topic can then be associated with one or more business options, each business option representing the lowest level of granularity in the BAC 315 and providing the customer (or developer) with specific options related to the business area, business package, or business topic with which the business option is associated. The particular information associated with each business option can be set or manipulated during the design and scoping of the BAC 315 itself or during the design and definition of the associated solution 126. As illustrated in
As illustrated, each business option is associated with a particular business configuration (BC) set (i.e., Business Option 1ABA (329) is associated with BC Set 1 (331), Business Option 1BAA (337) with BC Set 2 (339), Business Option 1BAB (341) with BC Set 3 (343), and Business Option 1BAC (345) with BC Set 4 (347)). These attached BC sets are table entries that define the particular values associated with a particular option. In general, each BC set represents a collection of data sets of configuration data associated with its particular business option. For instance, if Business Option 1ABA (329) represents a choice related to the document number to be assigned to a particular invoice, then BC Set 1 (331) can represent the range of number values associated with the selection of that business option. At runtime, if a particular business option (e.g., Business Option 1ABA (329)) is activated in or as a part of the associated solution 126, the information defined by the business options' associated BC set (e.g., BC Set 1 (331)) will be consumed or read at runtime into the customization table 106 of memory 105. The information stored in the customization table 106 will then be accessed during execution of the related instance of application 122 and used to provide the customer-specific data associated with the particular solution 126.
As further illustrated in
The constraint table 319 of
Element 353 of the constraint table 319 provides an example of an “activates” constraint included within the BAC 315. The example “activates” constraint may be understood to mean that if Business Package 1A is selected, then Business Topic 1AA is selected. Further, the selection of Business Package 1A requires that Business Topic 1AA is selected, or that the selection of Business Package 1A activates Business Topic 1AA. Additionally, it can be understood that the selection of Business Package 1A locks the selection of Business Topic 1AA, in that Business Topic 1AA cannot be deselected by the developer or customer as long as Business Package 1A is selected. Element 353A of
Element 354 of the constraint table 319 provides an example of a “depends on” constraint as included within the BAC 315. The example “depends on” constraint may be understood to mean that if Business Topic 1AB is deselected, then Business Option 1ABA cannot be selected. Generally, this relationship may be used to enforce the separation between business packages and business topics (i. e., not allowing a business topic within a business package to be selected if the business package itself is not selected), as well as between different business options (i.e., not allowing a business option within a business topic to be selected if the business option itself is not selected). In other words, the “depends on” constraint may be used to enforce the hierarchical or linear ordering of business packages and topics. Element 354A of
Element 355 of the constraint table 319 in
Element 356 of the constraint table 319 provides an example of a “suggests” constraint as included within the BAC 315. The example constraint may be understood to mean that when Business Topic 1AB is selected, then Business Option 1ABA is also selected. However, the “suggests” constraint does not cause Business Option 1ABA to be locked, unlike the “activates” constraint described with regard to element 353. In the BAC 315, the “suggests” constraint can be used to add the default rules to the business elements. However, the customer or developer is not required to keep these rules, and may remove the selection of Business Option 1ABA after the selection of Business Topic 1AB activates it based on the “suggests” constraint. The “suggests” constraint can be used for relationships or constraints that most solutions will follow based on either their business logic or standard procedures, but that is not required to retain the integrity of the solution 126. Element 356A of
Elements 357, 358, and 359 of the constraint table 319 provide examples of Boolean operators as used in the constraint table 319. The illustrated Boolean operators are “AND” and “OR” operations, although more complex and additional Boolean operations can be included in certain implementations. Further, Boolean operators can be chained or reused to generate complex constraint expressions in the constraint table 319.
Element 357 provides an example of an “OR” Boolean operator as included within the BAC 315 combined with an “activates” constraint from element 353. The example constraint states that if either (1) Business Option 1BAA is selected or (2) Business Option 1BAB is selected, then Business Option 1BAC is also selected. In other words, the constraint is triggered if either of the preconditions of the constraint are present. Element 357A of
Element 358 of
Element 359 illustrates a second example of an “AND” Boolean operator as included within the BAC 315 and combined with a “depends on” constraint from element 354. Although the Boolean operator listed in the constraint is an “OR” operator, the constraint can be visualized as an “AND” constraint, because Business Option 1BAB depends on both Business Topic 1BA and Business Topic 1BAA. Stated differently, if either of Business Topic 1BA or Business Topic 1BB are not selected, then Business Option 1BAB will not be selected either. Therefore, Business Option 1BAB depends on both of the aforementioned business topics to be activated. Element 359A of
Element 360 of
Having described the BAC 315, along with its business element data structure 317 and associated constraints 319, method 300 may now be described in full with reference to particular examples in
At 304, method 300 identifies the particular BAC 128 associated with the identified solution 126. As previously described, each solution 126 may be associated with its own unique BAC 128, while in other instances, each of the plurality of solutions 126 associated with a particular environment 100 may share a single, common BAC 128 that defines the available business elements and constraints for each solution 126. In other implementations, a plurality of shared BACs 128 may be shared among multiple solutions 126. Sharing one or more common BACs 128 may allow developers and customers to benefit from previous work done by others or for other solutions 126 in developing a comprehensive and integrity-checked BAC 128. By using previously-defined BACs 128 for new solutions 126 (based on the same application platform 124 or application instance 122), time and resources can be saved without requiring duplicative efforts by different developers. In still other instances, a pre-defined BAC 128 may be copied and associated with a new solution 126, allowing the developer or customer to take a previously-defined BAC 128 and make changes where needed to the copied BAC 128 without requiring the full-development of a new BAC 128. To identify the BAC 128 associated with the identified solution 126, method 300 checks the solution 126 for information defining the particular BAC 128 associated with that solution 126. In some instances, a portion of the solution 126 may be parsed to determine the appropriate BAC 128 linked to or associated with the solution. In other instances, a database table or text file storing defined relationships between one or more solutions 126 and one or more BACs 128 may be stored in memory 105 of
Once the appropriate BAC 128 is identified, at 306 information defining one or more business elements from the identified BAC 128 is retrieved from the identified BAC 128. The information may be retrieved from the identified BAC 128 by reading or accessing the data structure of the business elements included within the identified BAC 128, such as by the modeling tool 140 or by one or more of the modeling APIs 118 included in the modeling environment 116. Additionally, another software module or sub-module of one of the illustrated components of environment 100 may be used to read the tree structure (e.g., 317 illustrated in
At 308, method 300 analyzes the various constraints associated with the business elements retrieved from the tree structure of the identified BAC 128. For instance, the constraint table 319 illustrated in
At 310, method 300 generates a BAC model representing the plurality of business elements associated with the BAC 128 and the constraints associated with those business elements. The information retrieved from the combination of 306 and 308 can be combined, or integrated, to generate the model in the modeling environment 116. For example, the information retrieved from the data structure 317 identifying the various business elements associated with the BAC 128 can be modeled using a hierarchical model, wherein the hierarchical relationships are represented by a model illustrating the hierarchical relationship using containment visualizations. For instance, turning to
In addition to the visualization of the hierarchical relationships within the BAC 128, the BAC model 365 incorporates the constraints read from the BAC constraint table 319 and analyzed at 308 in order to provide a further visualization of the constraints present between the illustrated business elements. As a note, the constraints illustrated in
As discussed, these constraints are read from the BAC 128 associated with the model 365 and identified at 304. As a note, when a parent element activates a child element (i.e., where Business Area 1 (321) activates Business Package 1A (323)), drawing the appropriate or normal line from the parent to the child may be confusing or misleading, as well as cause overlaps with other constraint notations included within the BAC model 365. In order to minimize such confusion in the BAC model 365, lines representing a parent “activating” a child may be replaced by the short, diagonal arrow (as illustrated by elements 368, 374, 376, and 378) in lieu of the arrow normally connecting elements for an “activates” constraint. For instance (and as described above), arrow 368 indicates that Business Area 1 (321) activates Business Package 1A (323).
Thus,
At 312, the BAC model associated with the BAC of the identified solution is presented. In one instance, the BAC model (e.g., BAC model 365) can be presented to a user via GUI 142. Where the BAC model is too detailed to be presented clearly in its entirety, a selected or relevant portion of the BAC model may be presented in a particular view 144 to client 110. Further, presenting the BAC model may include storing the BAC model in memory 105 along with the other set of models 104 illustrated in
In still other instances, the BAC model generated at 312 can be used to define new solutions 126. To do so, customers or developers can review the newly modeled BAC and select various business areas, business packages, business topics, and business options which are to be a part of the solution 126. In general, customers and developers may know generally which business elements they will want to include in a specific solution 126. However, the complexity of knowing which additional elements are activated by, required by, suggested by, or have some dependence upon a specific element is not generally known. By using the generated BAC model to provide a clear understanding of the implications of each selection, customers and developers can create working solutions that provide the capabilities required by the customer's specific solution 126, including not only the general functionality associated with the solution, but also the additional functionality required to perform the desired functionality.
The Receivings business topic 412 include several business options, including Process Document Types and Item Types business option 406 (activated by the Receivings business topic 404), Process Document Types and Item Types (Foundation) business option 408 (activated by the Receivings business topic 404), and Text Profile for Receivings business option 410. Additionally, the Receivings business topic 404 includes a Logistics Models for Receiving business option group 412. The Logistics Models for Receiving business option group 412 includes a One-Step Receiving business option 414 and a Two-Step Receiving business option 416. The options are related, and the constraints defined for the business options show that only one of the two will be activated by the Receivings business topic 404 based on the “OR” operator included in the business option group. As shown by the dashed line, the Receivings business topic 404 suggests that the One-Step Receiving business option 414 is selected (and therefore selects the option 414 as the default value), but allows customers or developers to select the Two-Step Receiving business option 416 instead.
The Returns Handling business topic 418 includes its own set of business options: Process Document Types and Item Types business option 420 (activated by the Returns Handling business topic 418), Process Document Types and Item Types (Foundation) business option 422 (activated by the Returns Handling business topic 418), and Text Profile for Returns Handling business option 424. Additionally, the Returns Handling business topic 418 includes the Logistics Models for Customer Returns business option group 426, wherein the group 426 includes the business options of One-Step Receiving of Customer Returns 428 and Two-Step Receiving of Customer Returns 430. The Returns Handling business topic 418 activates one of the two business options 428 or 430, but suggests (or selects by default) the One-Step Receiving of Customer Returns business option 428. As illustrated in the BAC model 400, when the Returns Handling business topic 418 is activated, the Inbound Delivery Processing of Unexpected Delivery business option 436 is also activated, which in turn activates the Site Logistics Processing of Unexpected Delivery business option 438.
Returning to
As previously described, the solution 126 consists of the application 122 upon which its BAC 128 is built. The business elements defined for a particular BAC 128 are related to the application 122, in that the business elements included within the BAC 128 correspond to various engineering entities in the application 122. As previously described, the architecture of the application 122 includes such engineering entities as process components, BPVTs, and business objects. The BPVTs provide variability to particular process components, in that each BPVT provides a different method of performing some action associated with its particular process component. BPVTs provide multiple representations of different, but typical ways of processing within a process component from a business point of view. In other words, BPVTs allow the same process component to play different roles during different operations or in different situations, allowing each process component to use one set of functionality in some situations, and another set of functionality in other situations. Whereas the BPVTs provide variability of processes, a new engineering entity is needed to add further variability to the application 122. To do so, a new application engineering entity is introduced—the configuration control.
In general, a configuration control defines a point in an engineering entity within the application 122 where variability of a function or data can be configured. Each configuration control is assigned to or associated with one BPVT, business object, or process component within the application 122 in order to document that entity's variability. Further, each configuration control is defined to refer to a specific configuration schema, where each configuration schema defining the format of the information associated with the configuration control. For instance, the configuration schema associated with a configuration control entitled Number Range may be a set of numbers in a particular format. In most cases, each defined configuration control is mapped to or associated with a particular business option from the BAC 128. However, only configuration controls required by a particular constraint must be mapped to the BAC 128. In some instances, only particular portions of the application 122 that are needed by the solution 126 (or end user) are associated with business elements. In those instances, certain configuration controls and other engineering entities may not be associated with business elements within the BAC 128.
Conversely, each business option carrying or associated with a business configuration set must be mapped to a configuration control. The configuration control is generally designed first, and the business option is later created to implement the variability provided by the configuration control. By mapping configuration controls to business options, a connection between the solution 126 utilizing the business option and the engineering entity of the application 122 utilizing the configuration control is created. In some instances, business options may also be mapped to or associated with BPVTs to provide connections between the particular business options and the associated BPVT. In both cases, the BC set associated or linked with the business option is then associated with the configuration control and/or BPVT. In other words, the business configuration data that each business option represents is associated with the particular application entity with which the business option is mapped. By doing so, a solution 126 can be created, and the appropriate business elements (including the business options) are selected. The BC set associated with each activated or selected business option is then stored in the configuration table 106 illustrated in
Once the appropriate process component (or process component model) has been identified, at 504 a particular entity within the identified process component is selected or identified for which to add a configuration control. As previously described, configuration controls can be associated with either a process component, a BPVT, or a business object. Thus, any of the entities illustrated in the process component model 524 of
A configuration control is added to the selected entity at 506. For example, a new configuration control can be added to the model 524 by selecting (i.e., using drag-and-drop from a menu provided in the modeling environment 116) a visual representation of the configuration control into the process component model 524. In those instances, configuration controls may be uniquely identified by a particular graphical image or figure located in a menu associated with or available from the modeling environment 116. When the configuration control is added, the configuration schema for the configuration control, which defines the type of information associated with the configuration control, can be defined at 508. When the configuration control is added to the selected entity and its configuration schema is selected, the configuration control can be named according to its schema and associated entity. For instance, a configuration control defining the text values associated with a business object may be named “Text for <Business Object>,” or another suitable name. In some instances, certain configuration controls may be used for a plurality of application entities. In those instances, although only one configuration control is defined, each instance can be uniquely identified with the application entity it is associated with. For instance, a configuration control named Number Range may be used for a plurality of application entities where the configuration control is used to define a number range associated with the associated entity. Each configuration control is linked to the particular entity in which it is defined, and is provided a unique number or identifier associated with that instance of the configuration control. Thus, at runtime, when the information associated with the configuration control is accessed in the configuration table 106, the Number Range configuration control will retrieve the BC set or information associated with the unique identifier provided for that particular configuration control. Even in instances where a plurality of configuration controls with the same name are used and data is provided to the configuration tables, each individual configuration control will be able to access the configuration data corresponding to that particular configuration control.
At 510, each configuration control is associated with a particular business option from an associated BAC 128. This association can be made by mapping a related business option to the newly added configuration control. For example, the Process Document Types and Item Types business option 406 illustrated in the Inbound Logistics business package 402 of
Additional constraints other than those illustrated in
Once the constraints have been defined for the configuration controls and the other entities within the process component, at 516 the newly defined process component constraint model (e.g., process component constraint model 548) is considered created, and may be stored with the other sets of models 104 in memory 105. Additionally, the process component constraint model can be presented to a user via GUI 142. Further, at least a portion of the information associated with the process component constraint model may be exported the into a documentation system. For instance, the information and models representing process component constraint model may be used to automatically create documents explaining or describing the application entities and constraints illustrated in the process component constraint model. Still further, the process component constraint model may also be used to define the organization of documents within the documentation system based upon the application entity and configuration control hierarchy and related constraints. The process component constraint model may be used to create or generate figures for the documentation system, such as flowcharts, illustrations, and examples of the various constraints and relationships within the process component constraint model.
At 602, method 600 identifies a related application and BAC. As previously described, environment 100 (illustrated in
Once the pair has been identified, the hierarchy of entities associated with the application is retrieved at 604. In some instances, the retrieval of the application entity hierarchy may be retrieved from a file (e.g., a text file or a flat file) storing the application entities in a hierarchical tree structure, while in other instances, retrieval of the application hierarchy may be derived from one or more models associated with the application. In some instances, the hierarchy may be derived using certain modeling APIs 118 defined in the modeling environment 116 to access and return a hierarchical analysis (or representation) of the application's entities.
Once the application's hierarchical information is retrieved, the business configuration data associated with a particular one of the application's variable entities can be determined at 606. In the application, the variable engineering entities are BPVTs and configuration controls. All variability in the application is represented and described by these two types of engineering entities. Further, each instance of these variable engineering entities is associated with a particular set of business configuration data. Once it is determined which variable engineering entities of the application are associated with which particular sets of business configuration data, a visual representation of the application's hierarchy and its variable engineering entities' connections to certain business configuration sets can be created, such as the example visual representation illustrated in
Returning to
At 612, the business configuration data associated with a particular business option from the BAC is determined. In the BAC, only business options carry, or are associated with, specific business configuration data. Business configuration data to be used by the application at runtime is provided solely by business options. Method 600 performs the step of 612 until no additional business options remain. Once it is determined at 614 that all business options have been analyzed, method 600 continues at 616. In some instances, each business option may represent a 1:1 relationship with a particular set of business configuration data. In other instances, one business option may map to more than one set of business configuration data when the business option contains interrelated configuration entries from different tables and schemas (e.g., the Text and Attachment Settings business option). Additionally, in some instances multiple business options may be mapped to the same configuration entity when the same configuration entries are offered to the customer by the BAC in two places, or when the business options represent alternative choices for realizing the same configuration control (or other variable engineering entity). For instance, this may occur because the configuration entries are required in different contexts and the developer elected not to create a dedicated element for each specific context. In any event, the BAC hierarchy, as well as the business options and their associated business configuration sets may be visually represented similar to the application entities. An example of such a visual representation is illustrated in
Once the business configuration data associated with the variable entities of the application and the business options of the BAC are determined (and as described herein, visualized), method 600 maps the variable entities and business options at the configuration level (based on matching business configuration sets) at 616. These relationships can be identified by analyzing which business configuration sets are shared by certain business options and variable entities. For instance, because BPVT 1 (651) is associated with BC Set 1 (627) (as illustrated in
At 620, the business adaptation to architecture mapping model can be presented. In one instance, the business adaptation to architecture mapping model (e.g., model 395) can be presented to a customer or developer via GUI 142. Where the model 395 is too detailed to be presented in its entirety, a selected or relevant portion of the model may be presented in a particular view 144 to client 110. Further, presenting the business adaptation to architecture mapping model may include storing the business adaptation to architecture mapping model in memory 105 along with the other models 104 as illustrated in
At 702, method 700 identifies a particular business option in the BAC. In some instances, the business option identified at 702 may be based on the hierarchical (or tree) representation of the BAC (as illustrated in
At 706, the constraints associated with the identified variable engineering entity in the application are determined. For example, the constraints defined for a particular variable engineering entity may be retrieved from a process component constraint model (such as a model generated by method 500 of
After the constraint information associated with the identified variable engineering entity is determined, at 708 the application entity constraint information is used to verify the BAC constraints defined for (or associated with) the identified business option (identified at 702). For example, the variable engineering entity associated with the identified business option may have constraints related to other variable engineering entities, such as a configuration control within a BPVT. If the constraints associated with the configuration control indicate that the configuration control is activated by the BPVT, then the business option within the BAC associated with the configuration control will be activated by the business option associated with the BPVT. This will ensure that the BAC configuration satisfies the integrity constraints of the application. The verification process of 708 comprises determining whether the constraints of the variable engineering entities in the application correspond to the constraints defined in the BAC. In some instances, the BAC may include incorrect constraints based on the application's constraints, while in other instances, the BAC may be missing one or more constraints associated with the variable engineering entity. Both situations can be handled adequately by method 700.
At 710, method 700 determines whether the constraints in the BAC associated with the business option (identified at 702) are verified as correctly corresponding to the constraints defined for the business option's associated variable engineering entity. If 710 determines that the BAC constraints of the business option are correct, then method 700 continues at 716. At 716, method 700 determines whether additional business options remain for verification in the BAC. If additional business options have not been run through the verification process, then method 700 returns to 702 and identifies the next business option to be verified. If all other business options have been verified, then method 700 continues at 718.
Returning to 710, if it determined that one or more errors were found in the BAC constraints associated with the identified business option, then method 700 continues at 712. At 712, a set of additional or corrected BAC constraints related to the identified business option are computed. The process of computing the correct constraints may comprise computing the constraints associated with the application's variable engineering entity, including the business options (and other business elements, such as business topics and/or business packages) associated with the application entities which the identified variable engineering entity is associated. Returning to the constraint between the configuration control and BPVT described above with relation to 708, the identified variable engineering entity for the identified business option can be the configuration control. In the application, the configuration control depends on (or is activated by) the related BPVT based on constraints in the process component constraint model. Further, the BPVT may be known to be associated with a particular business option in the BAC based on the mapping between the BAC and application. The error determined at 708 may be that the identified business option (associated with the configuration control) is not constrained to be dependent upon the business option associated with the BPVT. Therefore, in the BAC, the configuration control business option may be activated while the BPVT business option is not. Clearly, this situation would violate the defined integrity of the application, and cause an error based on the missing constraint between the configuration control business option and the BPVT business option. This required addition to the BAC constraints is computed at 712. In some instances, the constraints of the BAC may be incorrect as opposed to missing. In those situations, 712 may determine which BAC constraints to remove, and calculate the correct constraints to be added to the BAC.
Once the correct constraints for the BAC are determined, method 700 adds the newly calculated constraints to the BAC at 714. These new constraints can be added to a BAC model representing the BAC, as well as directly to the constraint table of the BAC (e.g., constraint table 319 of
After all business options in the BAC have been verified and/or corrected by method 700, such that the BAC includes the constraints required to correspond to the application, one or more of the BAC constraints may be optimized at 718. Optimization of BAC constraints may include delegating constraints to higher level elements within the BAC (where possible), as well as combining related constraints (i.e., combining an “activates” constraint and a “depends on” constraint to form a “subordinate” constraint, thus optimizing two constraints into one). For example, if a first business option “activates” all business options within a particular business topic, then instead of multiple constraints from the first business option to each of the business options, the first business option's constraint may be modified to an “activates” constraint for the particular business topic, and not each of the business options individually. Many other methods of optimizing constraints may be used in connection with method 700 or another similar method thereto. In general, optimizing the BAC constraints can provide a clearer, more concise representation of the BAC constraints to customers and developers during the design of a solution 126. By removing unnecessary or redundant constraints, a more understandable BAC can be provided, allowing for better-defined solutions 126 to be created in an easier manner. In some instances, the optimization step of 718 may be performed automatically by the modeling environment 116 based on one or more defined optimization rules.
Once the BAC has been modified to include all constraints necessary for the application, additional tightening constraints may optionally be added to the BAC at 720. Additional constraints may be used to provide a more specific solution 126 than required by the application itself. These additional constraints can be manually added by a customer or developer using the modeling tool 140 to modify the BAC model, or by adding constraints directly to the data structure representing the BAC. However, while additional constraints can be added to the BAC, constraints generated or verified by method 700 cannot be deleted from the BAC, as deleting a required constraint may cause the application to fail when executed using the modified BAC. In other words, the verified and/or generated constraints represent the minimal constraints necessary to ensure the integrity of the BAC in light of the application's integrity constraints. When tightening constraints are added to the BAC at 720, method 700 may return to 718 to optimize one or more of the newly added constraints.
After completing the optional steps of 718 and 720, the newly generated and/or modified BAC can be stored. For example, the data structure and constraints of the modified BAC can be stored in memory 105, as well as with the plurality of solutions 126. Additionally, a BAC model visually representing the newly defined and updated BAC may be stored with models 104 of memory 105.
The example of
The business adaptation to architecture model 730 of
Once these additional mappings are added to the business adaptation to architecture model 750, the process of determining the constraints associated with each business option is provided. The business adaptation to architecture model 760 of
As illustrated, method 700 provides for a clear and concise description of BAC constraints generated from the constraints associated with the variable entities of the application 122. By automating the generation of BAC constraints from the constraints defined in the application and between the variable application entities, BAC configuration constraints can be created that ensure the integrity of the application after customers and developers perform scoping for solutions based on the automatically-generated BAC. This significantly improves development efficiency because customers and developers creating the solutions 126 are required to create fewer solution constraints than before, thereby saving time and development effort to create new or amended solutions 126. Further, the optimization process of the BAC constraints provides additional transparency to the BAC and the BAC model by reducing, combining, and optimizing the constraints contained in the BAC. Finally, the business adaptation to architecture models modified and created by the automatic generation process can be used by developers to quickly test solutions and constraints.
The subject matter has been described in terms of particular variations, but other variations can be implemented and are within the scope of the following claims. For example, the actions described herein can be performed in a different order than as described and still achieve desirable results. As one example, the methods and processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve the desired results. In certain implementations, multitasking and parallel processing may be advantageous. Other variations are within the scope of the following claims.