Embodiments of the present invention relate to software applications and more specifically to a framework for enabling and managing customizations made to software applications.
Software applications often need to be customized to meet the specific needs of the end user. This is particularly true in the field of enterprise software, where each organization may have a unique set of business requirements and data integration needs. For example, a central IT department of an enterprise organization may develop an application for implementing an employee hiring process. The central IT department may then deploy the application to other departments within the organization. The departments receiving the application may however have to customize the application to suit their individual needs. For example, the process used by a Legal Department for hiring an attorney may be different from the process used by an Engineering Department for hiring an engineer. Accordingly, the Legal and the Engineering departments may each customize the application received from central IT according to their needs. The customizations made by the Legal Department may be further customized by individual legal offices. For example, a legal office in California may make customizations to meet California state requirements while a legal office in New York may make customizations to meet the state laws of New York. Accordingly, an application developed by the central IT department may be customized by one or more downstream customizers.
Application customizations are not limited to within an enterprise as described above. For example, a software vendor may develop an application for performing loan processing that may then be deployed to multiple customers such as various mortgage brokers at various different sites. Each broker may customize the application to fit the broker's needs. Further downstream customizations may be performed by downstream customizers.
Accordingly, a base application may be customized in different ways by one or more users (customizers) that are downstream from the originator or creator of the application (the application developer). These customizations however become difficult to manage.
Further, consider the situation when a new version of the base application is released by the application developer. Conventionally, upon receiving a new version of the base application, the downstream customizer has to expend a considerable amount of time and effort in re-implementing the customizations and retesting the customizations against the new version of the application. This process has to be repeated for each new release and becomes time consuming and expensive. In some instances, the application developer may implement predefined customizations directly in the base application. However, this greatly increases the complexity of the base application, resulting in higher development and maintenance costs. In addition, this approach restricts the downstream customizations that can be performed and is thus not flexible enough to address the diverse customization requirements of all the end users/customers of the application.
Various different standards are used for developing applications. One such standard is the Service Component Architecture (SCA) standard that provides a framework for assembling disparate enterprise Service Oriented Architecture (SOA) components into higher-level composite applications. SCA thus provides a framework for creating SOA applications. SCA was developed to simplify the development, deployment, and management of enterprise applications. The SCA specification provides rules/guidelines for development and deployment of applications. For example, the SCA specification defines how the various components/pieces of an application are created and assembled together as modular components. The components in SCA can be implemented using different technologies including Business Process Execution Language (BPEL), which provides a language for implementing business processes orchestrating various services, and Business Process Modeling Notation (BPMN), which is a graphical representation for specifying business processes in a workflow. While the SCA provides guidelines for assembling components into applications, it does not address problems associated with managing customizations to applications. Similarly, while BPEL provides a language for implementing business processes, it does not specify anything to manage the changes in the business processes.
Embodiments of the present invention provide a framework for enabling and managing customizations to an application.
In one embodiment, techniques are provided that enable the customizability of an application to be controlled based upon hierarchical relations between elements of the application. An application developer can control customizations that can be performed by downstream customizers. A customizer can further control customizations that can be made to an application by a downstream customizer within the customization parameters set for the application by the application developer and any customizers that are upstream from the particular customizer. In this manner, a controlled and flexible infrastructure is provided for customizing applications.
In one embodiment, techniques are provided for displaying information regarding customizations made to an application. The information may be displayed in a design-time environment and/or a runtime environment.
For example, in one embodiment, an execution path traced by an application for processing an input in a runtime environment may be determined. The execution path may comprise a plurality of elements of the application. Information (delta information) may then be determined for the application, where the delta information is related to one or more customizations made to the application. The delta information may be stored as part of the metadata for the application. Elements in the execution path that have been customized may then be determined based upon the delta information. For example, a first element from the plurality of elements that has been customized may be determined. The execution path comprising the plurality of elements may then be displayed such that the customized elements in the execution path are clearly identifiable.
In one embodiment, in addition to determining what has been customized in the execution path, the delta information may also be used to determine the customizations themselves. For example, if a second element has been added to the application and is included in the execution path, then that second element may be identified as the customization. When the execution path is displayed, the second element may be displayed such that it is identifiable as being a customization.
The elements in the execution path may be hierarchically related to one another. For example, the execution path may comprise a first element (which may be the customized element) and a second element (which may be the customization) that is contained by the first element. For example, the first element may be a composite element and the second element may be a component element. The component element may be implemented using Business Process Execution Language (BPEL), Business Process Modeling Notation (BPMN), XML Schema Definition (XSD), Web Services Definition Language (WSDL), Extensible Stylesheet Language (XSL), or an XML-expressed model. In another instance, the first element may be a component element and the second element may be a group of one or more activities in the component element. In yet another instance, the first element may be a first group of one or more activities and the second element may be a second group of one or more activities. The delta information may be stored in XML format.
In one embodiment, customization information may also be displayed in a design-time environment. For example, an IDE such as JDeveloper may be configured to display customizations information for an application. In order to facilitate the display, delta information for an application may be determined, where the delta information is related to one or more customizations made to the application, the application comprising a plurality of elements. One or more elements of the application that have been customized may then be determined from the delta information. A graphical representation may then be displayed for the application such that the elements of the application that are customized are identifiable from the non-customized elements.
In one embodiment, in addition to determining which elements of the application have been customized, the delta information may also be used to determine the customizations themselves. For example, if the application has been customized due to addition of a new element (e.g., a new component, a new activity), when the graphical representation for the application is displayed, the new element may be displayed such that it is identifiable as being a customization.
The foregoing, together with other features and embodiments will become more apparent when referring to the following specification, claims, and accompanying drawings.
In order to more fully understand the present invention, reference is made to the accompanying drawings with the understanding that these drawings are not intended to limit the scope of the claimed invention.
In order to more fully understand the present invention, reference is made to the accompanying drawings with the understanding that these drawings are not intended to limit the scope of the claimed invention.
In the following description, for the purposes of explanation, specific details are set forth in order to provide a thorough understanding of the embodiments of the invention. However, it will be apparent that the invention may be practiced without these specific details.
Embodiments of the present invention provide a framework for enabling and managing customizations to an application such as a composite application built using SCA. In one embodiment, techniques are provided that enable the customizability of an application to be controlled based upon hierarchical relations between elements of the application.
For example, an application developer can control customizations that can be performed by downstream customizers. A particular customizer can further restrict the customizations that can be made by another downstream customizer. A particular customizer can only impose customization restrictions that are within the customization parameters set for the application by the application developer and any customizers that are upstream from the particular customizer. In this manner, a flexible infrastructure is provided for managing customizations to an application.
At a conceptual level, system 100 depicted in
For purposes of explaining various features of an embodiment of the present invention, it is assumed that the application that is created by an application developer and which may be customized by one or more customizers is a Service Component Architecture (SCA) composite application. The SCA-based implementation is being used merely as an example for describing features of the inventive embodiment and is not intended to limit the scope of the present invention as recited in the claims.
As previously indicated, SCA provides a programming framework for building applications and solutions based on SOA. It is based on the idea that business function is provided as a series of services, which are assembled together to create solutions that serve a particular business need. An application (also referred to as composite application or simply a composite) can contain both new services created specifically for the application and also business functions from existing systems and applications, reused as part of the composition.
An SCA application composite provides a single unit that wraps together various components and related metadata. An SCA composite thus provides a single unit of deployment for an application. An SCA composite can also comprise other composites thereby allowing for nesting of composites. A composite may comprise one or more one or more components, where each component provides the logic or implementation to be used within the application. Each component thus provides an atomic portion of the business functionality required to make the composite application useful. Components may be connected to other components using connections referred to as wires. Functionality provided by a composite is exposed via one or more services. A service provided by a composite is callable by a user of the composite. A composite may also comprise one or more references that represent external dependencies of the composite. A wire may connect services, components, and/or references.
A composite may have one or more associated properties. A property may be a settable data value or attribute that influences the operation of the function provided by the composite. A property associated with a composite allows for customization of the composite's behavior. For example, a composite might rely on a property to tell it aspects of the runtime environment, thereby enabling the composite to customize its runtime behavior appropriately.
A composite has associated metadata that specifies information related to the composite. For example, the metadata for a composite may comprise information related to services exposed by the composite, the composite's references, members of the composite such as components or other composites, wiring information for the composite (e.g., wiring between components), and properties of the composite. The metadata for a composite may be stored in XML format. For example, for a composite labeled “Composite”, the metadata for the composite may be stored in an XML file named “Composite.xml.” The metadata for a composite may be stored in one or more files.
A component represents a configured instance of an implementation within a composite, where the implementation is the piece of program code implementing logic that provides a portion of the functionality (e.g., business functions) of the composite. A function provided by a component may be offered for use as a service of the component. A service provided by a component thus represents a functionality or operation provided by the component. A set of services exposed by a component may represent an addressable set of operations of a component implementation that are designed to be exposed for use by other implementations or exposed publicly for use elsewhere. A service may provide a number of operations that can be accessed by the component's clients.
A component may depend on one or more services provided by other components—these dependencies are called references of the component. A component might rely on services provided by other components in its domain or by software outside its domain. A reference represents a dependency that an implementation of a component has on a service that is supplied by some other implementation. A component thus indicates its dependencies on external services using references. A component may call a reference during the execution of its functions. Each reference of a component defines an interface containing operations that the component needs to invoke to provide its services. A component can have one or more references.
SCA enables a composite to comprise components implemented using a wide variety of different implementation technologies. For example, programming technologies such as BPEL, BPMN, XML Schema Definition (XSD), Web Services Definition Language (WSDL), Extensible Stylesheet Language (XSL), an XML-expressed model, and others may be used to implement the components of a composite. For example, a BPEL-implemented component (referred to as a BPEL component) may implement logic for a business process orchestration.
A component can have associated properties. A property may be a settable data value or attribute that influences the operation of the function provided by the component. A component's behavior may be configured by providing values for the component's properties. A component's behavior may thus be customized by configuring the component's properties. For example, a component might rely on a property to tell it aspects of the runtime environment, thereby enabling the component to customize its runtime behavior appropriately.
A component may have associated metadata. The metadata for a component may identify the services and references provided by the component. The metadata may also identify the implementation technology or model used for implementing the component logic. For example, the metadata may also identify transformation and schema information such as information related to XSDs, XSLs, etc. Properties associated with the component may also be identified by the component's metadata. The metadata for a component may be stored in one or more files. For example, a component type file may store an implementation type for the component while separate files may be used to store metadata information related to properties of the component.
As indicated above, different technologies may be used to implement a component. For example, a BPEL component may be implemented using BPEL. Likewise, a BPMN component may be implemented using BPMN and so on. A BPEL component may provide orchestration for a business process. A BPEL component may orchestrate a workflow comprising a series of activities. One or more activities in a BPEL component may be grouped together to form a group (or scope) of activities. Other technologies that may be used to implement a component include XML Schema Definition (XSD), Web Services Definition Language (WSDL), Extensible Stylesheet Language (XSL), a metadata model expressed in XML, and others.
The metadata file for a component may be labeled as “component_name.ext” where “component_name” is a name that may be used to reference the component and “ext” may depend upon the technology used to implement the component (model). For example, the metadata file for a component implemented using BPEL may be named “*.bpel”.
Accordingly, an SCA composite may comprise one or more composites and/or one or more components. Each component may comprise one or more activities. One or more activities in a component may be grouped to form a group of activities as per the component specific metamodel. An SCA composite thus comprises a number of elements with hierarchical relationships between the elements. An element may be another composite, a component, an activity, a group (e.g., a group of activities, a group comprising another group, etc.), services, references, wiring, etc. The metadata stored for a composite identifies the elements of the composite. The metadata may also identify hierarchical relationships between one or more elements. In one embodiment, the metadata is stored in XML format and identifies the parent-child relationships between the XML elements.
Accordingly, an application may be based upon various elements with hierarchical relationships between the elements. An element that can comprise or contain one or more other elements is referred to as a container element. The elements that are contained in a container element may be referred to as members or children of the container element. A container element comprising one or more children elements may be referred to as the parent (or parent element) of the children. A container element can have zero or more children or members. Examples of container elements include a composite, a component, and a group.
A composite application can comprise multiple levels of hierarchies. For example, a composite may comprise one or more other composites and/or one or more components. A component can comprise one or more activities that are organized into groups. A group can comprise one or more activities or other groups, and so on. According to an embodiment of the present invention, the customization of a composite application can be configured and managed at each hierarchical level and the hierarchical relationships between elements of a composite affect the customizability or non-customizability of portions of the application.
Each component included in composite 200 may in turn comprise one or more services, references, and properties. For example, component “LoanBroker” exposes service S1, references R3 and R4, and property P1; component “CreditService” comprises service S3, reference R1 and property P2; and component “LoanService” comprises service S4, reference R2 and property P3. The components are wired in a certain configuration with wire 202 connecting R3 of “LoanBroker” to S3 of the “CreditService” component and wire 204 connecting R4 of the “LoanBroker” component to S4 of the “LoanService” component.
A component (e.g., a BPEL component or a BPMN component) can be a container element and can comprise other elements such as activities and groups of activities.
Referring back to
As depicted in
In one embodiment, IDE 114 may provide a special role (or login/special mode) that enables a user to indicate to the system that the user is an application developer and enables the user to create a new application. For example, a special “Application Developer” role may be provided, and when a user logs into system 102 in this role, the user is allowed to create new applications.
Information related to the base application created by the application developer may be stored as base application information 122 depicted in
IDE 114 may provide tools that enable an application developer to build a composite application. For example, an IDE such as JDeveloper allows an application developer to drag and drop components (e.g., BPEL, BPMN, Mediator components) into the IDE and wire the components as desired. The components may be selected from preconfigured components or alternatively new components may be created. IDE 114 thus enables an application developer to create and piece together various elements to build a composite application.
The application developer may then configure customization parameters for the base application created in 402 (step 404). As part of 404, the application developer may specify which portions of the base application are to be made user-customizable and those that are not. In one embodiment, the customizability or non-customizability of the application may be specified on a per element basis of the application. For example, the application developer may, on a per element basis, tag the element as being customizable or non-customizable. In one embodiment, in the default, all elements of an application are non-customizable unless tagged as customizable by an application developer. In an alternative embodiment, in the default, all elements of an application are customizable unless tagged as non-customizable by an application developer. The customization parameters associated with the application may be stored as part of base application information 122.
In one embodiment, IDE 114 may provide a special role (or login/special mode) that not only enables a user to create an application but also enables the user to define which portions of the application are customizable. For example, a special “Application Developer” role may be provided, and when a user logs into system 102 in this role, the user is allowed to create applications and also specify customizability options for the application.
In one embodiment, for a composite application, the application developer may specify customizability for the application on a per container element basis. Examples of container elements include a composite, a component, a group, etc. Since the elements in a composite application may be organized hierarchically with one element containing another element, which in turn may contain another element, and so on, specifying customizability options on a per container element basis enables the application developer to control the customizability of the application at different hierarchical levels. Further, the hierarchical relationships between the various elements affect the customizability and/or non-customizability of portions of a composite application.
As a result of processing performed in 404, the base application created in 402 may comprise customizable portions and/or non-customizable portions. For example, certain elements of an application may be configured as being customizable while other elements of the application may be configured as being non-customizable. In one embodiment, unless an element is specifically tagged as being customizable it is considered non-customizable. In certain embodiments, all elements of an application may be tagged as being customizable.
Information related to customizability of an application may be stored as part of base application information 122. For example, base application information 122 may store metadata identifying customization parameters configured for the application by the application developer in 404. As indicated above, in one embodiment, customization may be specified on an element by element basis. In such an embodiment, the metadata may identify the various elements of the application and identify the customizability options for each element. The customization parameters may also be stored on a per element basis. For example, customization parameters for an element may be stored in a metadata file corresponding to the element. For example, customization parameters for a component may be stored in a metadata file for the component.
The customization parameters configured for an element indicate whether or not the element is customizable. If customizable, the customization parameters may further identify (1) the manner in which the element may be customized (sometimes referred to as the scope of the customization), and (2) who can perform the customizations (e.g., certain roles, user ids, etc.).
There are different ways in which an element may be customized. In one embodiment, when an element of an application is tagged as being customizable, it implies that customizations can be made to the element's properties and its member elements. Customizations that can be made to an element's properties include deleting a property of the element, modifying a property of the element (e.g., changing a value assigned to a property), or adding a new property to the element. When an element is tagged as being customizable, customizations that can be made to the element with respect to its members include deleting a member element, adding a new member element, or changing the connections (wiring) between member elements.
Accordingly, an element of an application can be tagged as either being customizable or non-customizable. In one embodiment, the hierarchical relationships between elements of a composite affect the customizability and non-customizability of the elements. In one embodiment, if a particular container element is tagged as being non-customizable, then all elements contained by the particular container element are automatically rendered non-customizable. There may be multiple levels of elements that are contained by the particular container element and all those are tagged as being non-customizable if the particular element is tagged as non-customizable. In this manner, looking at it from the perspective of hierarchies, for a particular container element tagged as being non-customizable, all elements that are descendants of that particular element are also considered to be non-customizable. In this manner, the attribute of non-customizability is automatically inherited by all descendants of a container element marked as being non-customizable. For example, if a component is tagged as being non-customizable, then all activities within that component and any groups of activities within the component are all automatically made non-customizable.
In one embodiment, if an element is not specifically tagged as being customizable, then it is treated as being non-customizable. In this embodiment, an element has to be specifically tagged as being customizable to make it customizable. In such an embodiment, when a particular container element is tagged as being customizable, then any elements that are members (i.e., contained by) of that particular container element are not automatically made customizable—each individual element in that container has to be specifically tagged as being customizable to make it customizable. Accordingly, while in the case of non-customizability the descendants of a container element that has been tagged as being non-customizable automatically inherit the non-customizability, it is not the same for the case of customizability. In the case of customizability, tagging a first container element of a composite as being customizable does not automatically make a second container, which is hierarchically contained by the first container customizable—the second container element has to be specifically tagged as being customizable to make it customizable. Further details related to effects of elements hierarchy on customizability and non-customizability of elements is described below with respect to
In one embodiment, the degree of customizability of an element, which indicates the extent of customizations that can be made, may also be configured. Accordingly, for an element tagged as being customizable, the application developer may set or restrict the customizations that can be performed. For example, for an element, the application developer may set customization parameters that allow a customizer to only modify properties of the element but not allow addition of new properties or deletion of existing properties of the element. As another example, customization parameters for an element may be configured such that only the wiring between members of the element can be changed but deletion of members or addition of members is not permitted. In this manner, as part of 404, the application developer may not only identify which portions of the application are customizable (or non-customizable) but also specify the degree of customizability.
In one embodiment, multiple layers of customization may be configured for an application. For example, for a composite application related to a base recruitment process (which may be expressed using BPEL or BPMN components), the process may be modified differently for hiring an employee versus hiring a manager. Accordingly, customizations for an employee hiring process and customizations for a manager hiring process may represent two separate layers of customization for the application. In such a scenario, one layer of customization parameters may be specified for employee hiring and a second layer of customization parameters may be defined for hiring a manager.
IDE 114 may provide various tools that enable an application developer to configure customization parameters for an application. For example, the IDE may provide a GUI that displays various elements of an application and enables the application developer to select and tag individual elements as being customizable or not. The IDE may also provide tools that enable the application developer to set the degree of customizability for each element marked as being customizable. The GUI may also display the hierarchical relationships between the various elements such that a customizer can specify customizability/non-customizability at different hierarchical levels.
In one embodiment, IDE 114 may also display information for an application in such a way that customization parameters configured for the application are easily discernible. For example, IDE 114 may display information for an application such that elements of an application that are tagged as customizable and those that are not customizable are clearly visually identifiable. Different styles may be used for the visual indications. For example, in one embodiment, icons/letters/markings may be placed next to the customizable elements to distinguish them from the non-customizable elements of the application. For example, in
In the embodiment depicted in
For the embodiment depicted in
(1) Composite_1: Composite_1 is tagged as being customizable as indicated by the selected checkbox associated with Composite_1. This enables a customizer to add/delete/modify properties of Composite_1. New elements (e.g., new components) may be added to Composite_1. Elements of Composite_1 such as Component_A and/or Component_B can be deleted or the connections (wiring) between Component_A and Component_B can be changed. However, customizability of Composite_1 does not allow customization of Component_A and Component_B (unless those components themselves are marked as being customizable). Since Component_B is tagged as being non-customizable, a customizer cannot make changes to Component_B.
(2) Component_A: Component_A in
(3) Group_1: Group_1 in
(4) Group_2: Group_2 in
(5) Group_3: It is to be noted that even though Component_A is tagged as being customizable, this does not make Group_3 automatically customizable unless specifically tagged as such. Since the checkbox corresponding to Group_3 has not been selected, Group_3 is configured to be non-customizable. As a result, a customizer is not permitted to customize the properties or activities (A6 and A7) of Group_3.
(6) Component_B: Component_B in
(7) Group_4: Since group_4 is a descendant of Component_B, it automatically inherits the non-customizability from Component_B. In one embodiment, the checkbox for Group_4 may be grayed out since it cannot be set due to Component_B being tagged as being non-customizable. No properties or activities of Group_4 can be added/deleted/modified by a customizer.
Referring back to
The package created in 406 may then be delivered to one or more customizers (step 408). For example, as depicted in
Users of systems 104 and 108 may then customize the deployed application to suit their needs (step 410). In one embodiment, the customizations that a customizer can make are controlled by the customization parameters set by the application developer. A customizer can only customize those portions of an application that are marked as customizable by the application developer. Further the degree of customization is also restricted to that set by the application developer. In one embodiment, a customizer may use a tool such as an IDE to customize the application. For example, a user of system 104 may use IDE 118 provided by system 104 to customize the base application received from system 102.
In one embodiment, a special role may be provided by IDE 118 to identify a customizer. A user who logins in to the IDE in the special role can customize the application. For example, a “Customization Developer” role may be provided by the IDE and a user logged in that role is allowed to customize those portions of an application that are marked as customizable by the application developer. The “Customization Developer” role is thus a special mode during which customizations may be made.
As depicted in
The customizer may then customize the application within the customization parameters set by the application developer or an upstream customizer (step 808).
Information related to one or more customizations made by the customizer (also referred to as delta information) to the base application are then captured and stored such that the customizations made by the customizer can be determined from the base application information (step 810). In one embodiment, the IDE used to make the customizations may be configured to capture the customizations-related information (delta information) and store it in such a way that is it readily identifiable from the base application related information. For example, the IDE may be configured to, for customizations made by a user logged in under the “Customization Developer” role, capture and store the customization information and store the information in a separate file that is associated with the application.
In the embodiment depicted in
There are different ways in which the customization or delta information may be stored for an application such that it is identifiable from the base application information. In one embodiment, the customization information is stored separately from the information related to the base application (as shown in
In one embodiment, the delta file(s) may be in XML format. The delta file(s) may be updated each time customizations are made to the application. For example, if a delta file is stored on a per element basis, the file may be updated each time the element is customized.
In one embodiment, the delta information stored for an element comprises (1) change instructions, (2) change location information, and (3) the actual change value. Change instructions identify the nature of the changes made such as whether the element is being deleted, being modified, or another element is being added to the element. The change location information identifies the location of the change. This location information may identify the contextual position of the change. For example, for a BPEL process component comprising a flow of ordered activities, the change location information may identify where in the flow the change has occurred. The change value identifies the actual change that has been made. For example, if the value of a property of a component has been changed, the change value indicates the changed value.
The delta file may store information for different layers of customization that may have been made to the application. For example, a sample delta file may store the following information regarding elements which have been changed by layer country:IND.
As shown above, the information stored in the delta file identifies elements of the application that have been changed, the customized values, and also the customization layer.
In another embodiment, attributes associated with the application may be used to store information (delta information) related to customizations made to the application. For example, in one embodiment, the elements of the application may each have one or more associated attributes that capture the customizations made to the elements. These attributes may then be used to identify portions of the application that have been customized.
The customizations made by one customizer may be different from the customizations made by another customizer. For example, referring back to
Referring back to
Referring back to
The application may also be validated as part of the processing in 414. Validation processing may comprise performing syntactic validations and semantic validations on the application. Different validation techniques may be used for the different elements of the application. For example, the validation technique used for a BPEL component may be different from the validation performed for another non-BPEL component.
The application may also be compiled as part of 414. In one embodiment, the compilation for a composite application may comprise generating executable representations for the components of the composite. The compilation process for compiling a component may depend upon the technology used to implement the component. Since components of a composite application can be implemented using different technologies, the compilation process used for one component may be the same as or different from the compilation process used for another component of the application. The executable representations generated as a result of the compilations may also be different for different components of the application based upon the implementation technologies. For example, a BPEL component may get compiled to runtime Java code while a BPMN component may get compiled to a BPMN executable.
The package prepared in 414 includes information that may be used to identify customizations made to the base application. As previously described, various techniques may be used to store information that can be used to distinguish customized portions of an application including one or more delta files, attributes associated with elements of the application, and the like.
The package created in 414 may either be delivered to another customizer in the design environment (step 416) or may be deployed to a runtime environment (step 418). If delivered to another customizer (i.e., a downstream customizer), the downstream customizer may then make further customizations to the customized application (per step 410), set customization parameters for the application (per step 412), and the customized application may be packaged (per step 414) and delivered to yet another customizer or deployed to a runtime environment. In this manner, the application may be customized by multiple downstream customizers. For example, as depicted in
If the package is deployed to a runtime environment per 418, the application may be executed in the runtime environment (step 420). For example, as shown in
As described above, when an application element is customized, information related to the customizations may be stored in such a way that customizations that have been made to a base application can be easily determined. In the design-time environment, a tool as the IDE (e.g., JDeveloper) may use the delta information to render a graphical representation of the application in such a way that elements of the application that have been customized are easily identifiable. Different styles (e.g., characters, fonts, colors, etc.) may be used to visually differentiate elements of an application that have been customized.
As depicted in
Referring back to
Although the design-time and runtime systems are shown as being separate in
A runtime environment system may comprise execution engines (e.g., execution engines 132 and 134 depicted in
In one embodiment, a runtime system provides tools that facilitate runtime monitoring of the executing application. For example, a runtime system may comprise a monitor module (e.g., modules 140 and 142 depicted in
In one embodiment, a runtime monitor module may use the delta information stored for the application to identify and display the customized portions of the application. For example, delta files or attributes associated with elements of the application that are used to store the customization information may be used by the runtime monitor module to identify and display the customized portions of an application. In this manner, information associated with the application that identifies customizations made to the application is consumed by the runtime monitoring module to display the application such that customized portions of the application are clearly identifiable during runtime execution of the application.
As depicted in
As described above with respect to 414 in
As part of the life cycle of an application, an application developer may release new versions of an application. For example, a new application version may be released to correct bugs in a previous version, to enhance features provided by the previous version, to add new features to the previous version of the application, and the like. In one embodiment, when a new version of the base application (e.g., a base process) is sent to a site where the base application has been customized (i.e., to a customizer site), a patching task (also referred to as import task) is performed at the customizer site to integrate the new version with the previous customizations made by the customizer to the previous version(s) of the application.
For the embodiment depicted in
Information related to previous customizations for the application is accessed (step 1204). As described above, when customizations are made to the application, the customizations information is stored in a manner that allows it to be readily identified from the base application information. This enables the customization information to be readily indentified and accessed in 1204. For example, in embodiments where the customization information is stored in delta files separate from the base application information, the delta files may be accessed in 1204.
Conflict resolution is then performed using the new version of the base application received in 1202 and the customization information accessed in 1204 (step 1206). The conflict resolution may be performed in an automated manner or may involve some user interaction. In one embodiment, conflict resolution may be automated by configuring conflict resolution rules. Such rules may be configured to, upon identification of a conflict, determine a rule for resolving the conflict, and then apply the determined rule to resolve the conflict.
There are various types of conflicts that may be identified between the customization information and the newly received version of the base application. One type of conflict may arise when the same element property has been modified both in the customization information and in the new version. A conflict resolution rule (or user interaction) may be configured to resolve this priority. The conflict resolution rule may, for example, always give priority to the value set in the new version. Another type of conflict may arise when an element that was customizable in the previous application and was modified by the customizer is now tagged as being non-customizable in the new version. Such a conflict may require user interaction. A user may interact with the conflict resolution system to resolve such a conflict. Another type of conflict may occur when an element that has been customized is now not present (i.e., has been deleted) in the new version of the application. User interaction may resolve this conflict. Other types of conflicts may also exist and may be resolved either in an automated manner or involving some user interaction. In this manner, conflict resolution may be automated and/or may involve some user interaction. Accordingly, the processing performed in 1206 comprises identifying conflicts and resolving the conflicts either using a manual process, an automated process, or a combination thereof.
The customization information is then updated based upon the conflict resolution performed in 1206 (step 1208). Validation processing may then be performed for the application using the new version of the application (step 1210). The validation performed in 1210 may include syntactic validation and semantic validation. Different validation techniques may be used for the different elements of the application. In one embodiment, a validation technique (for syntactic and/or semantic validation) may be determined for an element of the application based upon the type of the element. For example, the validation technique used for a BPEL component may be different from the validation performed for a non-BPEL component. Additionally, there may be application level validator(s) for handling syntactic as well as semantic validations at the application level. For example, in one embodiment, validation is performed to determine whether the new version of the application in combination with the customizations conforms to its intended usage. As an example, a BPEL process can have a new addition of an assign or transform activity but the same assign can get modified in a patch.
A check is then made to see if validation was successful (step 1212). If it is determined in 1212 that validation is successful then the old version of the application may be replaced by the new version of the application received in 1202 (step 1214). The customizer may then make further customizations to the new version of the application. If it is determined in 1212 that validation is not successful, then an error condition may be output to the user (step 1216). In case of an error condition, the previous version of the application may not be replaced by the new version.
As shown in
Computer system 1300 may additionally include a computer-readable storage media reader 1312, a communications subsystem 1314 (e.g., a modem, a network card (wireless or wired), an infra-red communication device, etc.), and working memory 1318, which may include RAM and ROM devices as described above. In some embodiments, computer system 1300 may also include a processing acceleration unit 1316, which can include a digital signal processor (DSP), a special-purpose processor, and/or the like.
Computer-readable storage media reader 1312 can further be connected to a computer-readable storage medium 1310, together (and, optionally, in combination with storage device(s) 1308) comprehensively representing remote, local, fixed, and/or removable storage devices plus storage media for temporarily and/or more permanently containing computer-readable information.
Communications system 1314 may permit data to be exchanged with a network or other computer systems. The network may be any type of network that can support data communications using any of a variety of commercially-available protocols, including without limitation TCP/IP, SNA, IPX, AppleTalk, and the like. Merely by way of example, network may be a local area network (LAN), such as an Ethernet network, a Token-Ring network and/or the like; a wide-area network; a virtual network, including without limitation a virtual private network (VPN); the Internet; an intranet; an extranet; a public switched telephone network (PSTN); an infra-red network; a wireless network (e.g., a network operating under any of the IEEE 802.11 suite of protocols, the Bluetooth protocol known in the art, and/or any other wireless protocol); and/or any combination of these and/or other networks. Various different communication protocols may be used.
Computer system 1300 may also comprise software elements, shown as being currently located within working memory 1318, including an operating system 1320 and/or other code 1322, such as an application program (which may be a client application, Web browser, mid-tier application, RDBMS, etc.). It should be appreciated that alternative embodiments of computer system 1300 may have numerous variations from that described above. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, software (including portable software, such as applets), or both. Further, connection to other computing devices such as network input/output devices may be employed.
In one set of embodiments, the techniques described herein may be implemented as program code or instructions executable by a computer system (such as a computer system 1300) and may be stored on a computer- or machine-readable storage media. Machine-readable storage media may include any appropriate media known or used in the art, including storage media and communication media, such as (but not limited to) volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information such as machine-readable instructions, data structures, program modules, or other data, including RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store or transmit the desired information and which can be accessed by a computer.
Although specific embodiments of the invention have been described, various modifications, alterations, alternative constructions, and equivalents are also encompassed within the scope of the invention. Embodiments of the present invention are not restricted to operation within certain specific data processing environments, but are free to operate within a plurality of data processing environments. Additionally, although embodiments of the present invention have been described using a particular series of transactions and steps, it should be apparent to those skilled in the art that the scope of the present invention is not limited to the described series of transactions and steps.
Further, while embodiments of the present invention have been described using a particular combination of hardware and software, it should be recognized that other combinations of hardware and software are also within the scope of the present invention. Embodiments of the present invention may be implemented only in hardware, or only in software, or using combinations thereof.
The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that additions, subtractions, deletions, and other modifications and changes may be made thereunto without departing from the broader spirit and scope as set forth in the claims.
The present application claims the benefit and priority under 35 U.S.C. 119(e) from U.S. Provisional Application No. 61/262,458 filed Nov. 18, 2009 entitled SOA CUSTOMIZATION AND PATCHING, the entire contents of which are herein incorporated by reference for all purposes. The present application also incorporates by reference for all purposes the entire contents of U.S. Non-Provisional application Ser. No. 12/790,437, filed May 28, 2010, entitled TECHNIQUES RELATED TO CUSTOMIZATIONS FOR COMPOSITE APPLICATIONS.
Number | Name | Date | Kind |
---|---|---|---|
5790778 | Bush et al. | Aug 1998 | A |
5850518 | Northrup | Dec 1998 | A |
6117180 | Dave et al. | Sep 2000 | A |
6138270 | Hsu | Oct 2000 | A |
6397254 | Northrup | May 2002 | B1 |
6401134 | Razavi et al. | Jun 2002 | B1 |
6421705 | Northrup | Jul 2002 | B1 |
6442751 | Cocchi et al. | Aug 2002 | B1 |
6487713 | Cohen et al. | Nov 2002 | B1 |
6546413 | Northrup | Apr 2003 | B1 |
6601233 | Underwood | Jul 2003 | B1 |
6641746 | Houge et al. | Nov 2003 | B2 |
6671713 | Northrup | Dec 2003 | B2 |
6671746 | Northrup | Dec 2003 | B1 |
6779000 | Northrup | Aug 2004 | B1 |
6807636 | Hartman et al. | Oct 2004 | B2 |
6901580 | Iwanojko et al. | May 2005 | B2 |
6922675 | Chatterjee et al. | Jul 2005 | B1 |
6922705 | Northrup | Jul 2005 | B1 |
6947992 | Shachor | Sep 2005 | B1 |
7028019 | McMillan et al. | Apr 2006 | B2 |
7062749 | Cyr et al. | Jun 2006 | B2 |
7086009 | Resnick et al. | Aug 2006 | B2 |
7188158 | Stanton et al. | Mar 2007 | B1 |
7203938 | Ambrose et al. | Apr 2007 | B2 |
7343360 | Ristanovic et al. | Mar 2008 | B1 |
7349913 | Clark et al. | Mar 2008 | B2 |
7535927 | Northrup | May 2009 | B1 |
7536606 | Andrews et al. | May 2009 | B2 |
7584207 | Mortensen et al. | Sep 2009 | B2 |
7603674 | Cyr et al. | Oct 2009 | B2 |
7644262 | Bromley et al. | Jan 2010 | B1 |
7693851 | Beckaer | Apr 2010 | B2 |
7721158 | Lee | May 2010 | B2 |
7774477 | Zintel et al. | Aug 2010 | B2 |
7783782 | Cromp et al. | Aug 2010 | B2 |
7788338 | Savchenko et al. | Aug 2010 | B2 |
7793340 | Kiester et al. | Sep 2010 | B2 |
7827494 | Hedayatpour et al. | Nov 2010 | B1 |
7840941 | Brookins et al. | Nov 2010 | B2 |
7853899 | Damaschke et al. | Dec 2010 | B1 |
7865544 | Kordun et al. | Jan 2011 | B2 |
7895512 | Roberts | Feb 2011 | B2 |
7933946 | Livshits et al. | Apr 2011 | B2 |
7945907 | Dreiling et al. | May 2011 | B2 |
7984424 | Dengler et al. | Jul 2011 | B2 |
7992130 | Bozza et al. | Aug 2011 | B2 |
8015545 | Seto et al. | Sep 2011 | B2 |
8074214 | Isaacson et al. | Dec 2011 | B2 |
8108825 | Goodwin et al. | Jan 2012 | B2 |
8209675 | Zhao et al. | Jun 2012 | B2 |
8538998 | Barrow | Sep 2013 | B2 |
8667031 | Konduri et al. | Mar 2014 | B2 |
20020023140 | Hile et al. | Feb 2002 | A1 |
20020103660 | Cramon et al. | Aug 2002 | A1 |
20020129060 | Rollins et al. | Sep 2002 | A1 |
20020143735 | Ayi et al. | Oct 2002 | A1 |
20020147757 | Day et al. | Oct 2002 | A1 |
20020188613 | Chakraborty et al. | Dec 2002 | A1 |
20030005117 | Kang et al. | Jan 2003 | A1 |
20030025732 | Prichard | Feb 2003 | A1 |
20030033310 | Factor et al. | Feb 2003 | A1 |
20030034989 | Kondo | Feb 2003 | A1 |
20030084424 | Reddy et al. | May 2003 | A1 |
20030088857 | Balva et al. | May 2003 | A1 |
20030172127 | Northrup | Sep 2003 | A1 |
20030172168 | Mak et al. | Sep 2003 | A1 |
20030172193 | Olsen | Sep 2003 | A1 |
20030192031 | Srinivasan et al. | Oct 2003 | A1 |
20030204518 | Lang et al. | Oct 2003 | A1 |
20030204645 | Sharma et al. | Oct 2003 | A1 |
20030233631 | Curry et al. | Dec 2003 | A1 |
20030233642 | Hank | Dec 2003 | A1 |
20040046787 | Henry et al. | Mar 2004 | A1 |
20040046789 | Inanoria | Mar 2004 | A1 |
20040054991 | Harres | Mar 2004 | A1 |
20040073565 | Kaufman et al. | Apr 2004 | A1 |
20040078424 | Yairi et al. | Apr 2004 | A1 |
20040111533 | Beisiegel et al. | Jun 2004 | A1 |
20040111673 | Bowman et al. | Jun 2004 | A1 |
20040148588 | Sadiq | Jul 2004 | A1 |
20040181534 | Mortensen et al. | Sep 2004 | A1 |
20040194016 | Liggitt | Sep 2004 | A1 |
20040205117 | Hertling et al. | Oct 2004 | A1 |
20040205765 | Beringer et al. | Oct 2004 | A1 |
20040230639 | Soluk et al. | Nov 2004 | A1 |
20050044197 | Lai | Feb 2005 | A1 |
20050091639 | Patel | Apr 2005 | A1 |
20050183074 | Alexander et al. | Aug 2005 | A1 |
20050193061 | Schmidt et al. | Sep 2005 | A1 |
20050223361 | Belbute | Oct 2005 | A1 |
20050251788 | Henke et al. | Nov 2005 | A1 |
20050273772 | Matsakis et al. | Dec 2005 | A1 |
20060010163 | Herzog et al. | Jan 2006 | A1 |
20060015847 | Carroll, Jr. | Jan 2006 | A1 |
20060031750 | Waldorf et al. | Feb 2006 | A1 |
20060036463 | Patrick et al. | Feb 2006 | A1 |
20060075387 | Martin et al. | Apr 2006 | A1 |
20060080117 | Carr et al. | Apr 2006 | A1 |
20060101038 | Gabriel et al. | May 2006 | A1 |
20060106626 | Jeng et al. | May 2006 | A1 |
20060130047 | Burugapalli | Jun 2006 | A1 |
20060136832 | Keller et al. | Jun 2006 | A1 |
20060143229 | Bou-Ghannam et al. | Jun 2006 | A1 |
20060150156 | Cyr et al. | Jul 2006 | A1 |
20060165105 | Shenfield et al. | Jul 2006 | A1 |
20060168132 | Bunter et al. | Jul 2006 | A1 |
20060168355 | Shenfield et al. | Jul 2006 | A1 |
20060168557 | Agrawal et al. | Jul 2006 | A1 |
20060184866 | Rees | Aug 2006 | A1 |
20060206858 | Becker et al. | Sep 2006 | A1 |
20060235733 | Marks | Oct 2006 | A1 |
20060235986 | Kim | Oct 2006 | A1 |
20060242636 | Chilimbi et al. | Oct 2006 | A1 |
20060253490 | Krishna et al. | Nov 2006 | A1 |
20060265702 | Isaacson et al. | Nov 2006 | A1 |
20060271537 | Chandrasekharan et al. | Nov 2006 | A1 |
20060277542 | Wipfel | Dec 2006 | A1 |
20060282767 | Suryanarayana et al. | Dec 2006 | A1 |
20060294474 | Taylor et al. | Dec 2006 | A1 |
20060294506 | Dengler et al. | Dec 2006 | A1 |
20070016429 | Bournas et al. | Jan 2007 | A1 |
20070055936 | Dhanjal et al. | Mar 2007 | A1 |
20070106975 | DeLine | May 2007 | A1 |
20070113191 | Keller et al. | May 2007 | A1 |
20070130205 | Dengler et al. | Jun 2007 | A1 |
20070157078 | Anderson | Jul 2007 | A1 |
20070169199 | Quinnell et al. | Jul 2007 | A1 |
20070174763 | Chang et al. | Jul 2007 | A1 |
20070174822 | Moser et al. | Jul 2007 | A1 |
20070203956 | Anderson et al. | Aug 2007 | A1 |
20070220429 | Kureshy et al. | Sep 2007 | A1 |
20070240096 | Pontoppidan et al. | Oct 2007 | A1 |
20070245340 | Cohen et al. | Oct 2007 | A1 |
20070271552 | Pulley | Nov 2007 | A1 |
20070277095 | Ukigawa | Nov 2007 | A1 |
20070282885 | Baude et al. | Dec 2007 | A1 |
20070294586 | Parvathy et al. | Dec 2007 | A1 |
20070294664 | Joshi | Dec 2007 | A1 |
20080004887 | Brunswig et al. | Jan 2008 | A1 |
20080028302 | Meschkat | Jan 2008 | A1 |
20080065675 | Bozich et al. | Mar 2008 | A1 |
20080077848 | Roberts | Mar 2008 | A1 |
20080083012 | Yu et al. | Apr 2008 | A1 |
20080104617 | Apacible et al. | May 2008 | A1 |
20080120557 | Offenhartz et al. | May 2008 | A1 |
20080126396 | Gagnon | May 2008 | A1 |
20080127087 | Brookins et al. | May 2008 | A1 |
20080127124 | Gilfix et al. | May 2008 | A1 |
20080162304 | Ourega | Jul 2008 | A1 |
20080163164 | Chowdhary et al. | Jul 2008 | A1 |
20080183479 | Iwashita et al. | Jul 2008 | A1 |
20080183744 | Adendorff et al. | Jul 2008 | A1 |
20080184201 | Burns et al. | Jul 2008 | A1 |
20080189358 | Charles | Aug 2008 | A1 |
20080189617 | Covell et al. | Aug 2008 | A1 |
20080196024 | Barfield et al. | Aug 2008 | A1 |
20080243901 | Super et al. | Oct 2008 | A1 |
20080250313 | Kamdar et al. | Oct 2008 | A1 |
20080275844 | Buzsaki et al. | Nov 2008 | A1 |
20080276218 | Taylor et al. | Nov 2008 | A1 |
20080276260 | Garlick et al. | Nov 2008 | A1 |
20080295109 | Huang et al. | Nov 2008 | A1 |
20080313648 | Wang et al. | Dec 2008 | A1 |
20090031280 | Koehler | Jan 2009 | A1 |
20090083297 | Pohl et al. | Mar 2009 | A1 |
20090106494 | Knebel | Apr 2009 | A1 |
20090144716 | Felts | Jun 2009 | A1 |
20090144729 | Guizar | Jun 2009 | A1 |
20090150565 | Grossner et al. | Jun 2009 | A1 |
20090157859 | Morris | Jun 2009 | A1 |
20090158237 | Zhang et al. | Jun 2009 | A1 |
20090178020 | Goodwin et al. | Jul 2009 | A1 |
20090204567 | Barrow | Aug 2009 | A1 |
20090204629 | Barrow | Aug 2009 | A1 |
20090204884 | Barrow et al. | Aug 2009 | A1 |
20090204943 | Konduri | Aug 2009 | A1 |
20090205013 | Lowes | Aug 2009 | A1 |
20090217153 | Oshima et al. | Aug 2009 | A1 |
20090259993 | Konduri et al. | Oct 2009 | A1 |
20090292797 | Cromp et al. | Nov 2009 | A1 |
20090313256 | Konduri et al. | Dec 2009 | A1 |
20100057482 | Radhakrishnan et al. | Mar 2010 | A1 |
20100057836 | Anbuselvan | Mar 2010 | A1 |
20100070553 | Addala et al. | Mar 2010 | A1 |
20100070973 | Addala et al. | Mar 2010 | A1 |
20100082556 | Srinivasan et al. | Apr 2010 | A1 |
20100132009 | Khemani et al. | May 2010 | A1 |
20100146291 | Anbuselvan | Jun 2010 | A1 |
20100313038 | Bradley | Dec 2010 | A1 |
20110023071 | Li et al. | Jan 2011 | A1 |
20110119651 | Utschig-Utschig et al. | May 2011 | A1 |
Entry |
---|
Hildebrandt, G., “Web-based Document Management”, Apr. 2001, 22 pages. |
Shang-Pin Ma, “Discovery-Based Service Composition, ”National Central University, Doctoral Dissertation. Jan. 2007, 109 pages. |
Yang et al., “Web Component: A Substrate for Web Service Reuse and Composition”. Proc. 14th Conf. Advanced Information Systems Eng. (CAiSE 02), LNCS 2348, Springer-Verlag, 2002, 16 pages. |
“Ajax & Security: Vulnerability in DWR Security Logic Identified Can Potentially be exploited to launce DoS attacks and break into back-end servers”, published Jan. 8, 2007, AjaxWorld™ Magazine, pp. 1-4 downloaded on Oct. 6, 2008 from http://ajax.sys-con.com/node/319868, 4 pages. |
“Direct Web Remoting, About DWR's Javascript Security”, 4 pages downloaded from http://directwebremoting.org/dwr/security/script-tag-protection on Oct. 6, 2008. |
“Direct Web Remoting, DWR version 2—New and Noteworthy”, 4 pages downloaded from http://directwebremoting.org/dwr/changelog/dwr20 on Dec. 5, 2008. |
“Direct Web Remoting, DWR: Easy AJAX for JAVA”, 2 pages downloaded from http://directwebremoting.org/dwr/overview/dwr on Oct. 6, 2008. |
“Direct Web Remoting, Safari, Get and Request Forgery”, 1 page downloaded from http://directwebremoting.org/dwr/security/allowGetForSafariButMakeForgeryEasier on Oct. 6, 2008. |
“Direct Web Remoting, Security”, 4 pages downloaded from http://directwebremoting.org/dwr/security on Oct. 6, 2008. |
“Google Web Toolkit, Product Overview”, 3 pages downloaded from http://code.google.com/webtoolkit/overview.html on Oct. 6, 2008. |
“Oracle Application Framework”, Oracle, Dec. 2006, pp. 1-242, 242 pages. |
Altenhofen et al., “ASMs in Service Oriented Architectures”, Journal of Universal Computer Science, vol. 14, No. 12, 2008, 25 pages. |
Box et al., “Web Services Addressing (WS-Addressing)” Aug. 10, 2004, 23 pages, http://www.w3.org/Submission/ws-addressing/#—Toc77464317, printed on Aug. 18, 2009, 23 pages. |
Carey, “Making BPEL Processes Dynamic” Oracle Technology Network, 8 pages, printed on Aug. 18, 2009, 8 pages. |
Claypool et al., “Optimizing Performance of Schema Evolution Sequences”, Objects and Databases [online], 2000 [retrieved Feb. 7 , 2012], retrieved from Internet: http://se-pubs.dbs.uni-leipzig.de/files/Claypool2000OptimizingPerformanceofSchemaEvolutionSequences.pdf, pp. 114-127, 14 pages. |
Curphey et al., “Web Application Security Assessment Tools”, IEEE, 2006, pp. 32-41, 10 pages. |
Dipaola et al., “Subverting Ajax”, Dec. 2006, 23rd CCC Conference, pp. 1-8, 8 pages. |
Hohpe et al., “Messaging Systems” Enterprise Integration Patterns 2004, pp. 57-97, Chapter 3, Pearson Education, Inc, Boston, Massachusetts, 45 pages. |
Nagappan et al., “XML Processing and Data Binding with Java APIs” in: Developing Java Web Services: Architecting and Developing Secure Web Services Using Java [online], 2003 [retrieved Feb. 7, 2012], retrieved from Internet: http://java.sun.com/developer/Books/j2ee/devjws/, pp. 313-399, 89 pages. |
Steinberg, “Data Binding with JAXB” [online], 2003 [retrieved Feb. 7, 2012], retrieved from Internet: https://www6.software.ibm.com/developerworks/education/x-jabx/x-jaxb-a4.pdf, pp. 1-34, 34 pages. |
Final Office Action for U.S. Appl. No. 12/029,615 mailed on Jul. 31, 2012, 33 pages. |
Notice of Allowance for U.S. Appl. No. 12/330,008 mailed on Aug. 7, 2012, 17 pages. |
U.S. Appl. No. 12/790,347, filed May 28, 2010, Utschig-Utschig et al. |
Beisiegel, et al., “SCA Service Component Architecture—Assembly Model Specification,” Mar. 15, 2007, SCA version 1.00, 91 pages, BEA Systems, Inc. |
“Business Process Language (BPEL) and Oracle BPEL Process Manager,” Oracle FAQ, updated Jun. 26, 2004, printed on Nov. 11, 2009, at URL: http://www.oracle.com/technology/products/ias/bpel/htdocs/orabpel—faq.html?template= . . . , 3 pages. |
Chapman, et al., “SCA Service Component Architecture—Client and Implementation Model Specification for WS-BPEL,” Mar. 21, 2007, SCA version 1.00, 15 pages, BEA Systems, Inc. |
Chappell, “Introducing SCA,” David Chappell & Associates, Jul. 2007, pp. 1-22. |
CipherSoft Inc, “Exodus-Main Features Benefits” Products, at URL: http://www.ciphersoftinc.com/products/expdus-features-benefits.html; printed on Aug. 28, 2009; 3 pages. |
CipherSoft Inc, “Exodus™ Products,” printed on Aug. 28, 2009, at URL: http://www.ciphersoftinc.com/products/migration-products-overview.html; 3 pages. |
“Client-Server Modernization—From Oracle® Forms to Java,” VGO Software Products, printed on Aug. 28, 2009, at URL: http://www.vgosoftware.com/products/evo/index.php; 2 pages. |
Dynamic Structure in ADF UIX Pages, from Oracle ADF UIX Developer's Guide, pp. 1-11 downloaded from http://www.oracle.com/webapps/online-help/jdeveloper/10.1.2/state/content/navld.4/navSetld.—/vtAnchor.DeltaTree/vtTopicFile.uixhelp%7Cuixdevguide%7Cdynamic%7Ehtml/ on Apr. 21, 2008. |
“Oracle Forms to Java Modernization” printed on Aug. 28, 2009, at URL: http://www.vgosoftware.com/products/evo/walkthrough.php; VGO Software Information printed 5 pages. |
Shepherd, et al., “Oracle SCA—The Power of the Composite,” An Oracle White Paper, Aug. 2009, pp. 1-19, Oracle. |
“Vgo Software First to Convert Oracle Forms to Oracle ADF V11”; VGO News, printed on Aug. 28, 2009; at URL: http://www.vgosoftware.com/about/news/view—article.php?new—id=35; 2 pages. |
Non-Final Office Action for U.S. Appl. No. 12/029,605, mailed on May 12, 2010, 13 pages. |
Final Office Action for U.S. Appl. No. 12/029,605, mailed on Sep. 28, 2010, 15 pages. |
Non-Final Office Action for U.S. Appl. No. 12/029,609, mailed on May 26, 2010, 17 pages. |
Final Office Action for U.S. Appl. No. 12/029,609, mailed on Oct. 13, 2010, 14 pages. |
Non-Final Office Action for U.S. Appl. No. 12/203,816, mailed on Sep. 2, 2010, 18 pages. |
Zhang, et al., “Schema Based XML Security: RBAC Approach,” Machine Simulator, Third International Conference on Computer Assisted Learning, Published 2003, at URL: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.3.6016, pp. 1-15. |
Final Office Action for U.S. Appl. No. 12/203,816, mailed on Jan. 20, 2011, 26 pages. |
Non-Final Office Action for U.S. Appl. No. 12/029,724, mailed on Dec. 14, 2010, 43 pages. |
“File and Registry Virtualization—the good, the bad, and the ugly,” Jerry's Incoherent Babbling; Windows Connected Blog; Published Dec. 19, 2005; at URL: http://windowsconnected.com/blogs/jerry/archive/2005/12/19/file-and-registry-virtualization-the-good-the-bad-and-t . . . ; 6 pages. |
Phanouriou, “UIML: A Device-Independent User Interface Markup Language,” Doctoral Dissertation, Virginia Polytechnic Institute and State University, Sep. 26, 2000, 172 pages. |
Smith, Portals: Toward an Application Framework for Interoperability,: Communications of the ACM, Oct. 2004, vol. 47, No. 10, pp. 93-97. |
Final Office Action for U.S. Appl. No. 12/029,724, mailed on May 5, 2011, 27 pages. |
Non-Final Office Action for U.S. Appl. No. 12/029,600, mailed on Apr. 27, 2011, 216 pages. |
Non-Final Office Action for U.S. Appl. No. 12/138,997, mailed on Jun. 24, 2011, 19 pages. |
Cetin, et al., “A Mashup-Based Strategy for Migration to Service-Oriented Computing”, IEEE International Conference on Pervasive Services, IEEE, Jul. 20, 2007, pp. 169-172. |
Claessens, J., et al., “A Tangled World Web of Security Issues.” First Monday vol. 7, No. 3-4, (Mar. 2002): 24 pages. Web. Jun. 25, 2013. |
Li, M. et al., “Leveraging legacy codes to distributed problem-solving environments: A Web Services Approach”, Software: Practice and Experience, vol. 34(13), (2004) pp. 1297-1309. |
Li, M. et al., “Sgrid: A Service-Oriented Model for the Semantic Grid”, Future Generation Computer Systems, 2004, vol. 20(1), pp. 7-18. |
Mietzner, et al., “Defining Composite Configurable SaaS Application Packages Using SCA Variability Descriptors and Multi-Tenancy Patters,”, 2008, pp. 156-161. |
Phillips, Josh. Window's Connected UseriD: Jerry. Jerry's Incoherent Babbling: “File and Registry Virtualization—the good, the bad, and the ugly”. <http:/ /wi ndowsco n nected. co m/b logs/jerry/arch ive/2005/ 12/19/fi l e-and-reg istry-vi rtual izatio n-th e-good-th ebad-and-the-ugly.aspx>. Published: Dec. 19, 2005, 6 pages. |
Sneed, Harry M. “Integrating Legacy Software Into a Service Oriented Architecture”, Software Maintenance and Reengineering, CSMR 2006, IEEE, 11 pages. |
Non-Final Office Action for U.S. Appl. No. 12/203,816 mailed on Oct. 26, 2012 30 pages. |
Final Office Action for U.S. Appl. No. 12/203,816 mailed on Jul. 5, 2013, 25 pages. |
Advisory Action for U.S. Appl. No. 12/203,816 mailed on Aug. 15, 2013, 3 pages. |
Non-Final Office Action for U.S. Appl. No. 12/029,724 mailed on Jan. 7, 2013, 39 pages. |
Final Office Action for U.S. Appl. No. 12/029,724 mailed on Apr. 30, 2013, 33 pages. |
Terminal Disclaimer—Approved for U.S. Appl. No. 12/029,600 mailed on Oct. 25, 2011, 1 page. |
Non-Final Office Action for U.S. Appl. No. 12/029,600 mailed on Sep. 17, 2012, 38 pages. |
Notice of Allowance for U.S. Appl. No. 12/029,600 mailed on Nov. 7, 2012, 16 pages. |
Notice of Allowance for U.S. Appl. No. 12/029,600 mailed on Feb. 5, 2013, 16 pages. |
Notice of Allowance for U.S. Appl. No. 12/029,600 mailed on Jun. 11, 2013, 10 pages. |
Non-Final Office Action for U.S. Appl. No. 12/029,605 mailed on Apr. 10, 2013, 38 pages. |
Final Office Action for U.S. Appl. No. 12/029,605 mailed on Sep. 6, 2013, 19 pages. |
Non-Final Office Action for U.S. Appl. No. 12/029,609 mailed on Jul. 28, 2011, 29 pages. |
Notice of Allowance for U.S. Appl. No. 12/029,609 mailed on Feb. 4, 2013, 52 pages. |
Notice of Allowance for U.S. Appl. No. 12/029,609 mailed on May 29, 2013, 14 pages. |
Non-Final Office Action for U.S. Appl. No. 12/212,599 mailed on Aug. 2, 2012, 18 pages. |
Notice of Allowance for U.S. Appl. No. 12/212,599 mailed on Jun. 19, 2013, 6 pages. |
Notice of Allowance for U.S. Appl. No. 12/212,599 mailed on Oct. 2, 2013, 3 pages. |
Notice of Allowance for U.S. Appl. No. 12/101,420 mailed on Aug. 28, 2013, 9 pages. |
Advisory Action for U.S. Appl. No. 12/487,004 mailed on May 24, 2012, 5 pages. |
Non-Final Office Action for U.S. Appl. No. 12/487,004 mailed on Sep. 24, 2013, 22 pages. |
Advisory Action for U.S. Appl. No. 12/029,615 mailed on Oct. 16, 2012, 5 pages. |
Non-Final Office Action for U.S. Appl. No. 12/790,437 mailed on Jan. 30, 2013, 31 pages. |
Final Office Action for U.S. Appl. No. 12/790,437 mailed on Jul. 12, 2013, 12 pages. |
Notice of Allowance for U.S. Appl. No. 12/138,997 mailed on Nov. 27, 2013, 13 pages. |
Chen et. al., Feature Analysis for Service-Oriented Reengineering, IEEE 12th Asia-Pacific Software Engineering Conference (APSEC 2005), Dec. 2005, Taipei, Taiwan. |
Advisory Action for U.S. Appl. No. 12/029,605 mailed on Dec. 18, 2013, 4 pages. |
Notice of Allowance for U.S. Appl. No. 12/029,605 mailed on Mar. 3, 2014, 15 pages. |
Notice of Allowance for U.S. Appl. No. 12/212,599 mailed on Feb. 7, 2014, 5 pages. |
Final Office Action for U.S. Appl. No. 12/487,004 mailed on Dec. 27, 2013, 18 pages. |
Notice of Allowance for U.S. Appl. No. 12/487,004 mailed on Mar. 6, 2014, 7 pages. |
Non-Final Office Action for U.S. Appl. No. 12/790,437 mailed on Dec. 30, 2013, 15 pages. |
Notice of Allowance for U.S. Appl. No. 12/101,420 mailed on Mar. 17, 2014, 8 pages. |
Non-Final Office Action for U.S. Appl. No. 12/029,615 mailed on Mar. 21, 2014, 29 pages. |
Number | Date | Country | |
---|---|---|---|
20110119649 A1 | May 2011 | US |
Number | Date | Country | |
---|---|---|---|
61262458 | Nov 2009 | US |