US20090037896A1 - Legacy application decommissioning framework - Google Patents
Legacy application decommissioning framework Download PDFInfo
- Publication number
- US20090037896A1 US20090037896A1 US11/888,970 US88897007A US2009037896A1 US 20090037896 A1 US20090037896 A1 US 20090037896A1 US 88897007 A US88897007 A US 88897007A US 2009037896 A1 US2009037896 A1 US 2009037896A1
- Authority
- US
- United States
- Prior art keywords
- decommissioning
- web service
- gap
- logic
- legacy application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 61
- 238000011156 evaluation Methods 0.000 claims description 21
- 230000015654 memory Effects 0.000 claims description 20
- 230000003993 interaction Effects 0.000 abstract description 20
- 238000013459 approach Methods 0.000 abstract description 11
- 101100121123 Caenorhabditis elegans gap-1 gene Proteins 0.000 description 104
- 101100282111 Caenorhabditis elegans gap-2 gene Proteins 0.000 description 70
- 238000013461 design Methods 0.000 description 42
- 239000002131 composite material Substances 0.000 description 41
- 230000004044 response Effects 0.000 description 27
- 230000009471 action Effects 0.000 description 22
- 230000005012 migration Effects 0.000 description 22
- 238000013508 migration Methods 0.000 description 22
- 238000004891 communication Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 8
- 230000010354 integration Effects 0.000 description 7
- 239000000203 mixture Substances 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000012552 review Methods 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000003090 exacerbative effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Definitions
- This disclosure concerns a system and method for decommissioning legacy applications by migrating functionality of legacy applications to new platforms and architectures.
- this disclosure relates to an efficient and non-invasive way to decommission legacy applications using a phased migration approach.
- an organization initiates the decommissioning of a legacy application by migrating functionality to a new platform or architecture, organizations spend a great deal of time and money recreating the functionality of legacy applications from scratch.
- system integrators desire to reuse existing assets of a legacy application targeted for decommissioning (e.g., legacy applications, processes, and software components) by simply providing a new interface or platform in which to interact with these assets.
- One such example includes migrating legacy applications to web services in a Service Oriented Architecture (SOA).
- SOA Service Oriented Architecture
- developers have identified only a limited number of ways to migrate legacy applications to new platforms and architectures without giving rise to lengthy project schedules and excessive budgets, often forcing companies to reengineer systems and applications from scratch.
- phased migration approaches that do not allow for the phased migration of functionality.
- Migration approaches that impose a non-phased approach take longer to complete, increase the complexity of testing, and impose a burden on users to adapt to an entire suite of migrated functionality all at once.
- phased migration approaches can be plagued with inefficiencies. For example, one phased migration approach actually expose users to two disparate systems (e.g., the legacy application and the new migration) during the migration until developers complete the entire migration, and force users to interact with the two disparate systems through separate interfaces.
- GUI Graphical User Interface
- GAPs Graphical User Interface
- System integrators find migrating existing GAPs a particularly difficult technical challenge, especially for closed and monolithic GAPs because GAPs do not interoperate (e.g., exchange information) with other systems. Because closed and monolithic GAPs do not interoperate with other systems, phased migrations present extremely technical challenges. Given the complexity of GAPs and the cost to efficiently and non-invasively make GAPs interoperable, presents one of the fundamental technical problems of migrating legacy applications.
- GUI Graphical User Interface
- legacy GAPs tend to use legacy GAPs as long as possible in business operations, primarily to realize the return on investment for the legacy GAPs.
- system integrators consider the vast majority of GAPs encountered as closed and monolithic and prefer to use legacy GAPs as long as possible to avoid the burden of re-writing the functionality from scratch because of the difficulty of enabling GAPs to interoperate.
- Most GAPs do not expose programming interfaces or data in known formats.
- system integrators desire to incrementally migrate GAPs components into integrated applications, often the original implementation of a GAP makes migration without re-writing logic impossible.
- the extraordinary technical challenges associated with decommissioning a legacy application and migrating legacy applications to new platforms and architectures include implementing controlled phased migrations that allow organizations to introduce migrated functionality in manageable portions over time.
- the technical challenges also include decommissioning and migrating third-party GAPs without the ability to review the legacy source code of the third-party GAPs.
- the legacy application decommissioning framework provides developers a way to implement phased migrations of legacy applications to new platforms and architectures.
- the decommissioner allows organizations to control the migration of legacy applications at a granular level by providing a web service wrapper for GAPs (e.g., functionality of an interoperable legacy application) that allows a developer to incrementally decommission the legacy application.
- the decommissioner builds a core web service that includes a core web service identifier and legacy application invocation logic that interacts with the legacy application and invokes the legacy application logic.
- the decommissioner produces a web service wrapper that includes the core web service identifier and legacy application invocation logic (e.g., a call to a proxy or a dispatcher).
- the decommissioner uses the dispatcher as a central point for coordinating proxies in a distributed environment.
- the proxy registers with the dispatcher under a unique name, collects GAP identification data and information about GAPs, and sends the collected GAP identification and information about GAPs to the dispatcher.
- the dispatcher uses the information collected from the proxies to route web service requests.
- the dispatcher acts as a request handler and receives a web service functionality request for legacy application logic and responsively invokes the decommissioning framework.
- the developer may introduce decommissioning replacement logic into the web service wrapper to allow a user to interact with the legacy application and new application transparently using a common interface (e.g., a client program).
- the decommissioning replacement logic maps legacy application features into the web service wrapper that the decommissioner can eventually decommission in the legacy application.
- the decommissioner tracks the legacy application logic (e.g., features) implemented in the web service wrapper and notifies the developer when the features identified for decommissioning have been replaced and/or decommissioned in the legacy application.
- the decommissioner may incrementally introduce decommissioning replacement logic into the web service wrapper over a transition period during which the developer incrementally migrates the legacy application functionality to the new application so that the legacy application can be completely decommissioned at the end of the transition period.
- the organization may vary the transition period for each of the discrete features (e.g., legacy application logic implementing particular functionality) of the legacy application depending on the complexity of the legacy application logic providing the functionality, the migration dependencies and impacts to other legacy application features, and the readiness of the new application to inherit the decommissioned functionality from the legacy application.
- the decommissioner can replace legacy application logic with decommissioning replacement logic at a very granular level.
- the decommissioner may provide zero degrees of coverage for the legacy application logic implementing a particular feature.
- the decommissioner may provide a non-zero degree of coverage so that a blended combination of legacy application logic and decommissioning replacement logic provide the features of the legacy application.
- the decommissioner may provide 100 percent decommissioning replacement logic (e.g., 100% degree of coverage) where the decommissioner has completely migrated the legacy application logic to a new application.
- the decommissioner sends a decommissioning request to the developer when the degree of coverage provided by the decommissioner meets a decommissioning threshold.
- the decommissioner may designate a default decommissioning threshold and/or the developer may specify the decommissioning threshold.
- the degree of coverage may meet the decommissioning threshold even though the decommissioner has not implemented all the features of the legacy application. For example, a developer may assign legacy application logic a weight from 1 to 10, where a weight of 10 indicates a critical feature and a weight of 1 indicates an optional and/or non-critical feature.
- the degree of coverage may meet the decommissioning threshold when the features assigned a weight over 7 have been implemented by the decommissioning framework.
- the decommissioner sends a decommissioning request to the developer and inserts default decommissioning replacement logic to replace features not included in the degree of coverage.
- the decommissioner solves the extraordinary technical challenges associated with decommissioning a legacy application and migrating legacy applications to new platforms and architectures.
- the decommissioner solves these extraordinary challenges by providing developers a tool to implement controlled phased migrations that allow organizations to introduce migrated functionality in manageable portions over time.
- the decommissioner also solves the technical challenges of decommissioning and migrating third-party GAPs where a developer does not have the ability to review the legacy source code of the third-party GAPs.
- FIG. 1 illustrates an integrated system composing GUI-Based Applications and web services.
- FIG. 2 shows a dispatcher coordinating communication between GAPs and web services.
- FIG. 3 illustrates a GAP host computer concurrently running two GAPs.
- FIG. 4 shows a dispatcher and dispatcher components.
- FIG. 5 shows a composition integration design tool system
- FIG. 6 shows one example implementation of a design tool user interface.
- FIG. 7 shows a design tool user interface and composite web service.
- FIG. 8 shows a design tool user interface and web service parameter relationship.
- FIG. 9 shows the acts that a proxy may take to register GAPs with a dispatcher.
- FIG. 10 shows the acts that a dispatcher may take to register a web service, and coordinate communication between web services and proxies.
- FIG. 11 shows the acts that a hook may take to command and control a UI element.
- FIG. 12 shows the acts the composition integration design tool system may take to capture the structural representation of GUIs of a GAP and UI elements of the GAP.
- FIG. 13 shows a web service creation tool.
- FIG. 14 shows a structural representation of a GUI of a GAP and UI elements of the GAP.
- FIG. 15 shows a design tool user interface for a web service creation tool.
- FIG. 16 shows one example implementation of the web service creation tool.
- FIG. 17 shows the acts that a proxy and dispatcher may take in a web service creation tool.
- FIG. 18 illustrates a decommissioning system
- FIG. 19 shows multiple core web services in communication with a legacy application.
- FIG. 20 shows a partially decommissioned legacy application.
- FIG. 21 shows a fully decommissioned legacy application.
- FIG. 22 shows an example of the processing that the decommissioning logic and decommissioning evaluation logic perform.
- the decommissioner addresses the technical challenge of enabling GAPs to exchange information (i.e., interoperate) with each other and web services.
- the decommissioner solves the technical problem of implementing controlled phased migrations of legacy applications (e.g., GAPs) that allow organizations to introduce migrated functionality in manageable portions over time, efficiently and non-invasively.
- legacy applications e.g., GAPs
- the decommissioner also solves the technical challenges of migrating third-party GAPs where the organization does not have access to review the legacy source code of the third-party GAPs.
- Phased migrations allow organizations to introduce migrated legacy application functionality over time, minimize the complexity of and isolate testing, and allow users time to become comfortable with the migrated functionality.
- Migration approaches that impose a non-phased approach take longer to complete, increase the complexity of testing, and impose a burden on users to adapt to an entire suite of migrated functionality all at once.
- a developer may connect UI elements of a GAP with properties of the web service by placing logic that invokes the functionality of the GAP into a core web service.
- the logic specifies how the web service interacts with the legacy GAP.
- the developer selects a method for the web service, and determines how to invoke the web service. For example, an end user performing some action on a UI element (e.g., clicking a button on a GAP screen) invokes the method.
- the developer defines whether to pass the values of the UI elements as parameters to the invoked method, or use the values to set properties of the web service before invoking the method.
- the developer specifies how to use the return values of the invoked method, for example, whether to update selected UI elements of the GAPs with the values, or display the values in message dialogs.
- the developer creates core web services for GAPs and defines web service parameter relationships between web service parameters and UI elements of a GAP.
- the developer creates and deploys core web services based on web service definitions, user interface interaction specifications, and web service parameter relationships.
- the developer may define an action in response to certain return values of the invoked method.
- the developer may use the decommissioner to build an immutable web service wrapper to insert decommissioning replacement logic that can be used to incrementally replace the legacy application logic.
- the decommissioner uses proxies to command and control GAPs and UI elements of GAPs to fulfil web service requests.
- a proxy receives a response from a GAP, the proxy extracts data from the GAP, and forwards the extracted data to one or more web services.
- Proxies use hooks to perform various actions on UI elements and GAPs programmatically through accessibility API calls. Accessibility technologies allow hooks to register for different events produced by UI elements and GAPs monitored by accessibility APIs.
- One or more GAPs may run with a proxy and corresponding hooks on a single designated GAP host computer along with a accessibility API.
- the decommissioner uses a dispatcher as a central point for coordinating proxies in a distributed environment.
- a proxy registers with the dispatcher under a unique name, collects GAP identification data and information about GAPs running with the proxy on a GAP host computer, and sends the collected GAP identification and information about GAPs to the dispatcher.
- the dispatcher uses the information collected from the proxies to route web service requests to proxies.
- the dispatcher routes web service request components of web services to GAP host computers, where corresponding proxies ultimately command and control GAPs and UI elements.
- the dispatcher acts as an intermediary that enables web services and GAPs to run on separate computers while presenting a common view to client programs. Because organizations may move web services and GAPs around the enterprise computing environment for various reasons (e.g., to improve business processes efficiencies or the performance of applications) the dispatcher provides web services and GAPs migration and location transparency to client programs.
- a processor may be implemented as a microprocessor, microcontroller, application specific integrated circuit (ASIC), discrete logic, or a combination of other type of circuits or logic.
- memories may be DRAM, SRAM, Flash or any other type of memory.
- Logic that implements the processing and programs described below may be stored (e.g., as computer executable instructions) on a computer readable medium such as an optical or magnetic disk or other memory. Alternatively or additionally, the logic may be realized in an electromagnetic or optical signal that may be transmitted between entities.
- Flags, data, databases, tables, and other data structures may be separately stored and managed, may be incorporated into a single memory or database, may be distributed, or may be logically and physically organized in many different ways.
- Programs may be parts of a single program, separate programs, or distributed across several memories and processors, and may be implemented or distributed as shared libraries, application programming interfaces (APIs), or in other forms.
- the programs, or any portion of the programs may instead be implemented in hardware.
- FIG. 1 illustrates an example of an Integrated System 100 that includes composed GUI-Based Applications and web services.
- the Integrated System 100 include a dispatcher 102 , a client program 104 , composite web services 106 , 108 , and 110 , GAP host computers 112 , 114 , and 116 , and web services 120 , 122 , 124 , and 126 .
- the Integrated System 100 components may communicate through a Network 130 such as the Internet.
- the Integrated System 100 uses the dispatcher 102 to coordinate communication between GAPs, web services, and composite web services.
- a client program 104 invokes a web service method managed by a web service 120 - 126 or composite web service 106 - 110
- the designated web service sends one or more requests to the dispatcher 102 , which routes the requests to the appropriate GAP host computers 112 , 114 , 116 and 118 .
- the GAPs running on their respective GAP host computers 112 , 114 , 116 , and 118 complete the requests and return responses to the dispatcher 102 .
- the dispatcher 102 forwards the responses to the appropriate web services (e.g., web services 120 - 126 or composite web services 106 - 110 ), which send responses to the client program 104 .
- each business process operation that the client program 104 invoked required agents to interact with the one or more GAPs separately, because of a lack of interoperability between the one or more GAPs.
- FIG. 2 shows a dispatcher 102 coordinating communication between GAPs and web services.
- the dispatcher 102 acts as an intermediary that enables web services and GAPs to run on separate computers while presenting a common view to client programs 104 .
- the dispatcher 102 provides web services and GAPs migration and location transparency to client programs 104 .
- the composite web service 202 sends one or more web service request components to dispatchers, such as the dispatcher 102 .
- a composite web service may include multiple request components (e.g., methods that need to be invoked to implement full control over multiple GAPs).
- the dispatcher 102 determines to which proxies (e.g., proxy- 1 206 , proxy- 2 220 and proxy- 3 230 ) to route the web service request components, based on information collected from the proxies.
- a proxy registers with the dispatcher 102 under a unique name, collects GAP identification data and information about the GAPs running on the GAP host computer (e.g., GAP- 1 host computer 112 , GAP- 2 host computer 114 , and GAP- 3 host computer 116 ) with the proxy, and sends the GAP identification data and information to the dispatcher 102 .
- proxy- 1 206 when proxy- 1 206 receives a web service request component the proxy- 1 206 interacts with one or more UI elements of the GAP- 1 with UI elements 208 through the hook- 1 214 , in response to the web service request component.
- the accessibility layer- 1 212 may support hook- 1 214 to perform various actions on GAP- 1 with UI elements 208 programmatically.
- Proxy- 2 220 in communication with GAP- 2 host computer 114 for GAP- 2 with UI elements 222 and hook- 2 228 may register the GAP- 2 with UI elements 222 with the dispatcher 102 , resulting in a second composite web service request component of the composite web service to route through the dispatcher 102 to the GAP- 2 host computer 114 .
- proxy- 2 220 when proxy- 2 220 receives the second web service request component the proxy- 2 220 interacts with one or more of the UI elements of the GAP- 2 with UI elements 222 through the hook- 2 228 , in response to the second web service request component.
- the accessibility layer- 2 226 may support hook- 2 228 to perform various actions on GAP- 2 with UI elements 222 programmatically.
- the dispatcher 102 may use a load balancer 240 to route web service requests to multiple GAP host computers.
- multiple instances of a GAP (e.g., Acme Expense GAP (AEG)) run concurrently on separate GAP host computers (e.g., GAP- 1 host computer 112 , GAP- 2 host computer 114 , and GAP- 3 host computer 116 ).
- the dispatcher 102 assigns each instance of AEG a unique GAP identifier, enabling the dispatcher 102 to coordinate parallel execution of multiple instances of AEG, so that when the composite web service 202 sends a composite web service request component to the dispatcher 102 in response to a request from a client program 104 the dispatcher 102 routes the composite web service request component to the correct instance of AEG.
- AEG Acme Expense GAP
- FIG. 3 illustrates a GAP host computer 302 concurrently running two GAPs.
- a single GAP host computer may run multiple GAPs, and include, in addition to a communications interface 304 to communicate with various components of an Integrated System 100 , a processor 306 , memory 308 , and external storage 310 .
- the memory 308 may include instances of different GAPs running (e.g., GAP- 1 312 , and GAP- 2 314 ), GAP- 1 UI elements and GAP- 2 UI elements corresponding to GAP- 1 312 and GAP- 2 314 , respectively, a hook- 1 320 and hook- 2 321 , accessibility layer 322 , a structural representation of GUIs of a GAP and UI element of the GAP 323 , and a proxy 324 .
- GAPs running
- GAP- 1 UI elements and GAP- 2 UI elements corresponding to GAP- 1 312 and GAP- 2 314 , respectively, a hook- 1 320 and hook- 2 321 , accessibility layer 322 , a structural representation of GUIs of a GAP and UI element of the GAP 323 , and a proxy 324 .
- GAP- 1 312 may represent an instance of a third-party closed and monolithic Windows GAP (e.g., an Acme Expense GAP (AEG)) that a company uses internally to keep track of purchases
- GAP- 2 314 may represent a closed and monolithic GAP named My Invoices and Estimates (MIE) that the company uses to create invoices for ordered goods.
- AEG Acme Expense GAP
- MIE My Invoices and Estimates
- the accessibility layer 322 supports hook- 1 320 and hook- 2 to perform various actions programmatically on GAP- 1 312 , GAP- 1 UI elements 316 , and GAP- 2 314 and GAP- 2 UI elements 318 , respectively.
- the accessibility layer 322 may also assist with capturing a structural representation of GUIs of a GAP and UI elements of the GAP 323 , as a result of interactions with the GAP.
- the structural representation of GUIs of a GAP and UI elements of the GAP 323 may provide the proxy 324 , hook- 1 320 and hook- 2 321 comprehensive information to locate, control, and manipulate GAP- 1 312 , GAP- 2 314 , GAP- 1 UI elements 316 , and GAP- 2 UI elements 318 .
- the structural representation of GUIs of a GAP and UI elements of the GAP 323 may be implemented as objects (e.g., an XML file) that capture depth-first traversals of the GUI, breadth first traversal of the GUI, or that otherwise stores the interface elements and screen sequences of the GUI.
- the proxy 324 may analyze the structural representation of GUIs of a GAP and UI elements of the GAP 323 to locate a GAP UI element in the GAP GUI.
- the proxy 324 may include registration logic 326 , an accessibility layer command coordinator 328 , and a GAPs identification table 330 .
- the proxy 324 may use the registration logic 326 to register GAP- 1 312 and GAP- 2 314 with the dispatcher.
- the accessibility layer command coordinator 328 may control GAP- 1 312 and GAP- 1 UI elements 316 through hook- 1 320 , in response to a web service request component.
- the accessibility layer command coordinator 328 may receive web service request components, extract the graphical user interface element identifiers, a structural representation of a GAP, and the requested action on the identified graphical user interface element.
- the accessibility layer command coordinator 328 may then traverse the structural representation 323 to determine where the identified graphical user interface element resides in the GAP user interface, and make calls to the hook to navigate the GAP to the interface that includes the identified graphical user interface element. Once at the appropriate interface, the accessibility layer command coordinator 328 may then exercise the graphical user interface element through the hook to perform the requested action.
- proxy- 1 206 uses an accessibility layer command coordinator running on and dedicated to GAP- 1 host computer 112 to control GAP- 1 with UI elements 208 through hook- 1 214 , in response to a web service request component.
- the proxy 324 may collect GAP identification data and information about GAPs (e.g., GAP- 1 312 , and GAP- 2 314 ) hosted with proxy 324 on the multiple GAPs host computer 302 , and stores the collected GAP identification data and information about the GAPs in the GAPs identification table 330 .
- the proxy 324 may store GAP Identifiers for multiple locally hosted GAPs (e.g., GAP- 1 312 , and GAP- 2 314 ) in the GAP identification table 330 .
- the proxy 324 may periodically send the collected GAP identification data and information about the GAPs to the dispatcher 102 .
- the multiple GAPs host computer 302 may use the external storage 310 to store the GAP- 1 exe 332 and GAP- 2 exe 334 programs.
- the dispatcher 102 receives a web service request message from the web service 204 that includes a GAP UI element Identifier and an action request identifier for a specific GAP UI element (e.g., GAP- 1 UI elements 316 ).
- the GAP UI element may correspond to a GAP (e.g., GAP- 1 312 ) executing in memory 308 .
- the dispatcher 102 may send the web service request message to proxy 324 , which extracts the GAP UI element identifier and action request identifier from the web service request message.
- the proxy 324 may perform an action against the GAP- 1 UI elements 316 specified in the action request identifier through hook- 1 320 .
- the action request identifier may include a GUI element data setting action, or a GUI element data retrieval action that the proxy performs through hook- 1 320 against the GAP- 1 UI elements 316 specified in the action request identifier.
- FIG. 4 shows a dispatcher 102 and dispatcher components.
- the dispatcher 102 may include a communications interface 402 , a processor 404 , and memory 406 .
- the dispatcher 102 memory 406 may include a proxy- 1 GAPs identification table 410 , a proxy- 2 GAPs identification table 412 , Registration logic 414 , Routing logic 424 , web services registration requests 428 , GAP registration requests 430 , and a GAPs request queue 432 .
- the dispatcher 102 may be used as a central point for coordinating proxies (e.g., proxy- 1 206 and proxy- 2 220 ) in a distributed environment.
- a proxy may register with the dispatcher 102 under a unique name, and periodically collect GAP identification data and information about GAPs running with the proxy on the GAP Host computers (e.g., GAP- 1 host computer 112 , and GAP- 2 host computer 114 ), and send the collected GAP identification data and information about GAPs to the dispatcher 102 .
- the dispatcher 102 may store the collected information from each proxy in separate proxy GAPs identification tables (e.g., proxy- 1 GAPs identification table 410 , and proxy- 2 GAPs identification table 412 ).
- the proxy GAPs identification tables may contain GAP identification data and information for multiple GAPs.
- the proxy 324 may periodically send the dispatcher 102 the GAPs identification table 330 , which may include GAP identification data and information for GAP- 1 312 and GAP- 2 314 .
- the web service 204 or composite web service 202 to which the method belongs sends a web services registration request 428 to the dispatcher 102 .
- the dispatcher 102 may identify the GAPs required to fulfil a method of a web service 204 , or a composite web service 202 .
- the dispatcher 102 may use registration logic 414 to receive GAP registration requests 430 from GAPs and web services registration requests 428 from web services 204 , and composite web services 202 .
- the dispatcher 102 may also use the registration logic 414 to control GAPs to web services assignments logic 418 to analyze the proxy GAPs identification tables to assign GAPs and UI elements to methods of web-services 204 , and methods of composite web services 202 .
- the registration logic 414 instantiates the proxy GAPs identification table (e.g., proxy- 1 GAPs identification table 410 , and proxy- 2 GAPs identification table 412 ) in response to a GAP registration request 430 from a GAP.
- the dispatcher 102 may include a GAPs request queue 432 to store web service requests and web service request components when a web service requests an unavailable GAP, which will be explained in further detail below.
- FIG. 5 shows a composition integration design tool system 500 .
- the composition integration design tool system 500 may include a communications interface 502 , a processor 504 , and memory 506 .
- the composition integration design tool system 500 memory 506 may include interaction logic 508 , accessibility layer 510 , hook logic 512 , proxy logic 513 , a structural representation of GUIs of a GAP and UI elements of the GAP 514 , registration logic 516 , design tool user interface logic 518 , definition logic 520 , specification logic 522 , and relation logic 524 .
- the interaction logic 508 captures one or more GAP- 1 UI elements 526 , and one or more GAP- 2 UI elements 528 using the accessibility layer 510 .
- the Interaction logic 508 may capture a structural representation of GUIs of a GAP and UI elements of the GAP 514 through the accessibility layer 510 using the hook logic 512 to communicate with the GAPs (e.g., GAP- 1 530 , GAP- 2 532 , and corresponding GAP- 1 UI elements 526 and GAP- 2 UI elements 528 ).
- Proxy logic 513 may control the GAPs through the hook logic 512 , and the proxy logic 513 may use the registration logic 516 to send GAP registration requests 430 to the dispatcher 102 .
- the structural representation of GUIs of a GAP and UI elements of the GAP 514 may include a GAP UI element label, a UI element Identifier, and location information in the GAP GUI for the GAP UI elements (e.g., GAP- 1 UI elements 526 and GAP- 2 UI elements 528 ), and may also include a GAP GUI screen sequence representation for each GAP GUI screen sequence.
- FIG. 6 shows one example implementation of a design tool user interface 518 .
- the design tool user interface logic 518 may generate a design tool user interface 534 that includes an input parameter area 602 and a screen sequence area 620 .
- the design tool user interface logic 518 provides additional, fewer, or different interface elements.
- the design tool user interface logic 518 may include a point-and-click interface, drag-and-drop interface or both a point-and-click interface, drag-and-drop interface between GAP UI elements (e.g., GAP- 1 UI elements 526 and GAP- 2 UI elements 528 ) and the input parameter area 602 , and determine operator selections (i.e., UI interactions) of GAP UI elements, as well as web service parameters 604 (e.g., WS parameter- 1 608 , WS parameter- 2 610 , and WS parameter- 3 612 ).
- GAP UI elements e.g., GAP- 1 UI elements 526 and GAP- 2 UI elements 528
- web service parameters 604 e.g., WS parameter- 1 608 , WS parameter- 2 610 , and WS parameter- 3 612 .
- the design tool user interface 534 may use the drag-and-drop interface to move GAP UI elements (e.g., GAP- 1 UI elements 526 and GAP- 2 UI elements 528 ) and web service parameters 604 into the input parameter area 602 , and the GAP GUI screen sequences into the screen sequence area 620 to establish a user interface interaction specification 622 that creates a UI element correspondence 624 between at least one of the GAP- 1 UI elements 526 (e.g., GAP- 1 UI element- 1 626 , GAP- 1 UI element- 2 628 , and GAP- 1 UI element- 3 630 ) and at least one of the GAP- 2 UI elements 528 (e.g., GAP- 2 UI element- 1 634 , GAP- 2 UI element- 2 636 , and GAP- 2 UI element- 3 638 ).
- GAP UI elements e.g., GAP- 1 UI elements 526 and GAP- 2 UI elements 5
- FIG. 6 shows an arrow 642 drawn (e.g., by an operator or from input from an automated analysis tool) from GAP- 2 UI element- 1 634 to GAP- 1 UI element- 2 628 , which establishes a UI element correspondence 624 between the two GAP UI elements.
- the design tool user interface 534 may include a method signature 650 that defines the name of a web service method, the parameters, and the method type.
- the method signature 650 may also specify error or exception handling procedures and the parameter types of each method parameter.
- FIG. 7 shows a design tool user interface and composite web service.
- the design tool user interface 534 may use the definition logic 520 to establish a composite web service definition 702 .
- the definition logic 520 may establish the composite web service definition 702 for a composite web service 202 , including one or more web service parameters 604 (e.g., WS parameter- 1 608 , WS parameter- 2 610 , and WS parameter- 3 612 ), a web service name, or other web service parameters.
- the design tool user interface 534 may generate the composite web service 202 , and publish the composite web service 202 .
- the design tool user interface 534 may use the definition logic 520 to establish a web service definition 704 for a web service 706 , based on the structural representation of GUIs of a GAP and UI elements of the GAP 514 using the accessibility layer 510 .
- the design tool user interface 534 may use the specification logic 522 to establish the user interface interaction specifications 622 .
- the specification logic 522 may create the UI element correspondence 624 between at least one of the GAP- 1 UI elements 526 (e.g., GAP- 1 UI element- 1 626 , GAP- 1 UI element- 2 628 , and GAP- 1 UI element- 3 630 ) and at least one of the GAP- 2 UI elements 528 (e.g., GAP- 2 UI element- 1 634 , GAP- 2 UI element- 2 636 , and GAP- 2 UI element- 3 638 ).
- the GAP- 1 UI elements 526 e.g., GAP- 1 UI element- 1 626 , GAP- 1 UI element- 2 628 , and GAP- 1 UI element- 3 630
- GAP- 2 UI elements 528 e.g., GAP- 2 UI element- 1 634 , GAP- 2 UI element- 2 636 , and GAP- 2 UI element- 3 638 .
- the user interface interaction specification 622 may create a UI element correspondence 624 between the GAP- 2 UI element- 1 634 and the GAP- 1 UI element- 2 628 that defines an exchange of an invoice amount from the GAP- 2 UI element- 1 634 (e.g., an invoice field amount in the MIE GAP) to an expense amount in the GAP- 1 UI element- 2 628 (e.g., an expense field amount in the AEG).
- an invoice amount from the GAP- 2 UI element- 1 634 e.g., an invoice field amount in the MIE GAP
- an expense amount in the GAP- 1 UI element- 2 628 e.g., an expense field amount in the AEG
- the specification logic 522 may establish the user interface interaction specification 622 from multiple GAP- 1 UI elements 526 (e.g., GAP- 1 UI element- 1 626 , GAP- 1 UI element- 2 628 , and GAP- 1 UI element- 3 630 ), to multiple GAP- 2 UI elements 528 (e.g., GAP- 2 UI element- 1 634 , GAP- 2 UI element- 2 636 , and GAP- 2 UI element- 3 638 ).
- GAP- 1 UI elements 526 e.g., GAP- 1 UI element- 1 626 , GAP- 1 UI element- 2 628 , and GAP- 1 UI element- 3 630 .
- FIG. 8 shows a design tool user interface and web service parameter relationship.
- the relation logic 524 may establish a web service parameter relationship 802 between at least one of the web service parameters 604 (e.g., WS parameter- 1 608 , WS parameter- 2 610 , and WS parameter- 3 612 ), and at least one of the GAP- 2 UI elements 528 (e.g., GAP- 2 UI element- 1 556 , GAP- 2 UI element- 2 558 , and GAP- 2 UI element- 3 560 ).
- the web service parameters 604 e.g., WS parameter- 1 608 , WS parameter- 2 610 , and WS parameter- 3 612
- GAP- 2 UI elements 528 e.g., GAP- 2 UI element- 1 556 , GAP- 2 UI element- 2 558 , and GAP- 2 UI element- 3 560 .
- FIG. 8 shows arrows 804 drawn (e.g., by an operator or from input from an automated analysis tool) from WS parameter- 3 612 to GAP- 2 UI element- 3 638 , that establish a web service parameter relationship 802 between a web service parameter and GAP UI element.
- the web service parameter relationship 802 may specify each of the GAP UI element labels of the GAP UI elements used.
- the relation logic 514 may establish a web service parameter relationship 802 between at least one of the web service parameters 604 (e.g., WS parameter- 1 608 , WS parameter- 2 610 , and WS parameter- 3 612 ), and at least one of the GAP- 1 UI elements 526 (e.g., GAP- 1 UI element- 1 626 , GAP- 1 UI element- 2 628 , and GAP- 1 UI element- 3 630 ) or at least one of the GAP- 2 UI elements 528 (e.g., GAP- 2 UI element- 1 634 , GAP- 2 UI element- 2 636 , and GAP- 2 UI element- 3 638 ).
- the web service parameters 604 e.g., WS parameter- 1 608 , WS parameter- 2 610 , and WS parameter- 3 612
- the GAP- 1 UI elements 526 e.g., GAP- 1 UI element- 1 626 , G
- the composite web service definition 702 for a composite web service 202 may include multiple web service parameters defined by a combination of GAP- 1 UI elements 526 , GAP- 2 UI elements 528 , and web service parameters 604 (e.g., WS parameter- 1 608 , WS parameter- 2 610 , and WS parameter- 3 612 ) of a web service 804 .
- the composition integration design tool system 500 may generate a web service 706 based on the web service definition 704 and the web service parameter relationship 802 , and publish the web service 706 .
- FIG. 9 shows the acts that a proxy, including the registration logic 326 , may take to register GAPs with a dispatcher.
- Each GAP host computer runs a dedicated proxy that commands and controls the GAPs and UI elements hosted on the GAP host computer through dedicated hooks also hosted on the GAP host computer. The hooks perform actions on the GAPs and UI elements through the accessibility layer.
- the GAP host computer starts (Act 902 ) and the operating system completes initialization (Act 904 )
- the operating system or GAP host computer makes the accessibility layer available (Act 906 ).
- the proxy starts (Act 908 ), and the proxy initiates the accessibility API command coordinator (Act 910 ).
- GAPs start or stop execution on the host computer (Act 912 ), during the operation of the host computer.
- the proxy injects (e.g., load) a hook into a GAP after the GAP starts (Act 913 ).
- the proxy directs the hook to monitor a GAP and GAP UI elements (Act 914 ).
- the hook forwards monitored GAP and UI element data and information to the proxy, which updates the GAPs Table (Act 916 ). If another GAP starts or stops execution (Act 918 ) the proxy updates the GAPs Table (Act 916 ).
- the proxy may periodically forward the GAPs Table to the dispatcher (Act 920 ).
- FIG. 10 shows the acts that a dispatcher may take to register a web service, and coordinate communication between web services and proxies.
- a client program invokes a method of a web service or a web service request component (Act 1002 )
- the requesting web service or composite web service e.g., web service 204 or composite web service 202
- the dispatcher 102 may determine from the web services registration request 428 the identity of the GAPs required to fulfil the web service or composite web service method (Act 1006 ).
- the dispatcher may analyze the GAP Tables received from connected proxies (Act 1008 ), and sends web service requests or web service request components to the appropriate proxies to reserve the required GAPs (Act 1010 ).
- Web service requests and web service request components may include GAP identification data and information about the required GAP, the GAP UI elements, requested actions to perform on the GAP and UI elements, and the information to return to the requesting web service or composite web service.
- the dispatcher and proxy corresponding to a required GAP may communicate to determine the availability of a GAP (Act 1012 ).
- the dispatcher 102 may place the web service request or web service request component on the dispatchers GAP request queue and notifies the requesting web service or composite web service (e.g., web service 204 or composite web service 202 ) (Act 1016 ).
- the requesting web service or composite web service may determine whether to wait for an unavailable GAP to change status to available (Act 1018 ).
- the dispatcher may forward the web service request or web service request component to the proxies corresponding to the required GAPs (Act 1020 ).
- the proxies corresponding to the required GAPs may command and control the GAPs and UI elements according to the web service request or web service request component, and return responses to the dispatcher 102 (Act 1022 ).
- the dispatcher may forward responses from proxies to the requesting web service or composite web service, or other web services or composite web services if required (Act 1024 ).
- FIG. 11 shows the acts that a hook may take to command and control a UI element.
- the hook monitors a GAP and UI elements for event and state changes (Act 1102 ).
- a GAP or UI element event or state changes the hook intercepts the event or state change (Act 1104 ).
- the hook forwards GAP and UI element event and state change information to the controlling proxy (Act 1106 ).
- the proxy parses GAP and UI element data, and prepares to send information in a request or response to the appropriate destination (Act 1108 ).
- the proxy identifies the destination of the request or response as Local or Remote (Act 1110 ).
- the proxy forwards the request or response to the hook, and the hook manipulates the GAP or UI elements through accessibility layer API calls (Act 1112 ).
- the proxy forwards the request or response to the dispatcher (Act 1114 ), and the proxy determines whether to parse additional GAP and UI elements data from the hook (Act 1116 ).
- FIG. 12 shows the acts the composition integration design tool system may take to capture the structural representation of GUIs of a GAP and UI elements of the GAP.
- the operator assigns a name to the composite web service (Act 1204 ), and the operator assigns a name to the exported or published method of the composite web service (Act 1206 ).
- the operator registers each GAP, UI element and web service parameters required by the composite web service (Act 1208 ).
- the operator interacts with the registered GAPs, UI elements and web service parameters through the design tool's GUI Interface (Act 1210 ).
- the design tool captures the structural representation of GUIs of a GAP and UI elements of the GAP through the accessibility layer as a result of the operator interactions with the registered GAPs and UI elements (Act 1212 ).
- the design tool may translate the GAP and UI elements actions resulting from the operator interactions into executable instructions for the composite web service (Act 1214 ).
- the design tool through the accessibility layer, records the structures of the GAP screens and operator actions on the GAPs to intercept user-level events (e.g., operator interactions with the GAP and UI elements) (Act 1216 ).
- the design tool stores the structural representation of GUIs of a GAP and UI elements of the GAP for use operationally after generating and publishing the composite web service (Act 1218 ).
- FIG. 13 shows a web service creation tool 1300 .
- the web service creation tool 1300 may include a dispatcher 1302 , a client program 1304 , a web service 1306 , a GAP 1 host computer 1308 , and external storage 1310 .
- the web service creation tool 1300 components may communicate through the networks 130 (e.g., the Internet).
- FIG. 13 also shows the dispatcher 1302 coordinating communication between a single web service 1306 and proxy- 1 1314 .
- the dispatcher 1302 acts as an intermediary that enables web services and GAPs to run on separate computers while presenting a common view to client programs 1304 .
- the web service 1306 when a client program 1304 invokes a web service method corresponding to web service 1306 , the web service 1306 sends a web service request to the dispatcher 1302 .
- the dispatcher 1302 may route the web service request to proxy- 1 1314 based on GAP identification data and GAP information collected from the proxy- 1 1314 .
- the GAP- 1 host computer 1308 runs an operating system 1316 , provides an accessibility layer 1318 , and hosts the proxy- 1 1314 , the hook- 1 1320 and GAP- 1 with GUI elements 1322 .
- the operating system 1316 may provide the accessibility layer 1318 with an accessibility API.
- the proxy- 1 1314 registers with the dispatcher 1302 under a unique name, collects GAP identification data and information about the GAP- 1 with GUI elements 1322 running with the proxy- 1 1314 on the GAP- 1 host computer 1308 , and sends the GAP identification data and information to the dispatcher 102 .
- the proxy- 1 1322 when proxy- 1 1322 receives a web service request, the proxy- 1 1322 interacts with one or more UI elements of the GAP- 1 with UI elements 1322 through the hook- 1 1320 , in response to the web service request.
- the accessibility layer 1318 may support hook- 1 1320 to monitor and control execution of GAP- 1 with UI elements 1322 , and perform various actions on GAP- 1 with UI elements 1322 programmatically.
- FIG. 14 shows a structural representation of a GUI of a GAP and UI elements of the GAP.
- the structural representation of a GUI of a GAP and UI elements of the GAP 1402 may include a GAP- 1 UI element- 1 label 1404 , a GAP- 1 UI element- 1 Identifier 1406 , location information in the GAP GUI for the GAP UI elements (e.g., GAP- 1 UI element- 1 location 1408 , GAP- 1 UI element- 2 location 1410 , and GAP- 1 UI element- 3 location 1412 ), and a GAP GUI screen sequence Representation 1416 for each GAP GUI Screen sequence.
- the structural representation of GUIs of a GAP and UI elements of the GAP 1402 may represent multiple GAP- 1 GUI Screens (e.g., GAP- 1 GUI screen sequence- 1 1416 , GAP- 1 GUI screen sequence- 2 1418 , and GAP- 1 GUI screen sequence- 3 1420 ), and encode location information for the GAP- 1 with UI elements 1322 (e.g., GAP- 1 GUI element- 1 encoded location information 1432 ).
- GAP- 1 GUI Screens e.g., GAP- 1 GUI screen sequence- 1 1416 , GAP- 1 GUI screen sequence- 2 1418 , and GAP- 1 GUI screen sequence- 3 1420
- encode location information for the GAP- 1 with UI elements 1322 e.g., GAP- 1 GUI element- 1 encoded location information 1432 .
- FIG. 15 shows a design tool user interface for a web service creation tool.
- the design tool user interface 1502 may include an input parameter area 1504 and a screen sequence area 1506 .
- the design tool user interface 1502 may include a drag-and-drop interface used to move GAP- 1 UI elements 1508 and GAP GUI Screens represented in the structural representation of GUIs of a GAP and UI elements of the GAP 1402 into the input parameter area 1504 and screen sequence area 1506 .
- the design tool user interface 1502 may consider the act of moving GAP- 1 UI elements 1508 and GAP GUI Screens represented in the structural representation of GUIs of a GAP and UI elements of the GAP 1402 into the input parameter area 1504 and screen sequence area 1506 as adding objects to or registering objects with the web service definition 1510 .
- the design tool user interface 1502 may highlight a GAP- 1 GUI element in the GAP- 1 GUI, add the GAP- 1 GUI element to the web service definition 1510 or move the GAP- 1 GUI element the input parameter area 1504 , in response to an operator's selection of a GAP- 1 UI element or a GAP GUI Screen represented in the structural representation of GUIs of a GAP and UI elements of the GAP 1402 .
- the web service creation tool 1300 may include a GAP GUI rendering 1511 of a GAP GUI screen sequence illustrating traversal through multiple GAP GUI Screens, and at least one of the web service parameters 1512 (e.g., WS parameter- 1 1514 , WS parameter- 2 1516 , and WS parameter- 3 1518 ) for the web service 1306 .
- the design tool user interface 1502 may create a web service parameter relationship 1520 between at least one of the web service parameters 1512 and at least one of the GAP- 1 UI elements 1508 , and generate the web service 1306 based on the web service definition 1510 and the web service parameter relationship 1520 . For example, FIG.
- the design tool user interface 1502 may create additional web service parameter relationships 1512 between the web service 1306 and additional GAP- 1 UI elements 1508 as a result of adding the additional GAP- 1 UI elements 1508 to the input parameter area 1504 .
- the design tool user interface 1502 may use the accessibility layer 1318 to support the hook- 1 1320 to monitor execution of GAP- 1 with UI elements 1322 , and GAP- 1 UI elements 1508 through multiple GAP GUI Screens, and capture the structural representation of GUIs of a GAP and UI elements of the GAP 1402 .
- FIG. 16 shows one example implementation of the web service creation tool.
- the web service creation tool 1300 may include Interaction logic 1602 , design tool user interface logic 1604 , definition logic 1606 , and relation logic 1608 .
- the Interaction logic 1602 may use the accessibility layer 1318 to capture the structural representation of GUIs of a GAP and UI elements of the GAP 1402 .
- the Interaction logic 1602 may monitor operator interactions with GAP- 1 through multiple GAP- 1 GUI Screens and GAP UI elements 1508 , and establish the structural representation of GUIs of a GAP and UI elements of the GAP 1402 across multiple GAP- 1 GUI Screens.
- the Interaction logic 1602 may also obtain location information and identification information for multiple GAP- 1 UI elements 1508 , and record the location information and the identification information in the structural representation of GUIs of a GAP and UI elements of the GAP 1402 .
- the design tool user interface logic 1604 may generate the design tool user interface 1502 that includes the input parameter area 1504 and a screen sequence area 1506 , monitor and determine an operator's selection of at least one of the GAP- 1 UI elements 1508 in the GAP GUI represented in the structural representation of GUIs of a GAP and UI elements of the GAP 1402 , and add the selected GAP- 1 UI elements 1508 to the input parameter area 1504 .
- the definition logic 1526 may establish the web service definition with at least one of the web service parameters 1512 (e.g., WS parameter- 1 1514 , WS parameter- 2 1516 , and WS parameter- 3 1518 ) that will interact with the at least one of the GAP- 1 UI elements 1508 .
- the relation logic 1608 may establish a web service parameter relationship 1520 between at least one of the web service parameters 1512 (e.g., WS parameter- 1 1514 , WS parameter- 2 1516 , and WS parameter- 3 1518 ) and at least one of the GAP- 1 UI elements 1508 .
- the relations logic 1608 may establish multiple web service parameter relationships 1520 with multiple web service parameters 1512 (e.g., WS parameter- 1 1514 , WS parameter- 2 1516 , and WS parameter- 3 1518 ) and each of the GAP- 1 UI elements 1508 .
- FIG. 17 shows the acts that a proxy and dispatcher may take in a web service creation tool.
- a client program invokes a method of a web service (Act 1702 )
- the requesting web service e.g., web service 204
- the dispatcher 102 may determine from the web service registration request 428 and analyze the GAP Table received from connected proxy the identity of the GAP required to fulfil the web service method, and send web service requests to the proxy to reserve the GAP (Act 1710 ).
- Web service requests may include GAP identification data and information about the required GAP, the GAP UI elements, requested actions to perform on the GAP and UI elements, and the information to return to the requesting web service.
- the dispatcher 102 and proxy corresponding to the required GAP may communicate to determine the availability of the GAP (Act 1712 ). For an unavailable GAP, the dispatcher 102 may place the web service request on the dispatchers GAP request queue and notifies the requesting web service or composite web service (e.g., web service 204 ) (Act 1716 ). The requesting web service may determine whether to wait for the unavailable GAP to change status to available (Act 1718 ). For an available GAP, the dispatcher may forward the web service request to the proxy (Act 1720 ).
- the proxy for the required GAP may command and control the GAP and UI elements according to the web service request, and return responses to the dispatcher 102 (Act 1722 ).
- the hook monitors the GAP and UI elements for event and state changes (Act 1724 ). When a GAP or UI element event or state changes the hook intercepts the event or state change, and forwards GAP and UI element event and state change information to the controlling proxy (Act 1726 ).
- the proxy parses GAP and UI element data, and prepares and sends information in a response to the dispatcher (Act 1728 ). The dispatcher forwards the response to the client program (Act 1730 ).
- FIG. 18 illustrates a decommissioning system 1800 .
- the decommissioning system 1800 may include a memory 1802 , a processor 1804 , and a communications interface 1806 .
- the memory 1802 of the decommissioning system 1800 may include a decommissioning framework 1808 , dispatcher logic 1810 , and proxy logic 513 .
- the memory 1802 may also include decommissioning evaluation logic 1814 , a decommissioning threshold 1816 , a degree of coverage 1818 , and a decommissioning request 1820 .
- the decommissioning framework 1808 includes web service wrapper- 1 1822 and web service wrapper- 2 1824 used to decommission a legacy application 1826 and to migrate functionality to new application (NA) logic- 1 1828 implemented in a new application 1830 .
- web service wrapper- 1 1822 and web service wrapper- 2 1824 used to decommission a legacy application 1826 and to migrate functionality to new application (NA) logic- 1 1828 implemented in a new application 1830 .
- the web service wrapper- 1 1822 and web service wrapper- 2 1824 include core web service (CWS) identifiers (ID)- 1 1832 and CWS ID- 2 1834 , respectively, corresponding to core web services (WS)- 1 1836 and core WS- 2 1838 .
- Core WS- 1 1836 and core WS- 2 1838 invoke GAP- 1 1840 , GAP- 2 1842 , and GAP- 3 1844 using legacy application invocation (LAI) logic- 1 1846 and LAI logic- 2 1848 .
- LAI legacy application invocation
- the web service wrapper- 1 1822 and web service wrapper- 2 1824 include LAI logic- 3 1850 and LAI logic- 4 1852 , respectively, and decommissioning replacement (DR) logic- 1 1854 and DR logic- 2 1856 , and exception handler- 1 1858 and exception handler- 2 1860 .
- DR decommissioning replacement
- the decommissioning framework 1808 uses the web service wrapper- 1 1822 to replace the core WS- 1 1836 so that the client program 104 directs service requests to the web service wrapper- 1 1822 and LAI logic- 3 1850 executes instead of LAI logic- 1 1846 .
- the DR logic- 1 1854 may be introduced into the web service wrapper- 1 1822 to replace portions and/or all of the LAI logic- 3 1850 so that the web service wrapper- 1 1822 invokes GAP- 1 1840 , a combination of the GAP- 1 1840 and the new application (NA) logic- 1 1828 , or the NA logic 1828 only.
- the combinations of DR logic and LAI logic implemented in the decommissioning framework 1808 will be presented in further detail below.
- the decommissioning logic 1812 identifies DR logic- 1 1854 and DR logic- 2 1856 for GAP- 1 1840 , GAP- 2 1842 , and GAP- 3 1844 that the decommissioning system 1800 uses to decommission the legacy application 1826 .
- the decommissioning logic 1812 builds web service wrapper- 1 1822 and web service wrapper- 2 1824 that include the CWS ID- 1 1832 and CWS ID- 2 1834 from core WS- 1 1836 and core WS- 2 1838 and inserts DR logic- 1 1854 and DR logic- 2 1856 into web service wrapper- 1 1822 and web service wrapper- 2 1824 , respectively, to establish the decommissioning framework 1800 for the legacy application 1826 .
- the decommissioning system 1800 may coordinate communication with the legacy application 1826 , new application 1830 , core WS- 1 1836 and core WS- 2 1838 , web service wrapper- 1 1822 and web service wrapper- 2 1824 , dispatcher logic 1812 , and proxy logic 1814 through the communications interface 1806 to process service requests 1862 from the client program 104 .
- the dispatcher logic 1812 and proxy logic 1814 coordinate communication between core WS- 1 1836 , core WS- 2 1838 , web service wrapper- 1 1822 , web service wrapper- 2 1824 , and legacy application 1826 .
- the dispatcher logic 1812 and proxy logic 1814 communicate with the dispatcher 102 and proxy 1864 , respectively, where the dispatcher 102 operates as a central point for coordinating proxies (e.g., proxy 1864 ) in a distributed environment.
- proxy 1864 registers with the dispatcher 102 , collects information about GAP- 1 1840 , GAP- 2 1842 , and GAP- 3 1844 running with the proxy 1864 , and sends the information to the dispatcher 102 .
- the dispatcher 102 uses the information from the proxy 1864 to route service requests from the client program 104 , core WS- 1 1836 and core WS- 2 1838 , and web service wrapper- 1 1822 and web service wrapper- 2 1824 to the proxy 1864 .
- the decommissioning logic 1812 builds the decommissioning framework 1808 with web service wrapper- 1 1822 and web service wrapper- 2 1824 using information received via communication with the dispatcher logic 1810 and proxy logic 513 .
- Web service wrapper- 1 1822 and web service wrapper- 2 1824 may use LAI logic- 3 1850 and LAI logic- 4 1852 to communicate with the dispatcher 102 and/or proxy 1864 .
- LAI logic- 1 1846 and LAI logic- 2 1848 , and LAI logic- 3 1850 and LAI logic- 4 1852 communicate with the dispatcher 102 and/or proxy 1864 through the dispatcher logic 1810 and proxy logic 513 , respectively.
- the decommissioning threshold 1816 represents an amount (e.g., a percent) of functionality coverage the developer desires the decommissioning framework 1808 to provide before the legacy application 1826 is decommissioned.
- the decommissioning evaluation logic 1814 evaluates the degree of coverage 1818 the decommissioning framework 1808 provides to determine whether the degree of coverage 1818 meets the decommissioning threshold 1816 .
- the developer may assign weights to features (e.g., legacy application logic) that the decommissioning evaluation logic 1814 uses to determine whether the degree of coverage 1818 meets the decommissioning threshold 1816 . For example, a developer may assign legacy application logic a weight from 1 to 10, where a weight of 10 indicates a critical feature and a weight of 1 indicates an optional and/or non-critical feature.
- the degree of coverage 1818 may meet the decommissioning threshold 1816 when a selected subset, or all of, the features assigned a specific weight or weights (e.g., a weight of 10 or weights above 7) have been implemented by the decommissioning framework 1808 .
- the degree of coverage 1818 may meet the decommissioning threshold 1816 when the sum of the weights for features implemented in the decommissioning framework 1808 exceeds the value set as the decommissioning threshold 1816 .
- the decommissioning may be qualitative and/or quantitative in nature.
- the decommissioning evaluation logic 1814 sends a decommissioning request 1820 when the degree of coverage 1818 meets the decommissioning threshold 1816 .
- the decommissioning request 1820 may take many forms, such as an email, voice, or instant message to a developer, manager, or other authority.
- the decommissioning request 1820 may also take the form of an interprocess request, signal, or other message to an automated process (e.g., an operating system) that deactivates, terminates, or otherwise decommissions the legacy application 1826 .
- the decommissioning system 1800 may automatically implement default DR logic- 1 1854 and DR logic- 2 1856 for functionality of the legacy application 1826 not already covered by the decommissioning framework 1808 .
- the decommissioning evaluation logic 1814 evaluates the degree of coverage 1818 to indicate that the decommissioning framework 1808 provides 66% of the legacy application logic (e.g., GAP- 1 1840 , and GAP- 2 1842 ) through web service wrapper- 1 1822 .
- the decommissioning evaluation logic 1814 sends the developer a decommissioning request 1820 because the degree of coverage 1818 meets the decommissioning threshold 1816 .
- the degree of coverage 1818 for example, represents coverage for GAP- 1 1840 and GAP- 2 1842 .
- the decommissioning evaluation logic 1814 automatically implements DR logic- 2 1856 for functionality of the legacy application 1826 not represented by the degree of coverage 1818 (e.g., GAP- 3 1844 ).
- the automatically implemented DR logic- 2 1856 may provide default processing, error handling, or other response to substitute for the remaining functionality not actually implemented by replacement logic.
- Table 1 shows a core web service with a method submitExpense that accepts input parameters used to submit expenses and includes legacy application invocation logic that interacts with a GAP used to insert expense information into a legacy application.
- the executor shown in Table 1 may be configured to represent the legacy application invocation logic based on the values given the host and port variables indicating the legacy application logic to invoke.
- Table 2 shows a web service wrapper that includes decommissioning replacement logic.
- a web service wrapper may combine the Table 1 and Table 2 logic to implement a web service wrapper that includes LAI logic and DR logic. Accordingly, a single web service wrapper may replace any one or more core web services or any amount of legacy functionality. There need not be a one-to-one correspondence between web service wrappers and core web services, and the wrappers may implement any distribution of logic.
- FIG. 19 shows core WS- 1 1836 and core WS- 2 1838 in communication with a legacy application 1826 .
- a user interacts through the client program 104 with core WS- 1 1836 and core WS- 2 1838 that invoke GAP- 1 1840 , GAP- 2 1842 and GAP- 3 1844 using LAI logic- 1 1846 and LAI logic- 2 1848 .
- the dispatcher 102 routes service requests 1906 to a proxy 1864 from core WS- 1 1836 and core WS- 2 1838 .
- FIG. 19 shows the processing environment prior to the decommissioning logic 1812 replacing any of the legacy application 1826 logic with decommissioning replacement logic and/or LAI logic implemented in a web service wrapper.
- the new application 1830 continues to function independently of the core web service and accordingly, without interaction with the legacy application 1826 logic and/or functionality.
- FIG. 20 shows a partially decommissioned legacy application 2000 .
- the decommissioning logic 1812 builds a partially transitioned (PT) web service wrapper- 1 2002 to establish the decommissioning framework 1808 and replaces core WS- 1 1836 that previously invoked GAP- 2 1842 and GAP- 3 1844 .
- Core WS- 2 1838 includes LAI logic- 2 1848 that invokes GAP- 1 1840 .
- the PT web service wrapper- 1 2002 may receive service requests 1862 from the client program 104 for GAP- 2 1842 functionality as service request- 1 2006 and service request- 2 2008 .
- the PT web service wrapper- 1 2002 may use LAI logic- 3 1850 to invoke GAP- 3 1844 functionality and DR logic- 1 1854 to invoke the NA logic 1828 in the new application 1830 .
- the PT web service wrapper- 1 2002 and core WS- 2 1838 route service requests 2004 and 2010 , respectively, to dispatcher 102 which routes service requests as appropriate to proxy 1864 .
- the decommissioning system 1800 shown in FIG. 20 , transparently provides the client program 104 a combination of functionality from the partially decommissioned legacy application 2000 and NA logic 1828 .
- the decommissioning logic 1812 records the implementation of the functionality of GAP- 2 1842 and GAP- 3 1844 in the decommissioning framework 1808 .
- the decommissioning evaluation logic 1814 determines that the degree of coverage 1818 includes GAP- 2 1842 and GAP- 3 1844 , and equals 66%.
- FIG. 21 shows a fully decommissioned legacy application 2100 .
- the decommissioning logic 1812 builds a fully transitioned (FT) web service wrapper- 1 2102 and FT web service wrapper- 2 2104 to establish the decommissioning framework 1808 .
- the decommissioning framework 1808 replaces the legacy application logic GAP- 1 1840 , GAP- 2 1842 , and GAP- 1 1843 .
- FT web service wrapper- 1 2102 and FT web service wrapper- 2 2104 receive service requests 1862 from the client program 104 for GAP- 1 1840 , GAP- 2 1842 , and GAP- 1 1843 functionality as service request- 1 2006 and service request- 2 2008 .
- FT web service wrapper- 1 2102 and FT web service wrapper- 2 2104 use DR logic- 1 1854 and DR logic- 2 1856 to invoke the NA logic 1828 in the new application 1830 .
- FT web service wrapper- 1 2102 and FT web service wrapper- 2 2104 direct service requests 2004 to the dispatcher 102 to route to the new application 1830 and NA logic 1828 .
- the dispatcher 102 does not route service requests 1906 to the fully decommissioned legacy application 2100 .
- the decommissioning system 1800 shown in FIG. 21 , transparently provides the client program 104 the functionality of the NA logic 1828 as a substitute for the fully decommissioned legacy application 2100 .
- the decommissioning evaluation logic 1814 determines the degree of coverage 1818 to meet the decommissioning threshold 1816 and sends the developer 2106 a decommissioning request 2108 to indicate that the fully decommissioned legacy application 2100 may be decommissioned.
- FIG. 22 shows an example of the processing that the decommissioning logic 1812 and decommissioning evaluation logic 1814 perform.
- the decommissioning logic 1812 identifies core WS- 1 1836 that includes CWS ID- 1 1832 that invokes legacy application logic implemented in GAP- 2 1842 and GAP- 3 1844 ( 2202 ).
- the decommissioning logic 1812 identifies DR logic- 1 1854 for GAP- 2 1842 and GAP- 3 1844 ( 2204 ) that the decommissioning system 1800 may use to decommission GAP- 2 1842 and GAP- 3 1844 .
- the decommissioning logic 1812 builds web service wrapper- 1 1822 that includes the CWS ID- 1 1832 from the core WS- 1 1836 ( 2206 ).
- the decommissioning logic 1812 inserts DR logic- 1 1854 into web service wrapper- 1 1822 , an exception handler- 1 1858 that replaces the legacy application logic GAP- 2 1842 and GAP- 3 1844 ( 2208 ) to establish a decommissioning framework 1808 for the legacy application 1826 .
- FIG. 22 further illustrates that the decommissioning evaluation logic 1814 may analyze the decommissioning framework 1808 to determine the degree of coverage 1818 provided by the decommissioning framework 1808 for the desired functionality originally provided by the legacy application 1826 .
- the decommissioning framework 1808 may provide 1 of 10 functions provided by the legacy application 1826 identified for decommissioning, resulting in a 10% degree of coverage 1818 .
- the decommissioning framework 1808 may provide 10 of 10 functionalities of the legacy application 1826 identified for decommissioning, resulting in a 100% degree of coverage 1818 .
- the decommissioning evaluation logic 1814 may compare the degree of coverage 1818 to the decommissioning threshold 1816 ( 2210 ) and issue a decommissioning request to deactivate the legacy application when the degree of coverage meets the decommissioning threshold ( 2212 ).
- the decommissioning threshold 1816 indicates the percent of functionality coverage the developer desires the decommissioning framework 1808 to provide before a legacy application 1826 may be decommissioned.
- the decommissioning threshold 1816 may be set to 50% so that when 5 of the 10 functionality identified for decommissioning have been implemented in the decommissioning framework 1808 the decommissioning evaluation logic 1814 may issue a decommissioning request 1820 .
- the decommissioning request 1820 may indicate a flag or other indicator that provides the developer information regarding outstanding tasks to complete and/or optional functionality that the developer may decide to decommission without migrating to the new application 1830 before fully decommissioning the legacy application 1826 .
- the decommissioning evaluation logic 1814 may further evaluate whether the decommissioning framework 1808 has decommissioned 100% of the legacy application 1826 functionality ( 2214 ) when the degree of coverage meets the decommissioning threshold and automatically implement additional decommissioning replacement logic for legacy application 1826 functionality not represented by the degree of coverage 1818 ( 2216 ). In other words, when the decommissioning framework 1808 meets the decommissioning threshold but decommissions less than 100% of the legacy application logic, the decommissioning evaluation logic 1814 may automatically implement additional decommissioning replacement logic so that the legacy application 1826 can be fully decommissioned.
- the automatically implemented decommissioning replacement logic may provide default processing, error handling, or other responses to substitute for the remaining legacy application 1826 functionality not covered by the degree of coverage 1818 .
- the decommissioning logic 1812 may identify additional decommissioning replacement logic to include in the decommissioning framework 1808 ( 2218 ) either inserting the decommissioning replacement logic into an existing web service wrapper or implementing a new web service wrapper.
- the decommissioning evaluation logic 1814 may evaluate the degree of coverage 1818 when the decommissioning framework 1808 includes additional decommissioning replacement logic until the desired functionality of the legacy application has been introduced into the decommissioning framework 1808 .
- the decommissioner provides developers a tool to decommission and migrate legacy application functionality in a phased approach.
- the decommissioner identifies core web services that invoke legacy applications and defines, creates, and deploys a web service wrapper that provides control over the operation of the legacy application.
- the functionality of the legacy application may be migrated to a new platform and architecture, and the legacy application decommissioned so that organizations may continue to realize a return on their significant investment in the creation of the legacy application.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
Description
- 1. Technical Field
- This disclosure concerns a system and method for decommissioning legacy applications by migrating functionality of legacy applications to new platforms and architectures. In particular, this disclosure relates to an efficient and non-invasive way to decommission legacy applications using a phased migration approach.
- 2. Background Information
- A strong demand exists for a system and method to decommission legacy applications in the course of migrating legacy applications to new platforms and architectures. When an organization initiates the decommissioning of a legacy application by migrating functionality to a new platform or architecture, organizations spend a great deal of time and money recreating the functionality of legacy applications from scratch. Often, system integrators desire to reuse existing assets of a legacy application targeted for decommissioning (e.g., legacy applications, processes, and software components) by simply providing a new interface or platform in which to interact with these assets. One such example includes migrating legacy applications to web services in a Service Oriented Architecture (SOA). Unfortunately, developers have identified only a limited number of ways to migrate legacy applications to new platforms and architectures without giving rise to lengthy project schedules and excessive budgets, often forcing companies to reengineer systems and applications from scratch.
- Developers often use legacy application migration approaches that do not allow for the phased migration of functionality. Migration approaches that impose a non-phased approach take longer to complete, increase the complexity of testing, and impose a burden on users to adapt to an entire suite of migrated functionality all at once. Even phased migration approaches can be plagued with inefficiencies. For example, one phased migration approach actually expose users to two disparate systems (e.g., the legacy application and the new migration) during the migration until developers complete the entire migration, and force users to interact with the two disparate systems through separate interfaces.
- Legacy applications often incorporate Graphical User Interface (GUI) APplications (GAPs) implemented in a closed and monolithic manner. System integrators find migrating existing GAPs a particularly difficult technical challenge, especially for closed and monolithic GAPs because GAPs do not interoperate (e.g., exchange information) with other systems. Because closed and monolithic GAPs do not interoperate with other systems, phased migrations present extremely technical challenges. Given the complexity of GAPs and the cost to efficiently and non-invasively make GAPs interoperable, presents one of the fundamental technical problems of migrating legacy applications.
- While newer technology such as web services can provide flexible functionality, organizations have invested heavily in legacy GAPs that developers consider difficult to add to an existing framework of web services and modify to enable interoperability, because of brittle legacy architectures, poor documentation, significant programming effort, and subsequently, the large cost of such projects. Great difficulties and enormous expenses associated with migrating legacy applications into integrated (interoperable) applications exist. Beyond migrating legacy applications into integrated applications components, system integrators and applications programmers must define protocols and implement functionality required to enable information exchanges between the components of integrated applications, which may include GAPs and web services.
- Organizations tend to use legacy GAPs as long as possible in business operations, primarily to realize the return on investment for the legacy GAPs. However, system integrators consider the vast majority of GAPs encountered as closed and monolithic and prefer to use legacy GAPs as long as possible to avoid the burden of re-writing the functionality from scratch because of the difficulty of enabling GAPs to interoperate. Most GAPs do not expose programming interfaces or data in known formats. Thus, while system integrators desire to incrementally migrate GAPs components into integrated applications, often the original implementation of a GAP makes migration without re-writing logic impossible.
- Further exacerbating the problem is that organizations often do not have access to the source code of third-party GAPs, which prevents organizations from migrating third-party GAPs to new platforms and architectures. In such instances, developers must locate old and often inaccurate requirements documents, observe the third-party GAPs during user sessions and write functionality from scratch. The inability to review legacy source code forces developers to employ extensive testing, but does not ensure that all the developer has captured all the third-party GAPs functionality correctly.
- The extraordinary technical challenges associated with decommissioning a legacy application and migrating legacy applications to new platforms and architectures include implementing controlled phased migrations that allow organizations to introduce migrated functionality in manageable portions over time. The technical challenges also include decommissioning and migrating third-party GAPs without the ability to review the legacy source code of the third-party GAPs.
- A need has long existed for a system and method that migrates legacy applications to new platforms and architectures in a phased migration approach efficiently and non-invasively.
- Migrating legacy GAPs to new platforms and architectures allow organizations to improve their business processes and extend the usability of legacy GAP functionality. The legacy application decommissioning framework (Decommissioner) provides developers a way to implement phased migrations of legacy applications to new platforms and architectures. The decommissioner allows organizations to control the migration of legacy applications at a granular level by providing a web service wrapper for GAPs (e.g., functionality of an interoperable legacy application) that allows a developer to incrementally decommission the legacy application. The decommissioner builds a core web service that includes a core web service identifier and legacy application invocation logic that interacts with the legacy application and invokes the legacy application logic. The decommissioner produces a web service wrapper that includes the core web service identifier and legacy application invocation logic (e.g., a call to a proxy or a dispatcher). The decommissioner uses the dispatcher as a central point for coordinating proxies in a distributed environment. The proxy registers with the dispatcher under a unique name, collects GAP identification data and information about GAPs, and sends the collected GAP identification and information about GAPs to the dispatcher. The dispatcher uses the information collected from the proxies to route web service requests. The dispatcher acts as a request handler and receives a web service functionality request for legacy application logic and responsively invokes the decommissioning framework. The developer may introduce decommissioning replacement logic into the web service wrapper to allow a user to interact with the legacy application and new application transparently using a common interface (e.g., a client program). The decommissioning replacement logic maps legacy application features into the web service wrapper that the decommissioner can eventually decommission in the legacy application. The decommissioner tracks the legacy application logic (e.g., features) implemented in the web service wrapper and notifies the developer when the features identified for decommissioning have been replaced and/or decommissioned in the legacy application.
- The decommissioner may incrementally introduce decommissioning replacement logic into the web service wrapper over a transition period during which the developer incrementally migrates the legacy application functionality to the new application so that the legacy application can be completely decommissioned at the end of the transition period. The organization may vary the transition period for each of the discrete features (e.g., legacy application logic implementing particular functionality) of the legacy application depending on the complexity of the legacy application logic providing the functionality, the migration dependencies and impacts to other legacy application features, and the readiness of the new application to inherit the decommissioned functionality from the legacy application.
- The decommissioner can replace legacy application logic with decommissioning replacement logic at a very granular level. For example, the decommissioner may provide zero degrees of coverage for the legacy application logic implementing a particular feature. The decommissioner may provide a non-zero degree of coverage so that a blended combination of legacy application logic and decommissioning replacement logic provide the features of the legacy application. The decommissioner may provide 100 percent decommissioning replacement logic (e.g., 100% degree of coverage) where the decommissioner has completely migrated the legacy application logic to a new application. The decommissioner sends a decommissioning request to the developer when the degree of coverage provided by the decommissioner meets a decommissioning threshold. The decommissioner may designate a default decommissioning threshold and/or the developer may specify the decommissioning threshold. The degree of coverage may meet the decommissioning threshold even though the decommissioner has not implemented all the features of the legacy application. For example, a developer may assign legacy application logic a weight from 1 to 10, where a weight of 10 indicates a critical feature and a weight of 1 indicates an optional and/or non-critical feature. The degree of coverage may meet the decommissioning threshold when the features assigned a weight over 7 have been implemented by the decommissioning framework. When the degree of coverage meets the decommissioning threshold, the decommissioner sends a decommissioning request to the developer and inserts default decommissioning replacement logic to replace features not included in the degree of coverage.
- The decommissioner solves the extraordinary technical challenges associated with decommissioning a legacy application and migrating legacy applications to new platforms and architectures. The decommissioner solves these extraordinary challenges by providing developers a tool to implement controlled phased migrations that allow organizations to introduce migrated functionality in manageable portions over time. The decommissioner also solves the technical challenges of decommissioning and migrating third-party GAPs where a developer does not have the ability to review the legacy source code of the third-party GAPs.
- Other systems, methods, and features of the invention will be, or will become apparent to one with skill in the art upon examination of the following figures and detailed description. It is intended that all such additional systems, methods, features and advantages be included within this description, be within the scope of the invention, and be protected by the following claims.
- The disclosure can be better understood with reference to the following drawings and description. The components in the figures are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention. Moreover, in the figures, like referenced numerals designate corresponding parts or elements throughout the different views.
-
FIG. 1 illustrates an integrated system composing GUI-Based Applications and web services. -
FIG. 2 shows a dispatcher coordinating communication between GAPs and web services. -
FIG. 3 illustrates a GAP host computer concurrently running two GAPs. -
FIG. 4 shows a dispatcher and dispatcher components. -
FIG. 5 shows a composition integration design tool system. -
FIG. 6 shows one example implementation of a design tool user interface. -
FIG. 7 shows a design tool user interface and composite web service. -
FIG. 8 shows a design tool user interface and web service parameter relationship. -
FIG. 9 shows the acts that a proxy may take to register GAPs with a dispatcher. -
FIG. 10 shows the acts that a dispatcher may take to register a web service, and coordinate communication between web services and proxies. -
FIG. 11 shows the acts that a hook may take to command and control a UI element. -
FIG. 12 shows the acts the composition integration design tool system may take to capture the structural representation of GUIs of a GAP and UI elements of the GAP. -
FIG. 13 shows a web service creation tool. -
FIG. 14 shows a structural representation of a GUI of a GAP and UI elements of the GAP. -
FIG. 15 shows a design tool user interface for a web service creation tool. -
FIG. 16 shows one example implementation of the web service creation tool. -
FIG. 17 shows the acts that a proxy and dispatcher may take in a web service creation tool. -
FIG. 18 illustrates a decommissioning system. -
FIG. 19 shows multiple core web services in communication with a legacy application. -
FIG. 20 shows a partially decommissioned legacy application. -
FIG. 21 shows a fully decommissioned legacy application. -
FIG. 22 shows an example of the processing that the decommissioning logic and decommissioning evaluation logic perform. - The decommissioner addresses the technical challenge of enabling GAPs to exchange information (i.e., interoperate) with each other and web services. The decommissioner solves the technical problem of implementing controlled phased migrations of legacy applications (e.g., GAPs) that allow organizations to introduce migrated functionality in manageable portions over time, efficiently and non-invasively. The decommissioner also solves the technical challenges of migrating third-party GAPs where the organization does not have access to review the legacy source code of the third-party GAPs.
- Phased migrations allow organizations to introduce migrated legacy application functionality over time, minimize the complexity of and isolate testing, and allow users time to become comfortable with the migrated functionality. Migration approaches that impose a non-phased approach take longer to complete, increase the complexity of testing, and impose a burden on users to adapt to an entire suite of migrated functionality all at once.
- In contrast to GAPs, developers design web services as software components that flexibly exchange information over networks, including the Internet. Consequently, business industry demands for applications that easily and inexpensively exchange information has partly caused widespread acceptance of web services. Employing web services, unlike GAPs, enables organizations to quickly build integrated systems by composing (i.e., configuring) the web services for information exchange. Web services allow organizations to quickly migrate functionality from one application to another
- A developer may connect UI elements of a GAP with properties of the web service by placing logic that invokes the functionality of the GAP into a core web service. The logic specifies how the web service interacts with the legacy GAP. The developer selects a method for the web service, and determines how to invoke the web service. For example, an end user performing some action on a UI element (e.g., clicking a button on a GAP screen) invokes the method. The developer defines whether to pass the values of the UI elements as parameters to the invoked method, or use the values to set properties of the web service before invoking the method. In addition, the developer specifies how to use the return values of the invoked method, for example, whether to update selected UI elements of the GAPs with the values, or display the values in message dialogs. The developer creates core web services for GAPs and defines web service parameter relationships between web service parameters and UI elements of a GAP. The developer creates and deploys core web services based on web service definitions, user interface interaction specifications, and web service parameter relationships. The developer may define an action in response to certain return values of the invoked method. Once the developer creates the core web service making the legacy application interoperable, the developer may use the decommissioner to build an immutable web service wrapper to insert decommissioning replacement logic that can be used to incrementally replace the legacy application logic.
- The decommissioner uses proxies to command and control GAPs and UI elements of GAPs to fulfil web service requests. When a proxy receives a response from a GAP, the proxy extracts data from the GAP, and forwards the extracted data to one or more web services. Proxies use hooks to perform various actions on UI elements and GAPs programmatically through accessibility API calls. Accessibility technologies allow hooks to register for different events produced by UI elements and GAPs monitored by accessibility APIs. One or more GAPs may run with a proxy and corresponding hooks on a single designated GAP host computer along with a accessibility API.
- The decommissioner uses a dispatcher as a central point for coordinating proxies in a distributed environment. A proxy registers with the dispatcher under a unique name, collects GAP identification data and information about GAPs running with the proxy on a GAP host computer, and sends the collected GAP identification and information about GAPs to the dispatcher. The dispatcher uses the information collected from the proxies to route web service requests to proxies. The dispatcher routes web service request components of web services to GAP host computers, where corresponding proxies ultimately command and control GAPs and UI elements. The dispatcher acts as an intermediary that enables web services and GAPs to run on separate computers while presenting a common view to client programs. Because organizations may move web services and GAPs around the enterprise computing environment for various reasons (e.g., to improve business processes efficiencies or the performance of applications) the dispatcher provides web services and GAPs migration and location transparency to client programs.
- The elements illustrated in the Figures interoperate as explained in more detail below. Before setting forth the detailed explanation, however, it is noted that all of the discussion below, regardless of the particular implementation being described, is exemplary in nature, rather than limiting. For example, although selected aspects, features, or components of the implementations may be depicted as being stored in memories, all or part of systems and methods consistent with the decommissioner may be stored on, distributed across, or read from other machine-readable media, for example, secondary storage devices such as hard disks, floppy disks, and CD-ROMs, a signal received from a network, or other forms of ROM or RAM either currently known or later developed.
- Furthermore, although specific components of the decommissioner will be described, methods, systems, and articles of manufacture consistent with the system may include additional or different components. For example, a processor may be implemented as a microprocessor, microcontroller, application specific integrated circuit (ASIC), discrete logic, or a combination of other type of circuits or logic. Similarly, memories may be DRAM, SRAM, Flash or any other type of memory. Logic that implements the processing and programs described below may be stored (e.g., as computer executable instructions) on a computer readable medium such as an optical or magnetic disk or other memory. Alternatively or additionally, the logic may be realized in an electromagnetic or optical signal that may be transmitted between entities. Flags, data, databases, tables, and other data structures may be separately stored and managed, may be incorporated into a single memory or database, may be distributed, or may be logically and physically organized in many different ways. Programs may be parts of a single program, separate programs, or distributed across several memories and processors, and may be implemented or distributed as shared libraries, application programming interfaces (APIs), or in other forms. Furthermore, the programs, or any portion of the programs, may instead be implemented in hardware.
-
FIG. 1 illustrates an example of anIntegrated System 100 that includes composed GUI-Based Applications and web services. In the example shown inFIG. 1 , theIntegrated System 100 include adispatcher 102, aclient program 104,composite web services GAP host computers web services Integrated System 100 components may communicate through aNetwork 130 such as the Internet. TheIntegrated System 100 uses thedispatcher 102 to coordinate communication between GAPs, web services, and composite web services. When aclient program 104 invokes a web service method managed by a web service 120-126 or composite web service 106-110, the designated web service sends one or more requests to thedispatcher 102, which routes the requests to the appropriateGAP host computers GAP host computers dispatcher 102. Thedispatcher 102 forwards the responses to the appropriate web services (e.g., web services 120-126 or composite web services 106-110), which send responses to theclient program 104. Prior to composing theIntegrated System 100 using the GAPs and web services, each business process operation that theclient program 104 invoked required agents to interact with the one or more GAPs separately, because of a lack of interoperability between the one or more GAPs. -
FIG. 2 shows adispatcher 102 coordinating communication between GAPs and web services. Thedispatcher 102 acts as an intermediary that enables web services and GAPs to run on separate computers while presenting a common view toclient programs 104. Because organizations may move web services and GAPs around the enterprise computing environment for various reasons (e.g., to improve business processes efficiencies or the performance of applications) thedispatcher 102 provides web services and GAPs migration and location transparency toclient programs 104. In one implementation, when aclient program 104 invokes a web service method corresponding to acomposite web service 202, thecomposite web service 202 sends one or more web service request components to dispatchers, such as thedispatcher 102. A composite web service may include multiple request components (e.g., methods that need to be invoked to implement full control over multiple GAPs). Thedispatcher 102 determines to which proxies (e.g., proxy-1 206, proxy-2 220 and proxy-3 230) to route the web service request components, based on information collected from the proxies. A proxy registers with thedispatcher 102 under a unique name, collects GAP identification data and information about the GAPs running on the GAP host computer (e.g., GAP-1host computer 112, GAP-2host computer 114, and GAP-3 host computer 116) with the proxy, and sends the GAP identification data and information to thedispatcher 102. - In one implementation, when proxy-1 206 receives a web service request component the proxy-1 206 interacts with one or more UI elements of the GAP-1 with
UI elements 208 through the hook-1 214, in response to the web service request component. The accessibility layer-1 212 may support hook-1 214 to perform various actions on GAP-1 withUI elements 208 programmatically. Proxy-2 220 in communication with GAP-2host computer 114 for GAP-2 withUI elements 222 and hook-2 228 may register the GAP-2 withUI elements 222 with thedispatcher 102, resulting in a second composite web service request component of the composite web service to route through thedispatcher 102 to the GAP-2host computer 114. In one implementation, when proxy-2 220 receives the second web service request component the proxy-2 220 interacts with one or more of the UI elements of the GAP-2 withUI elements 222 through the hook-2 228, in response to the second web service request component. The accessibility layer-2 226 may support hook-2 228 to perform various actions on GAP-2 withUI elements 222 programmatically. Thedispatcher 102 may use aload balancer 240 to route web service requests to multiple GAP host computers. - In one implementation of the
Integrated System 100 multiple instances of a GAP (e.g., Acme Expense GAP (AEG)) run concurrently on separate GAP host computers (e.g., GAP-1host computer 112, GAP-2host computer 114, and GAP-3 host computer 116). Thedispatcher 102 assigns each instance of AEG a unique GAP identifier, enabling thedispatcher 102 to coordinate parallel execution of multiple instances of AEG, so that when thecomposite web service 202 sends a composite web service request component to thedispatcher 102 in response to a request from aclient program 104 thedispatcher 102 routes the composite web service request component to the correct instance of AEG. -
FIG. 3 illustrates aGAP host computer 302 concurrently running two GAPs. In one implementation, a single GAP host computer may run multiple GAPs, and include, in addition to acommunications interface 304 to communicate with various components of anIntegrated System 100, aprocessor 306,memory 308, andexternal storage 310. Thememory 308 may include instances of different GAPs running (e.g., GAP-1 312, and GAP-2 314), GAP-1 UI elements and GAP-2 UI elements corresponding to GAP-1 312 and GAP-2 314, respectively, a hook-1 320 and hook-2 321,accessibility layer 322, a structural representation of GUIs of a GAP and UI element of theGAP 323, and aproxy 324. In one implementation GAP-1 312 may represent an instance of a third-party closed and monolithic Windows GAP (e.g., an Acme Expense GAP (AEG)) that a company uses internally to keep track of purchases, and GAP-2 314 may represent a closed and monolithic GAP named My Invoices and Estimates (MIE) that the company uses to create invoices for ordered goods. - In one implementation, the
accessibility layer 322 supports hook-1 320 and hook-2 to perform various actions programmatically on GAP-1 312, GAP-1UI elements 316, and GAP-2 314 and GAP-2UI elements 318, respectively. Theaccessibility layer 322 may also assist with capturing a structural representation of GUIs of a GAP and UI elements of theGAP 323, as a result of interactions with the GAP. The structural representation of GUIs of a GAP and UI elements of theGAP 323 may provide theproxy 324, hook-1 320 and hook-2 321 comprehensive information to locate, control, and manipulate GAP-1 312, GAP-2 314, GAP-1UI elements 316, and GAP-2UI elements 318. The structural representation of GUIs of a GAP and UI elements of theGAP 323 may be implemented as objects (e.g., an XML file) that capture depth-first traversals of the GUI, breadth first traversal of the GUI, or that otherwise stores the interface elements and screen sequences of the GUI. Theproxy 324 may analyze the structural representation of GUIs of a GAP and UI elements of theGAP 323 to locate a GAP UI element in the GAP GUI. - The
proxy 324 may includeregistration logic 326, an accessibilitylayer command coordinator 328, and a GAPs identification table 330. Theproxy 324 may use theregistration logic 326 to register GAP-1 312 and GAP-2 314 with the dispatcher. The accessibilitylayer command coordinator 328 may control GAP-1 312 and GAP-1UI elements 316 through hook-1 320, in response to a web service request component. To that end, the accessibilitylayer command coordinator 328 may receive web service request components, extract the graphical user interface element identifiers, a structural representation of a GAP, and the requested action on the identified graphical user interface element. The accessibilitylayer command coordinator 328 may then traverse thestructural representation 323 to determine where the identified graphical user interface element resides in the GAP user interface, and make calls to the hook to navigate the GAP to the interface that includes the identified graphical user interface element. Once at the appropriate interface, the accessibilitylayer command coordinator 328 may then exercise the graphical user interface element through the hook to perform the requested action. - In another implementation, proxy-1 206 uses an accessibility layer command coordinator running on and dedicated to GAP-1
host computer 112 to control GAP-1 withUI elements 208 through hook-1 214, in response to a web service request component. Theproxy 324 may collect GAP identification data and information about GAPs (e.g., GAP-1 312, and GAP-2 314) hosted withproxy 324 on the multipleGAPs host computer 302, and stores the collected GAP identification data and information about the GAPs in the GAPs identification table 330. In one implementation, theproxy 324 may store GAP Identifiers for multiple locally hosted GAPs (e.g., GAP-1 312, and GAP-2 314) in the GAP identification table 330. Theproxy 324 may periodically send the collected GAP identification data and information about the GAPs to thedispatcher 102. The multipleGAPs host computer 302 may use theexternal storage 310 to store the GAP-1exe 332 and GAP-2exe 334 programs. - In an alternative implementation, the
dispatcher 102 receives a web service request message from theweb service 204 that includes a GAP UI element Identifier and an action request identifier for a specific GAP UI element (e.g., GAP-1 UI elements 316). The GAP UI element may correspond to a GAP (e.g., GAP-1 312) executing inmemory 308. Thedispatcher 102 may send the web service request message toproxy 324, which extracts the GAP UI element identifier and action request identifier from the web service request message. Theproxy 324 may perform an action against the GAP-1UI elements 316 specified in the action request identifier through hook-1 320. The action request identifier may include a GUI element data setting action, or a GUI element data retrieval action that the proxy performs through hook-1 320 against the GAP-1UI elements 316 specified in the action request identifier. -
FIG. 4 shows adispatcher 102 and dispatcher components. Thedispatcher 102 may include acommunications interface 402, aprocessor 404, andmemory 406. Thedispatcher 102memory 406 may include a proxy-1 GAPs identification table 410, a proxy-2 GAPs identification table 412,Registration logic 414, Routinglogic 424, webservices registration requests 428, GAP registration requests 430, and aGAPs request queue 432. Thedispatcher 102 may be used as a central point for coordinating proxies (e.g., proxy-1 206 and proxy-2 220) in a distributed environment. A proxy (e.g., proxy-1 206 and proxy-2 220) may register with thedispatcher 102 under a unique name, and periodically collect GAP identification data and information about GAPs running with the proxy on the GAP Host computers (e.g., GAP-1host computer 112, and GAP-2 host computer 114), and send the collected GAP identification data and information about GAPs to thedispatcher 102. Thedispatcher 102 may store the collected information from each proxy in separate proxy GAPs identification tables (e.g., proxy-1 GAPs identification table 410, and proxy-2 GAPs identification table 412). The proxy GAPs identification tables may contain GAP identification data and information for multiple GAPs. For example, as shown inFIG. 3 , theproxy 324 may periodically send thedispatcher 102 the GAPs identification table 330, which may include GAP identification data and information for GAP-1 312 and GAP-2 314. - In one implementation, when a
client program 104 invokes a method of aweb service 204 orcomposite web service 202, theweb service 204 orcomposite web service 202 to which the method belongs sends a webservices registration request 428 to thedispatcher 102. Thedispatcher 102 may identify the GAPs required to fulfil a method of aweb service 204, or acomposite web service 202. Thedispatcher 102 may useregistration logic 414 to receive GAP registration requests 430 from GAPs and webservices registration requests 428 fromweb services 204, and composite web services 202. Thedispatcher 102 may also use theregistration logic 414 to control GAPs to webservices assignments logic 418 to analyze the proxy GAPs identification tables to assign GAPs and UI elements to methods of web-services 204, and methods of composite web services 202. In one implementation, theregistration logic 414 instantiates the proxy GAPs identification table (e.g., proxy-1 GAPs identification table 410, and proxy-2 GAPs identification table 412) in response to aGAP registration request 430 from a GAP. Thedispatcher 102 may include aGAPs request queue 432 to store web service requests and web service request components when a web service requests an unavailable GAP, which will be explained in further detail below. -
FIG. 5 shows a composition integrationdesign tool system 500. The composition integrationdesign tool system 500 may include acommunications interface 502, aprocessor 504, andmemory 506. The composition integrationdesign tool system 500memory 506 may include interaction logic 508,accessibility layer 510,hook logic 512,proxy logic 513, a structural representation of GUIs of a GAP and UI elements of theGAP 514,registration logic 516, design tooluser interface logic 518,definition logic 520,specification logic 522, andrelation logic 524. - The interaction logic 508 captures one or more GAP-1
UI elements 526, and one or more GAP-2UI elements 528 using theaccessibility layer 510. In other words, the Interaction logic 508 may capture a structural representation of GUIs of a GAP and UI elements of theGAP 514 through theaccessibility layer 510 using thehook logic 512 to communicate with the GAPs (e.g., GAP-1 530, GAP-2 532, and corresponding GAP-1UI elements 526 and GAP-2 UI elements 528).Proxy logic 513 may control the GAPs through thehook logic 512, and theproxy logic 513 may use theregistration logic 516 to sendGAP registration requests 430 to thedispatcher 102. The structural representation of GUIs of a GAP and UI elements of theGAP 514 may include a GAP UI element label, a UI element Identifier, and location information in the GAP GUI for the GAP UI elements (e.g., GAP-1UI elements 526 and GAP-2 UI elements 528), and may also include a GAP GUI screen sequence representation for each GAP GUI screen sequence. -
FIG. 6 shows one example implementation of a designtool user interface 518. The design tooluser interface logic 518 may generate a designtool user interface 534 that includes aninput parameter area 602 and ascreen sequence area 620. The design tooluser interface logic 518 provides additional, fewer, or different interface elements. The design tooluser interface logic 518 may include a point-and-click interface, drag-and-drop interface or both a point-and-click interface, drag-and-drop interface between GAP UI elements (e.g., GAP-1UI elements 526 and GAP-2 UI elements 528) and theinput parameter area 602, and determine operator selections (i.e., UI interactions) of GAP UI elements, as well as web service parameters 604 (e.g., WS parameter-1 608, WS parameter-2 610, and WS parameter-3 612). The designtool user interface 534 may use the drag-and-drop interface to move GAP UI elements (e.g., GAP-1UI elements 526 and GAP-2 UI elements 528) andweb service parameters 604 into theinput parameter area 602, and the GAP GUI screen sequences into thescreen sequence area 620 to establish a userinterface interaction specification 622 that creates aUI element correspondence 624 between at least one of the GAP-1 UI elements 526 (e.g., GAP-1 UI element-1 626, GAP-1 UI element-2 628, and GAP-1 UI element-3 630) and at least one of the GAP-2 UI elements 528 (e.g., GAP-2 UI element-1 634, GAP-2 UI element-2 636, and GAP-2 UI element-3 638). For example,FIG. 6 shows anarrow 642 drawn (e.g., by an operator or from input from an automated analysis tool) from GAP-2 UI element-1 634 to GAP-1 UI element-2 628, which establishes aUI element correspondence 624 between the two GAP UI elements. The designtool user interface 534 may include amethod signature 650 that defines the name of a web service method, the parameters, and the method type. Themethod signature 650 may also specify error or exception handling procedures and the parameter types of each method parameter. -
FIG. 7 shows a design tool user interface and composite web service. The designtool user interface 534 may use thedefinition logic 520 to establish a compositeweb service definition 702. Thus, thedefinition logic 520 may establish the compositeweb service definition 702 for acomposite web service 202, including one or more web service parameters 604 (e.g., WS parameter-1 608, WS parameter-2 610, and WS parameter-3 612), a web service name, or other web service parameters. The designtool user interface 534 may generate thecomposite web service 202, and publish thecomposite web service 202. The designtool user interface 534 may use thedefinition logic 520 to establish aweb service definition 704 for aweb service 706, based on the structural representation of GUIs of a GAP and UI elements of theGAP 514 using theaccessibility layer 510. The designtool user interface 534 may use thespecification logic 522 to establish the userinterface interaction specifications 622. For example, thespecification logic 522 may create theUI element correspondence 624 between at least one of the GAP-1 UI elements 526 (e.g., GAP-1 UI element-1 626, GAP-1 UI element-2 628, and GAP-1 UI element-3 630) and at least one of the GAP-2 UI elements 528 (e.g., GAP-2 UI element-1 634, GAP-2 UI element-2 636, and GAP-2 UI element-3 638). For example, the userinterface interaction specification 622 may create aUI element correspondence 624 between the GAP-2 UI element-1 634 and the GAP-1 UI element-2 628 that defines an exchange of an invoice amount from the GAP-2 UI element-1 634 (e.g., an invoice field amount in the MIE GAP) to an expense amount in the GAP-1 UI element-2 628 (e.g., an expense field amount in the AEG). Thespecification logic 522 may establish the userinterface interaction specification 622 from multiple GAP-1 UI elements 526 (e.g., GAP-1 UI element-1 626, GAP-1 UI element-2 628, and GAP-1 UI element-3 630), to multiple GAP-2 UI elements 528 (e.g., GAP-2 UI element-1 634, GAP-2 UI element-2 636, and GAP-2 UI element-3 638). -
FIG. 8 shows a design tool user interface and web service parameter relationship. Therelation logic 524 may establish a webservice parameter relationship 802 between at least one of the web service parameters 604 (e.g., WS parameter-1 608, WS parameter-2 610, and WS parameter-3 612), and at least one of the GAP-2 UI elements 528 (e.g., GAP-2 UI element-1 556, GAP-2 UI element-2 558, and GAP-2 UI element-3 560). For example,FIG. 8 showsarrows 804 drawn (e.g., by an operator or from input from an automated analysis tool) from WS parameter-3 612 to GAP-2 UI element-3 638, that establish a webservice parameter relationship 802 between a web service parameter and GAP UI element. The webservice parameter relationship 802 may specify each of the GAP UI element labels of the GAP UI elements used. In another implementation, therelation logic 514 may establish a webservice parameter relationship 802 between at least one of the web service parameters 604 (e.g., WS parameter-1 608, WS parameter-2 610, and WS parameter-3 612), and at least one of the GAP-1 UI elements 526 (e.g., GAP-1 UI element-1 626, GAP-1 UI element-2 628, and GAP-1 UI element-3 630) or at least one of the GAP-2 UI elements 528 (e.g., GAP-2 UI element-1 634, GAP-2 UI element-2 636, and GAP-2 UI element-3 638). In one implementation, the compositeweb service definition 702 for acomposite web service 202 may include multiple web service parameters defined by a combination of GAP-1UI elements 526, GAP-2UI elements 528, and web service parameters 604 (e.g., WS parameter-1 608, WS parameter-2 610, and WS parameter-3 612) of aweb service 804. The composition integrationdesign tool system 500 may generate aweb service 706 based on theweb service definition 704 and the webservice parameter relationship 802, and publish theweb service 706. -
FIG. 9 shows the acts that a proxy, including theregistration logic 326, may take to register GAPs with a dispatcher. Each GAP host computer runs a dedicated proxy that commands and controls the GAPs and UI elements hosted on the GAP host computer through dedicated hooks also hosted on the GAP host computer. The hooks perform actions on the GAPs and UI elements through the accessibility layer. Once the GAP host computer starts (Act 902) and the operating system completes initialization (Act 904), the operating system or GAP host computer makes the accessibility layer available (Act 906). The proxy starts (Act 908), and the proxy initiates the accessibility API command coordinator (Act 910). GAPs start or stop execution on the host computer (Act 912), during the operation of the host computer. The proxy injects (e.g., load) a hook into a GAP after the GAP starts (Act 913). Through the accessibility API command coordinator, the proxy directs the hook to monitor a GAP and GAP UI elements (Act 914). The hook forwards monitored GAP and UI element data and information to the proxy, which updates the GAPs Table (Act 916). If another GAP starts or stops execution (Act 918) the proxy updates the GAPs Table (Act 916). The proxy may periodically forward the GAPs Table to the dispatcher (Act 920). -
FIG. 10 shows the acts that a dispatcher may take to register a web service, and coordinate communication between web services and proxies. When a client program invokes a method of a web service or a web service request component (Act 1002), the requesting web service or composite web service (e.g.,web service 204 or composite web service 202) to which the method belongs connects to thedispatcher 102, and sends a web services registration request 428 (Act 1004). Thedispatcher 102 may determine from the webservices registration request 428 the identity of the GAPs required to fulfil the web service or composite web service method (Act 1006). The dispatcher may analyze the GAP Tables received from connected proxies (Act 1008), and sends web service requests or web service request components to the appropriate proxies to reserve the required GAPs (Act 1010). Web service requests and web service request components may include GAP identification data and information about the required GAP, the GAP UI elements, requested actions to perform on the GAP and UI elements, and the information to return to the requesting web service or composite web service. The dispatcher and proxy corresponding to a required GAP may communicate to determine the availability of a GAP (Act 1012). For unavailable GAPs, thedispatcher 102 may place the web service request or web service request component on the dispatchers GAP request queue and notifies the requesting web service or composite web service (e.g.,web service 204 or composite web service 202) (Act 1016). The requesting web service or composite web service may determine whether to wait for an unavailable GAP to change status to available (Act 1018). For available GAPs, the dispatcher may forward the web service request or web service request component to the proxies corresponding to the required GAPs (Act 1020). The proxies corresponding to the required GAPs may command and control the GAPs and UI elements according to the web service request or web service request component, and return responses to the dispatcher 102 (Act 1022). The dispatcher may forward responses from proxies to the requesting web service or composite web service, or other web services or composite web services if required (Act 1024). -
FIG. 11 shows the acts that a hook may take to command and control a UI element. The hook monitors a GAP and UI elements for event and state changes (Act 1102). When a GAP or UI element event or state changes the hook intercepts the event or state change (Act 1104). The hook forwards GAP and UI element event and state change information to the controlling proxy (Act 1106). The proxy parses GAP and UI element data, and prepares to send information in a request or response to the appropriate destination (Act 1108). The proxy identifies the destination of the request or response as Local or Remote (Act 1110). For Local requests or responses, the proxy forwards the request or response to the hook, and the hook manipulates the GAP or UI elements through accessibility layer API calls (Act 1112). For remote requests or responses, the proxy forwards the request or response to the dispatcher (Act 1114), and the proxy determines whether to parse additional GAP and UI elements data from the hook (Act 1116). -
FIG. 12 shows the acts the composition integration design tool system may take to capture the structural representation of GUIs of a GAP and UI elements of the GAP. The operator assigns a name to the composite web service (Act 1204), and the operator assigns a name to the exported or published method of the composite web service (Act 1206). The operator registers each GAP, UI element and web service parameters required by the composite web service (Act 1208). The operator interacts with the registered GAPs, UI elements and web service parameters through the design tool's GUI Interface (Act 1210). The design tool captures the structural representation of GUIs of a GAP and UI elements of the GAP through the accessibility layer as a result of the operator interactions with the registered GAPs and UI elements (Act 1212). The design tool may translate the GAP and UI elements actions resulting from the operator interactions into executable instructions for the composite web service (Act 1214). The design tool, through the accessibility layer, records the structures of the GAP screens and operator actions on the GAPs to intercept user-level events (e.g., operator interactions with the GAP and UI elements) (Act 1216). The design tool stores the structural representation of GUIs of a GAP and UI elements of the GAP for use operationally after generating and publishing the composite web service (Act 1218). -
FIG. 13 shows a webservice creation tool 1300. InFIG. 13 , the webservice creation tool 1300 may include adispatcher 1302, aclient program 1304, aweb service 1306, aGAP 1host computer 1308, andexternal storage 1310. The webservice creation tool 1300 components may communicate through the networks 130 (e.g., the Internet).FIG. 13 also shows thedispatcher 1302 coordinating communication between asingle web service 1306 and proxy-1 1314. Thedispatcher 1302 acts as an intermediary that enables web services and GAPs to run on separate computers while presenting a common view toclient programs 1304. In one implementation of the webservice creation tool 1300, when aclient program 1304 invokes a web service method corresponding toweb service 1306, theweb service 1306 sends a web service request to thedispatcher 1302. Thedispatcher 1302 may route the web service request to proxy-1 1314 based on GAP identification data and GAP information collected from the proxy-1 1314. The GAP-1host computer 1308 runs anoperating system 1316, provides anaccessibility layer 1318, and hosts the proxy-1 1314, the hook-1 1320 and GAP-1 withGUI elements 1322. Theoperating system 1316 may provide theaccessibility layer 1318 with an accessibility API. The proxy-1 1314 registers with thedispatcher 1302 under a unique name, collects GAP identification data and information about the GAP-1 withGUI elements 1322 running with the proxy-1 1314 on the GAP-1host computer 1308, and sends the GAP identification data and information to thedispatcher 102. In one implementation, when proxy-1 1322 receives a web service request, the proxy-1 1322 interacts with one or more UI elements of the GAP-1 withUI elements 1322 through the hook-1 1320, in response to the web service request. Theaccessibility layer 1318 may support hook-1 1320 to monitor and control execution of GAP-1 withUI elements 1322, and perform various actions on GAP-1 withUI elements 1322 programmatically. -
FIG. 14 shows a structural representation of a GUI of a GAP and UI elements of the GAP. The structural representation of a GUI of a GAP and UI elements of theGAP 1402 may include a GAP-1 UI element-1label 1404, a GAP-1 UI element-1Identifier 1406, location information in the GAP GUI for the GAP UI elements (e.g., GAP-1 UI element-1location 1408, GAP-1 UI element-2location 1410, and GAP-1 UI element-3 location 1412), and a GAP GUIscreen sequence Representation 1416 for each GAP GUI Screen sequence. The structural representation of GUIs of a GAP and UI elements of theGAP 1402 may represent multiple GAP-1 GUI Screens (e.g., GAP-1 GUI screen sequence-1 1416, GAP-1 GUI screen sequence-2 1418, and GAP-1 GUI screen sequence-3 1420), and encode location information for the GAP-1 with UI elements 1322 (e.g., GAP-1 GUI element-1 encoded location information 1432). -
FIG. 15 shows a design tool user interface for a web service creation tool. The designtool user interface 1502 may include aninput parameter area 1504 and ascreen sequence area 1506. The designtool user interface 1502 may include a drag-and-drop interface used to move GAP-1UI elements 1508 and GAP GUI Screens represented in the structural representation of GUIs of a GAP and UI elements of theGAP 1402 into theinput parameter area 1504 andscreen sequence area 1506. The designtool user interface 1502 may consider the act of moving GAP-1UI elements 1508 and GAP GUI Screens represented in the structural representation of GUIs of a GAP and UI elements of theGAP 1402 into theinput parameter area 1504 andscreen sequence area 1506 as adding objects to or registering objects with the web service definition 1510. The designtool user interface 1502 may highlight a GAP-1 GUI element in the GAP-1 GUI, add the GAP-1 GUI element to the web service definition 1510 or move the GAP-1 GUI element theinput parameter area 1504, in response to an operator's selection of a GAP-1 UI element or a GAP GUI Screen represented in the structural representation of GUIs of a GAP and UI elements of theGAP 1402. The webservice creation tool 1300 may include aGAP GUI rendering 1511 of a GAP GUI screen sequence illustrating traversal through multiple GAP GUI Screens, and at least one of the web service parameters 1512 (e.g., WS parameter-1 1514, WS parameter-2 1516, and WS parameter-3 1518) for theweb service 1306. The designtool user interface 1502 may create a webservice parameter relationship 1520 between at least one of theweb service parameters 1512 and at least one of the GAP-1UI elements 1508, and generate theweb service 1306 based on the web service definition 1510 and the webservice parameter relationship 1520. For example,FIG. 15 shows anarrow 1521 drawn (e.g., by an operator or from input from an automated analysis tool) from WS parameter-3 1518 to GAP-2 UI element-3 1519, which establishes a webservice parameter relationship 1520 between a web service parameter and GAP UI element. The designtool user interface 1502 may create additional webservice parameter relationships 1512 between theweb service 1306 and additional GAP-1UI elements 1508 as a result of adding the additional GAP-1UI elements 1508 to theinput parameter area 1504. The designtool user interface 1502 may use theaccessibility layer 1318 to support the hook-1 1320 to monitor execution of GAP-1 withUI elements 1322, and GAP-1UI elements 1508 through multiple GAP GUI Screens, and capture the structural representation of GUIs of a GAP and UI elements of theGAP 1402. -
FIG. 16 shows one example implementation of the web service creation tool. The webservice creation tool 1300 may includeInteraction logic 1602, design tooluser interface logic 1604,definition logic 1606, andrelation logic 1608. TheInteraction logic 1602 may use theaccessibility layer 1318 to capture the structural representation of GUIs of a GAP and UI elements of theGAP 1402. TheInteraction logic 1602 may monitor operator interactions with GAP-1 through multiple GAP-1 GUI Screens andGAP UI elements 1508, and establish the structural representation of GUIs of a GAP and UI elements of theGAP 1402 across multiple GAP-1 GUI Screens. TheInteraction logic 1602 may also obtain location information and identification information for multiple GAP-1UI elements 1508, and record the location information and the identification information in the structural representation of GUIs of a GAP and UI elements of theGAP 1402. - The design tool
user interface logic 1604 may generate the designtool user interface 1502 that includes theinput parameter area 1504 and ascreen sequence area 1506, monitor and determine an operator's selection of at least one of the GAP-1UI elements 1508 in the GAP GUI represented in the structural representation of GUIs of a GAP and UI elements of theGAP 1402, and add the selected GAP-1UI elements 1508 to theinput parameter area 1504. The definition logic 1526 may establish the web service definition with at least one of the web service parameters 1512 (e.g., WS parameter-1 1514, WS parameter-2 1516, and WS parameter-3 1518) that will interact with the at least one of the GAP-1UI elements 1508. Therelation logic 1608 may establish a webservice parameter relationship 1520 between at least one of the web service parameters 1512 (e.g., WS parameter-1 1514, WS parameter-2 1516, and WS parameter-3 1518) and at least one of the GAP-1UI elements 1508. Therelations logic 1608 may establish multiple webservice parameter relationships 1520 with multiple web service parameters 1512 (e.g., WS parameter-1 1514, WS parameter-2 1516, and WS parameter-3 1518) and each of the GAP-1UI elements 1508. -
FIG. 17 shows the acts that a proxy and dispatcher may take in a web service creation tool. When a client program invokes a method of a web service (Act 1702), the requesting web service (e.g., web service 204) to which the method belongs connects to thedispatcher 102, and sends a web services registration request 428 (Act 1704). Thedispatcher 102 may determine from the webservice registration request 428 and analyze the GAP Table received from connected proxy the identity of the GAP required to fulfil the web service method, and send web service requests to the proxy to reserve the GAP (Act 1710). Web service requests may include GAP identification data and information about the required GAP, the GAP UI elements, requested actions to perform on the GAP and UI elements, and the information to return to the requesting web service. Thedispatcher 102 and proxy corresponding to the required GAP may communicate to determine the availability of the GAP (Act 1712). For an unavailable GAP, thedispatcher 102 may place the web service request on the dispatchers GAP request queue and notifies the requesting web service or composite web service (e.g., web service 204) (Act 1716). The requesting web service may determine whether to wait for the unavailable GAP to change status to available (Act 1718). For an available GAP, the dispatcher may forward the web service request to the proxy (Act 1720). The proxy for the required GAP may command and control the GAP and UI elements according to the web service request, and return responses to the dispatcher 102 (Act 1722). The hook monitors the GAP and UI elements for event and state changes (Act 1724). When a GAP or UI element event or state changes the hook intercepts the event or state change, and forwards GAP and UI element event and state change information to the controlling proxy (Act 1726). The proxy parses GAP and UI element data, and prepares and sends information in a response to the dispatcher (Act 1728). The dispatcher forwards the response to the client program (Act 1730). -
FIG. 18 illustrates adecommissioning system 1800. Thedecommissioning system 1800 may include amemory 1802, aprocessor 1804, and acommunications interface 1806. Thememory 1802 of thedecommissioning system 1800 may include adecommissioning framework 1808,dispatcher logic 1810, andproxy logic 513. Thememory 1802 may also includedecommissioning evaluation logic 1814, adecommissioning threshold 1816, a degree ofcoverage 1818, and adecommissioning request 1820. In one implementation, thedecommissioning framework 1808 includes web service wrapper-1 1822 and web service wrapper-2 1824 used to decommission alegacy application 1826 and to migrate functionality to new application (NA) logic-1 1828 implemented in anew application 1830. - In one implementation, the web service wrapper-1 1822 and web service wrapper-2 1824 include core web service (CWS) identifiers (ID)-1 1832 and CWS ID-2 1834, respectively, corresponding to core web services (WS)-1 1836 and core WS-2 1838. Core WS-1 1836 and core WS-2 1838 invoke GAP-1 1840, GAP-2 1842, and GAP-3 1844 using legacy application invocation (LAI) logic-1 1846 and LAI logic-2 1848. The web service wrapper-1 1822 and web service wrapper-2 1824 include LAI logic-3 1850 and LAI logic-4 1852, respectively, and decommissioning replacement (DR) logic-1 1854 and DR logic-2 1856, and exception handler-1 1858 and exception handler-2 1860.
- In one implementation, the
decommissioning framework 1808 uses the web service wrapper-1 1822 to replace the core WS-1 1836 so that theclient program 104 directs service requests to the web service wrapper-1 1822 and LAI logic-3 1850 executes instead of LAI logic-1 1846. The DR logic-1 1854 may be introduced into the web service wrapper-1 1822 to replace portions and/or all of the LAI logic-3 1850 so that the web service wrapper-1 1822 invokes GAP-1 1840, a combination of the GAP-1 1840 and the new application (NA) logic-1 1828, or theNA logic 1828 only. The combinations of DR logic and LAI logic implemented in thedecommissioning framework 1808 will be presented in further detail below. - In one implementation, the
decommissioning logic 1812 identifies DR logic-1 1854 and DR logic-2 1856 for GAP-1 1840, GAP-2 1842, and GAP-3 1844 that thedecommissioning system 1800 uses to decommission thelegacy application 1826. Thedecommissioning logic 1812 builds web service wrapper-1 1822 and web service wrapper-2 1824 that include the CWS ID-1 1832 and CWS ID-2 1834 from core WS-1 1836 and core WS-2 1838 and inserts DR logic-1 1854 and DR logic-2 1856 into web service wrapper-1 1822 and web service wrapper-2 1824, respectively, to establish thedecommissioning framework 1800 for thelegacy application 1826. Thedecommissioning system 1800 may coordinate communication with thelegacy application 1826,new application 1830, core WS-1 1836 and core WS-2 1838, web service wrapper-1 1822 and web service wrapper-2 1824,dispatcher logic 1812, andproxy logic 1814 through thecommunications interface 1806 to processservice requests 1862 from theclient program 104. - In one implementation, the
dispatcher logic 1812 andproxy logic 1814 coordinate communication between core WS-1 1836, core WS-2 1838, web service wrapper-1 1822, web service wrapper-2 1824, andlegacy application 1826. Thedispatcher logic 1812 andproxy logic 1814 communicate with thedispatcher 102 andproxy 1864, respectively, where thedispatcher 102 operates as a central point for coordinating proxies (e.g., proxy 1864) in a distributed environment. For example,proxy 1864 registers with thedispatcher 102, collects information about GAP-1 1840, GAP-2 1842, and GAP-3 1844 running with theproxy 1864, and sends the information to thedispatcher 102. Thedispatcher 102 uses the information from theproxy 1864 to route service requests from theclient program 104, core WS-1 1836 and core WS-2 1838, and web service wrapper-1 1822 and web service wrapper-2 1824 to theproxy 1864. In one implementation, thedecommissioning logic 1812 builds thedecommissioning framework 1808 with web service wrapper-1 1822 and web service wrapper-2 1824 using information received via communication with thedispatcher logic 1810 andproxy logic 513. Web service wrapper-1 1822 and web service wrapper-2 1824 may use LAI logic-3 1850 and LAI logic-4 1852 to communicate with thedispatcher 102 and/orproxy 1864. In one implementation, LAI logic-1 1846 and LAI logic-2 1848, and LAI logic-3 1850 and LAI logic-4 1852 communicate with thedispatcher 102 and/orproxy 1864 through thedispatcher logic 1810 andproxy logic 513, respectively. - In one implementation, the
decommissioning threshold 1816 represents an amount (e.g., a percent) of functionality coverage the developer desires thedecommissioning framework 1808 to provide before thelegacy application 1826 is decommissioned. Thedecommissioning evaluation logic 1814 evaluates the degree ofcoverage 1818 thedecommissioning framework 1808 provides to determine whether the degree ofcoverage 1818 meets thedecommissioning threshold 1816. The developer may assign weights to features (e.g., legacy application logic) that thedecommissioning evaluation logic 1814 uses to determine whether the degree ofcoverage 1818 meets thedecommissioning threshold 1816. For example, a developer may assign legacy application logic a weight from 1 to 10, where a weight of 10 indicates a critical feature and a weight of 1 indicates an optional and/or non-critical feature. The degree ofcoverage 1818 may meet thedecommissioning threshold 1816 when a selected subset, or all of, the features assigned a specific weight or weights (e.g., a weight of 10 or weights above 7) have been implemented by thedecommissioning framework 1808. As another example, the degree ofcoverage 1818 may meet thedecommissioning threshold 1816 when the sum of the weights for features implemented in thedecommissioning framework 1808 exceeds the value set as thedecommissioning threshold 1816. The decommissioning may be qualitative and/or quantitative in nature. - In one implementation, the
decommissioning evaluation logic 1814 sends adecommissioning request 1820 when the degree ofcoverage 1818 meets thedecommissioning threshold 1816. Thedecommissioning request 1820 may take many forms, such as an email, voice, or instant message to a developer, manager, or other authority. Thedecommissioning request 1820 may also take the form of an interprocess request, signal, or other message to an automated process (e.g., an operating system) that deactivates, terminates, or otherwise decommissions thelegacy application 1826. In response to meeting thedecommissioning threshold 1816, thedecommissioning system 1800 may automatically implement default DR logic-1 1854 and DR logic-2 1856 for functionality of thelegacy application 1826 not already covered by thedecommissioning framework 1808. - For example, where the developer sets the
decommissioning threshold 1816 to 50% and thedecommissioning evaluation logic 1814 evaluates the degree ofcoverage 1818 to indicate that thedecommissioning framework 1808 provides 66% of the legacy application logic (e.g., GAP-1 1840, and GAP-2 1842) through web service wrapper-1 1822, thedecommissioning evaluation logic 1814 sends the developer adecommissioning request 1820 because the degree ofcoverage 1818 meets thedecommissioning threshold 1816. The degree ofcoverage 1818, for example, represents coverage for GAP-1 1840 and GAP-2 1842. Thedecommissioning evaluation logic 1814 automatically implements DR logic-2 1856 for functionality of thelegacy application 1826 not represented by the degree of coverage 1818 (e.g., GAP-3 1844). The automatically implemented DR logic-2 1856 may provide default processing, error handling, or other response to substitute for the remaining functionality not actually implemented by replacement logic. - Table 1 shows a core web service with a method submitExpense that accepts input parameters used to submit expenses and includes legacy application invocation logic that interacts with a GAP used to insert expense information into a legacy application. The executor shown in Table 1 may be configured to represent the legacy application invocation logic based on the values given the host and port variables indicating the legacy application logic to invoke.
-
TABLE 1 Core Web Service public void submitExpense(String amount, String city, String date, String description, String expense, String merchant, String paymentMethod) throws java.rmi.RemoteException { try { // make a new service executor ServiceExecutor executor = new ServiceExecutor( ); // get the velocity template String fileName = “resources/templates/CorewebServiceState.xml.vm”; InputStream stream = getClass( ).getClassLoader( ).getResourceAsStream(fileName); // build a map of parameters Map<String, String> parameters = new TreeMap<String, String>( ); parameters.put(“amount”, amount); parameters.put(“city”, city); parameters.put(“date”, date); parameters.put(“description”, description); parameters.put(“expense”, expense); parameters.put(“merchant”, merchant); parameters.put(“paymentMethod”, paymentMethod); // get the host and port to connect to the Legacy Application String host = LegacyApplicationHost ...; int port = LegacyApplicationPort ...; // pass the template and parameter map to the executor - LAI Logic executor.executeOperation(fileName, parameters, host, port); } catch (Throwable t) { throw new java.rmi.RemoteException(message + “Unable to perform method \“submitExpense\” related to Legacy Application processing due to:”, t); } } - Table 2 shows a web service wrapper that includes decommissioning replacement logic. A web service wrapper may combine the Table 1 and Table 2 logic to implement a web service wrapper that includes LAI logic and DR logic. Accordingly, a single web service wrapper may replace any one or more core web services or any amount of legacy functionality. There need not be a one-to-one correspondence between web service wrappers and core web services, and the wrappers may implement any distribution of logic.
-
TABLE 2 Web Service Wrapper public void submitExpense(String amount, String city, String date, String description, String expense, String merchant, String paymentMethod) throw new java.rmi.RemoteException { try { // Decommissioning Replacement Logic String fileName = new “resources/templates/webServiceWrapperState.xml.vm”; InputStream stream = getClass( ).getClassLoader( ).getResourceAsStream(fileName); // build a map of parameters Map<String, String> parameters = new TreeMap<String, String>( ); parameters.put(“amount”, amount); parameters.put(“city”, city); parameters.put(“date”, date); parameters.put(“description”, description); parameters.put(“expense”, expense); parameters.put(“merchant”, merchant); parameters.put(“paymentMethod”, paymentMethod); // Decommissioning Replacement Logic calculates a merchant code, // a new expense calculation, and a new payment method String merchantcode = new ...; parameters.put(“merchantcode”, merchantcode); String NewExpenseCalculation = new ...; parameters.put(“NewExpenseCalculation”, NewExpenseCalculation); String NewPaymentMethod = new ...; parameters.put(“New payment method”, NewPaymentMethod); // get the host and port to connect to new application String host = new NewApplicationHost ...; int port = new NewApplicationPort ...; // pass the template and parameter map to the executor directed to new application executor.executeOperation(fileName, parameters, host, port); } catch (Throwable t) } throw new java.rmi.RemoteException(message + “Unable to perform method \“submitExpense\” related to New Application processing due to:”, t); } } -
FIG. 19 shows core WS-1 1836 and core WS-2 1838 in communication with alegacy application 1826. In one implementation, a user interacts through theclient program 104 with core WS-1 1836 and core WS-2 1838 that invoke GAP-1 1840, GAP-2 1842 and GAP-3 1844 using LAI logic-1 1846 and LAI logic-2 1848. Thedispatcher 102routes service requests 1906 to aproxy 1864 from core WS-1 1836 and core WS-2 1838.FIG. 19 shows the processing environment prior to thedecommissioning logic 1812 replacing any of thelegacy application 1826 logic with decommissioning replacement logic and/or LAI logic implemented in a web service wrapper. Thus, thenew application 1830 continues to function independently of the core web service and accordingly, without interaction with thelegacy application 1826 logic and/or functionality. -
FIG. 20 shows a partially decommissioned legacy application 2000. In the example shown inFIG. 20 , thedecommissioning logic 1812 builds a partially transitioned (PT) web service wrapper-1 2002 to establish thedecommissioning framework 1808 and replaces core WS-1 1836 that previously invoked GAP-2 1842 and GAP-3 1844. Core WS-2 1838 includes LAI logic-2 1848 that invokes GAP-1 1840. The PT web service wrapper-1 2002 may receiveservice requests 1862 from theclient program 104 for GAP-2 1842 functionality as service request-1 2006 and service request-2 2008. The PT web service wrapper-1 2002 may use LAI logic-3 1850 to invoke GAP-3 1844 functionality and DR logic-1 1854 to invoke theNA logic 1828 in thenew application 1830. The PT web service wrapper-1 2002 and core WS-2 1838route service requests dispatcher 102 which routes service requests as appropriate toproxy 1864. Thedecommissioning system 1800, shown inFIG. 20 , transparently provides the client program 104 a combination of functionality from the partially decommissioned legacy application 2000 andNA logic 1828. Thedecommissioning logic 1812 records the implementation of the functionality of GAP-2 1842 and GAP-3 1844 in thedecommissioning framework 1808. Thedecommissioning evaluation logic 1814 determines that the degree ofcoverage 1818 includes GAP-2 1842 and GAP-3 1844, and equals 66%. -
FIG. 21 shows a fully decommissionedlegacy application 2100. In the example shown inFIG. 21 , thedecommissioning logic 1812 builds a fully transitioned (FT) web service wrapper-1 2102 and FT web service wrapper-2 2104 to establish thedecommissioning framework 1808. Thedecommissioning framework 1808 replaces the legacy application logic GAP-1 1840, GAP-2 1842, and GAP-1 1843. FT web service wrapper-1 2102 and FT web service wrapper-2 2104 receiveservice requests 1862 from theclient program 104 for GAP-1 1840, GAP-2 1842, and GAP-1 1843 functionality as service request-1 2006 and service request-2 2008. FT web service wrapper-1 2102 and FT web service wrapper-2 2104 use DR logic-1 1854 and DR logic-2 1856 to invoke theNA logic 1828 in thenew application 1830. In one implementation, FT web service wrapper-1 2102 and FT web service wrapper-2 2104direct service requests 2004 to thedispatcher 102 to route to thenew application 1830 andNA logic 1828. Thedispatcher 102 does not routeservice requests 1906 to the fully decommissionedlegacy application 2100. Thedecommissioning system 1800, shown inFIG. 21 , transparently provides theclient program 104 the functionality of theNA logic 1828 as a substitute for the fully decommissionedlegacy application 2100. Thedecommissioning evaluation logic 1814 determines the degree ofcoverage 1818 to meet thedecommissioning threshold 1816 and sends the developer 2106 adecommissioning request 2108 to indicate that the fully decommissionedlegacy application 2100 may be decommissioned. -
FIG. 22 shows an example of the processing that thedecommissioning logic 1812 anddecommissioning evaluation logic 1814 perform. In one implementation, thedecommissioning logic 1812 identifies core WS-1 1836 that includes CWS ID-1 1832 that invokes legacy application logic implemented in GAP-2 1842 and GAP-3 1844 (2202). Thedecommissioning logic 1812 identifies DR logic-1 1854 for GAP-2 1842 and GAP-3 1844 (2204) that thedecommissioning system 1800 may use to decommission GAP-2 1842 and GAP-3 1844. Thedecommissioning logic 1812 builds web service wrapper-1 1822 that includes the CWS ID-1 1832 from the core WS-1 1836 (2206). Thedecommissioning logic 1812 inserts DR logic-1 1854 into web service wrapper-1 1822, an exception handler-1 1858 that replaces the legacy application logic GAP-2 1842 and GAP-3 1844 (2208) to establish adecommissioning framework 1808 for thelegacy application 1826. -
FIG. 22 further illustrates that thedecommissioning evaluation logic 1814 may analyze thedecommissioning framework 1808 to determine the degree ofcoverage 1818 provided by thedecommissioning framework 1808 for the desired functionality originally provided by thelegacy application 1826. For example, thedecommissioning framework 1808 may provide 1 of 10 functions provided by thelegacy application 1826 identified for decommissioning, resulting in a 10% degree ofcoverage 1818. On the other hand, thedecommissioning framework 1808 may provide 10 of 10 functionalities of thelegacy application 1826 identified for decommissioning, resulting in a 100% degree ofcoverage 1818. - The
decommissioning evaluation logic 1814 may compare the degree ofcoverage 1818 to the decommissioning threshold 1816 (2210) and issue a decommissioning request to deactivate the legacy application when the degree of coverage meets the decommissioning threshold (2212). Thedecommissioning threshold 1816 indicates the percent of functionality coverage the developer desires thedecommissioning framework 1808 to provide before alegacy application 1826 may be decommissioned. For example, thedecommissioning threshold 1816 may be set to 50% so that when 5 of the 10 functionality identified for decommissioning have been implemented in thedecommissioning framework 1808 thedecommissioning evaluation logic 1814 may issue adecommissioning request 1820. Thedecommissioning request 1820 may indicate a flag or other indicator that provides the developer information regarding outstanding tasks to complete and/or optional functionality that the developer may decide to decommission without migrating to thenew application 1830 before fully decommissioning thelegacy application 1826. - The
decommissioning evaluation logic 1814 may further evaluate whether thedecommissioning framework 1808 has decommissioned 100% of thelegacy application 1826 functionality (2214) when the degree of coverage meets the decommissioning threshold and automatically implement additional decommissioning replacement logic forlegacy application 1826 functionality not represented by the degree of coverage 1818 (2216). In other words, when thedecommissioning framework 1808 meets the decommissioning threshold but decommissions less than 100% of the legacy application logic, thedecommissioning evaluation logic 1814 may automatically implement additional decommissioning replacement logic so that thelegacy application 1826 can be fully decommissioned. The automatically implemented decommissioning replacement logic may provide default processing, error handling, or other responses to substitute for the remaininglegacy application 1826 functionality not covered by the degree ofcoverage 1818. - The
decommissioning logic 1812 may identify additional decommissioning replacement logic to include in the decommissioning framework 1808 (2218) either inserting the decommissioning replacement logic into an existing web service wrapper or implementing a new web service wrapper. Thedecommissioning evaluation logic 1814 may evaluate the degree ofcoverage 1818 when thedecommissioning framework 1808 includes additional decommissioning replacement logic until the desired functionality of the legacy application has been introduced into thedecommissioning framework 1808. - The decommissioner provides developers a tool to decommission and migrate legacy application functionality in a phased approach. The decommissioner identifies core web services that invoke legacy applications and defines, creates, and deploys a web service wrapper that provides control over the operation of the legacy application. As a result, the functionality of the legacy application may be migrated to a new platform and architecture, and the legacy application decommissioned so that organizations may continue to realize a return on their significant investment in the creation of the legacy application.
- A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. Accordingly, other implementations are within the scope of the following claims.
Claims (20)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/888,970 US8122444B2 (en) | 2007-08-02 | 2007-08-02 | Legacy application decommissioning framework |
CA2636516A CA2636516C (en) | 2007-08-02 | 2008-06-30 | Legacy application decommissioning framework |
EP08252627A EP2020635A3 (en) | 2007-08-02 | 2008-08-04 | Legacy application decommissioning framework |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/888,970 US8122444B2 (en) | 2007-08-02 | 2007-08-02 | Legacy application decommissioning framework |
Publications (2)
Publication Number | Publication Date |
---|---|
US20090037896A1 true US20090037896A1 (en) | 2009-02-05 |
US8122444B2 US8122444B2 (en) | 2012-02-21 |
Family
ID=40022406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/888,970 Expired - Fee Related US8122444B2 (en) | 2007-08-02 | 2007-08-02 | Legacy application decommissioning framework |
Country Status (3)
Country | Link |
---|---|
US (1) | US8122444B2 (en) |
EP (1) | EP2020635A3 (en) |
CA (1) | CA2636516C (en) |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080209348A1 (en) * | 2007-02-23 | 2008-08-28 | Mark Grechanik | Composing integrated systems using GUI-based applications and web services |
US20090125895A1 (en) * | 2007-11-12 | 2009-05-14 | International Business Machines Corporation | Re-Using Legacy Libraries in Software |
US20090193063A1 (en) * | 2008-01-28 | 2009-07-30 | Leroux Daniel D J | System and method for legacy system component incremental migration |
EP2284698A1 (en) | 2009-08-13 | 2011-02-16 | Accenture Global Services GmbH | Compositional modeling of integrated systems using event-based legacy applications |
US20110060790A1 (en) * | 2009-09-07 | 2011-03-10 | Oracle International Corporation | Facilitating a service application to operate with different service frameworks in application servers |
US20110078569A1 (en) * | 2009-09-29 | 2011-03-31 | Sap Ag | Value help user interface system and method |
US20110078183A1 (en) * | 2009-09-29 | 2011-03-31 | Sap Ag | Value help search system and method |
US20110087683A1 (en) * | 2009-10-08 | 2011-04-14 | Paparella Anthony J | Implementation of a software framework/data ark system |
US20110321032A1 (en) * | 2010-06-29 | 2011-12-29 | Cisco Technology | Dynamic web resource provisioning |
US20120102224A1 (en) * | 2010-10-20 | 2012-04-26 | Microsoft Corporation | Optimized consumption of third-party web services in a composite service |
US20120131538A1 (en) * | 2010-11-23 | 2012-05-24 | Kushal Das | Mechanism for determining support criteria for shared libraries based on their priority levels |
US8510426B2 (en) | 2010-10-20 | 2013-08-13 | Microsoft Corporation | Communication and coordination between web services in a cloud-based computing environment |
US8843632B2 (en) | 2010-10-11 | 2014-09-23 | Microsoft Corporation | Allocation of resources between web services in a composite service |
US8863108B2 (en) | 2010-11-23 | 2014-10-14 | Red Hat, Inc. | Finding out if software will run on an operating system without installing that software |
US20140310686A1 (en) * | 2008-09-03 | 2014-10-16 | Oracle International Corporation | System and method for meta-data driven, semi-automated generation of web services based on existing applications |
US20140331205A1 (en) * | 2013-05-02 | 2014-11-06 | Amazon Technologies, Inc. | Program Testing Service |
US20140331209A1 (en) * | 2013-05-02 | 2014-11-06 | Amazon Technologies, Inc. | Program Testing Service |
US8887122B2 (en) | 2010-11-23 | 2014-11-11 | Red Hat, Inc. | Find and track information of interface usage of software libraries by other software |
US8938706B2 (en) | 2010-11-23 | 2015-01-20 | Red Hat, Inc. | Providing customized visualization of application binary interface/application programming interface-related information |
US8959219B2 (en) | 2010-10-18 | 2015-02-17 | Microsoft Technology Licensing, Llc | Dynamic rerouting of service requests between service endpoints for web services in a composite service |
US8997051B2 (en) | 2012-12-07 | 2015-03-31 | Baker Hughes Incorporated | Apparatus and method for decommissioning/recommissioning a component/program of a computer system |
US9215154B2 (en) | 2010-10-08 | 2015-12-15 | Microsoft Technology Licensing, Llc | Providing a monitoring service in a cloud-based computing environment |
US9323643B1 (en) * | 2015-07-13 | 2016-04-26 | GameRefinery Oy | Method and system for analyzing mobile apps |
CN106445652A (en) * | 2015-07-17 | 2017-02-22 | 埃森哲环球解决方案有限公司 | Method and system for intelligent cloud planning and decommissioning |
US20170220452A1 (en) * | 2014-04-30 | 2017-08-03 | Yi-Quan REN | Performing a mirror test for localization testing |
US10296373B2 (en) | 2008-09-17 | 2019-05-21 | Oracle International Corporation | Generic wait service: pausing and resuming a plurality of BPEL processes arranged in correlation sets by a central generic wait server |
US10474438B2 (en) * | 2017-07-21 | 2019-11-12 | Accenture Global Solutions Limited | Intelligent cloud engineering platform |
US10514897B1 (en) * | 2018-06-15 | 2019-12-24 | Paypal, Inc. | Systems and methods for integrating modules into a software application |
US11425085B1 (en) * | 2017-11-20 | 2022-08-23 | Amazon Technologies, Inc. | Service discovery and renaming |
US20240111510A1 (en) * | 2022-09-29 | 2024-04-04 | Capital One Services, Llc | Systems and methods for data migration |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737020B (en) | 2011-03-31 | 2014-08-27 | 国际商业机器公司 | Method for initializing multi-tenant database, and apparatus thereof |
US10397312B2 (en) | 2016-12-16 | 2019-08-27 | Visa International Service Association | Automated server deployment platform |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5359730A (en) * | 1992-12-04 | 1994-10-25 | International Business Machines Corporation | Method of operating a data processing system having a dynamic software update facility |
US5920725A (en) * | 1997-07-02 | 1999-07-06 | Adaptivity Inc. | Run-time object-synthesis and transparent client/server updating of distributed objects using a meta server of all object descriptors |
US5960189A (en) * | 1994-09-08 | 1999-09-28 | Compaq Computer Corporation | Automatic computer upgrading |
US6199203B1 (en) * | 1998-07-21 | 2001-03-06 | Hewlett-Packard Company | Memory management techniques for on-line replaceable software |
US20030033369A1 (en) * | 2001-08-09 | 2003-02-13 | Bernhard Benjamin Karb Donovan | Web services container |
US6651249B2 (en) * | 1998-03-25 | 2003-11-18 | Symantec Corporation | Multi-tiered incremental software updating |
US6745382B1 (en) * | 2000-04-13 | 2004-06-01 | Worldcom, Inc. | CORBA wrappers for rules automation technology |
US20040148184A1 (en) * | 2003-01-23 | 2004-07-29 | Electronic Data Systems Corporation | System and method to manage the distribution of services software in a distributed network |
US20050268165A1 (en) * | 2004-05-21 | 2005-12-01 | Christopher Betts | Method and system for automated testing of web services |
US7000228B2 (en) * | 2002-01-17 | 2006-02-14 | Sun Microsystems, Inc. | Online upgrade of container-based software components |
US20060041862A1 (en) * | 2004-08-23 | 2006-02-23 | Clientsoft, Inc. | System and method for migrating applications from a legacy system |
US20060129516A1 (en) * | 2004-12-13 | 2006-06-15 | Lindsay Bradford | Adaptive software component techniques |
US20060156296A1 (en) * | 2002-03-22 | 2006-07-13 | Goldberg Athomas M | Distributed computing system |
US20060173987A1 (en) * | 2005-02-02 | 2006-08-03 | Sap Ag | Method for performing a dynamic update of composed web services |
US20060206599A1 (en) * | 2005-03-08 | 2006-09-14 | Microsoft Corporation | Dynamic service generation for legacy components |
US20060277537A1 (en) * | 2005-06-01 | 2006-12-07 | International Business Machines Corporation | Deployment of containers and container extensions in a modular code runtime platform through a runtime platform extension point |
US20070005739A1 (en) * | 2005-06-30 | 2007-01-04 | International Business Machines Corporation | Method and apparatus for dynamically controlling the selection and redundancy of web service components |
US7246350B2 (en) * | 2002-01-07 | 2007-07-17 | Intel Corporation | Dynamic composition and maintenance of applications |
US7293253B1 (en) * | 2003-09-12 | 2007-11-06 | Nortel Networks Limited | Transparent interface migration using a computer-readable mapping between a first interface and a second interface to auto-generate an interface wrapper |
US7818736B2 (en) * | 2005-09-14 | 2010-10-19 | International Business Machines Corporation | Dynamic update mechanisms in operating systems |
-
2007
- 2007-08-02 US US11/888,970 patent/US8122444B2/en not_active Expired - Fee Related
-
2008
- 2008-06-30 CA CA2636516A patent/CA2636516C/en active Active
- 2008-08-04 EP EP08252627A patent/EP2020635A3/en not_active Withdrawn
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5359730A (en) * | 1992-12-04 | 1994-10-25 | International Business Machines Corporation | Method of operating a data processing system having a dynamic software update facility |
US5960189A (en) * | 1994-09-08 | 1999-09-28 | Compaq Computer Corporation | Automatic computer upgrading |
US5920725A (en) * | 1997-07-02 | 1999-07-06 | Adaptivity Inc. | Run-time object-synthesis and transparent client/server updating of distributed objects using a meta server of all object descriptors |
US6651249B2 (en) * | 1998-03-25 | 2003-11-18 | Symantec Corporation | Multi-tiered incremental software updating |
US6199203B1 (en) * | 1998-07-21 | 2001-03-06 | Hewlett-Packard Company | Memory management techniques for on-line replaceable software |
US6745382B1 (en) * | 2000-04-13 | 2004-06-01 | Worldcom, Inc. | CORBA wrappers for rules automation technology |
US20030033369A1 (en) * | 2001-08-09 | 2003-02-13 | Bernhard Benjamin Karb Donovan | Web services container |
US7246350B2 (en) * | 2002-01-07 | 2007-07-17 | Intel Corporation | Dynamic composition and maintenance of applications |
US7000228B2 (en) * | 2002-01-17 | 2006-02-14 | Sun Microsystems, Inc. | Online upgrade of container-based software components |
US20060156296A1 (en) * | 2002-03-22 | 2006-07-13 | Goldberg Athomas M | Distributed computing system |
US20040148184A1 (en) * | 2003-01-23 | 2004-07-29 | Electronic Data Systems Corporation | System and method to manage the distribution of services software in a distributed network |
US7293253B1 (en) * | 2003-09-12 | 2007-11-06 | Nortel Networks Limited | Transparent interface migration using a computer-readable mapping between a first interface and a second interface to auto-generate an interface wrapper |
US20050268165A1 (en) * | 2004-05-21 | 2005-12-01 | Christopher Betts | Method and system for automated testing of web services |
US20060041862A1 (en) * | 2004-08-23 | 2006-02-23 | Clientsoft, Inc. | System and method for migrating applications from a legacy system |
US20060129516A1 (en) * | 2004-12-13 | 2006-06-15 | Lindsay Bradford | Adaptive software component techniques |
US20060173987A1 (en) * | 2005-02-02 | 2006-08-03 | Sap Ag | Method for performing a dynamic update of composed web services |
US20060206599A1 (en) * | 2005-03-08 | 2006-09-14 | Microsoft Corporation | Dynamic service generation for legacy components |
US20060277537A1 (en) * | 2005-06-01 | 2006-12-07 | International Business Machines Corporation | Deployment of containers and container extensions in a modular code runtime platform through a runtime platform extension point |
US20070005739A1 (en) * | 2005-06-30 | 2007-01-04 | International Business Machines Corporation | Method and apparatus for dynamically controlling the selection and redundancy of web service components |
US7818736B2 (en) * | 2005-09-14 | 2010-10-19 | International Business Machines Corporation | Dynamic update mechanisms in operating systems |
Cited By (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8656342B2 (en) * | 2007-02-23 | 2014-02-18 | Accenture Global Services Limited | Composing integrated systems using GUI-based applications and web services |
US20080209348A1 (en) * | 2007-02-23 | 2008-08-28 | Mark Grechanik | Composing integrated systems using GUI-based applications and web services |
US20090125895A1 (en) * | 2007-11-12 | 2009-05-14 | International Business Machines Corporation | Re-Using Legacy Libraries in Software |
US9176714B2 (en) * | 2007-11-12 | 2015-11-03 | International Business Machines Corporation | Re-using legacy libraries in software |
US8005788B2 (en) * | 2008-01-28 | 2011-08-23 | International Business Machines Corporation | System and method for legacy system component incremental migration |
US20090193063A1 (en) * | 2008-01-28 | 2009-07-30 | Leroux Daniel D J | System and method for legacy system component incremental migration |
US20140310686A1 (en) * | 2008-09-03 | 2014-10-16 | Oracle International Corporation | System and method for meta-data driven, semi-automated generation of web services based on existing applications |
US9606778B2 (en) * | 2008-09-03 | 2017-03-28 | Oracle International Corporation | System and method for meta-data driven, semi-automated generation of web services based on existing applications |
US10296373B2 (en) | 2008-09-17 | 2019-05-21 | Oracle International Corporation | Generic wait service: pausing and resuming a plurality of BPEL processes arranged in correlation sets by a central generic wait server |
EP2284698A1 (en) | 2009-08-13 | 2011-02-16 | Accenture Global Services GmbH | Compositional modeling of integrated systems using event-based legacy applications |
US8626825B2 (en) | 2009-09-07 | 2014-01-07 | Oracle International Corporation | Facilitating a service application to operate with different service frameworks in application servers |
US20110060790A1 (en) * | 2009-09-07 | 2011-03-10 | Oracle International Corporation | Facilitating a service application to operate with different service frameworks in application servers |
US20110078183A1 (en) * | 2009-09-29 | 2011-03-31 | Sap Ag | Value help search system and method |
US20110078569A1 (en) * | 2009-09-29 | 2011-03-31 | Sap Ag | Value help user interface system and method |
US8868600B2 (en) | 2009-09-29 | 2014-10-21 | Sap Ag | Value help search system and method |
US20110087683A1 (en) * | 2009-10-08 | 2011-04-14 | Paparella Anthony J | Implementation of a software framework/data ark system |
US8898658B2 (en) * | 2010-06-29 | 2014-11-25 | Cisco Technology, Inc. | Dynamic web resource provisioning |
US20110321032A1 (en) * | 2010-06-29 | 2011-12-29 | Cisco Technology | Dynamic web resource provisioning |
US10038619B2 (en) | 2010-10-08 | 2018-07-31 | Microsoft Technology Licensing, Llc | Providing a monitoring service in a cloud-based computing environment |
US9660884B2 (en) | 2010-10-08 | 2017-05-23 | Microsoft Technology Licensing, Llc | Providing a monitoring service in a cloud-based computing environment |
US9215154B2 (en) | 2010-10-08 | 2015-12-15 | Microsoft Technology Licensing, Llc | Providing a monitoring service in a cloud-based computing environment |
US8843632B2 (en) | 2010-10-11 | 2014-09-23 | Microsoft Corporation | Allocation of resources between web services in a composite service |
US9979631B2 (en) | 2010-10-18 | 2018-05-22 | Microsoft Technology Licensing, Llc | Dynamic rerouting of service requests between service endpoints for web services in a composite service |
US8959219B2 (en) | 2010-10-18 | 2015-02-17 | Microsoft Technology Licensing, Llc | Dynamic rerouting of service requests between service endpoints for web services in a composite service |
US8510426B2 (en) | 2010-10-20 | 2013-08-13 | Microsoft Corporation | Communication and coordination between web services in a cloud-based computing environment |
US20120102224A1 (en) * | 2010-10-20 | 2012-04-26 | Microsoft Corporation | Optimized consumption of third-party web services in a composite service |
US9979630B2 (en) * | 2010-10-20 | 2018-05-22 | Microsoft Technology Licensing, Llc | Optimized consumption of third-party web services in a composite service |
US8874787B2 (en) * | 2010-10-20 | 2014-10-28 | Microsoft Corporation | Optimized consumption of third-party web services in a composite service |
US20150113167A1 (en) * | 2010-10-20 | 2015-04-23 | Microsoft Corporation | Optimized Consumption of Third-Party Web Services in a Composite Service |
US8938706B2 (en) | 2010-11-23 | 2015-01-20 | Red Hat, Inc. | Providing customized visualization of application binary interface/application programming interface-related information |
US20120131538A1 (en) * | 2010-11-23 | 2012-05-24 | Kushal Das | Mechanism for determining support criteria for shared libraries based on their priority levels |
US8863108B2 (en) | 2010-11-23 | 2014-10-14 | Red Hat, Inc. | Finding out if software will run on an operating system without installing that software |
US8776036B2 (en) * | 2010-11-23 | 2014-07-08 | Red Hat, Inc. | Determining support criteria for shared libraries based on their priority levels |
US8887122B2 (en) | 2010-11-23 | 2014-11-11 | Red Hat, Inc. | Find and track information of interface usage of software libraries by other software |
US8997051B2 (en) | 2012-12-07 | 2015-03-31 | Baker Hughes Incorporated | Apparatus and method for decommissioning/recommissioning a component/program of a computer system |
US20140331209A1 (en) * | 2013-05-02 | 2014-11-06 | Amazon Technologies, Inc. | Program Testing Service |
US20140331205A1 (en) * | 2013-05-02 | 2014-11-06 | Amazon Technologies, Inc. | Program Testing Service |
US11003570B2 (en) * | 2014-04-30 | 2021-05-11 | Micro Focus Llc | Performing a mirror test for localization testing |
US20170220452A1 (en) * | 2014-04-30 | 2017-08-03 | Yi-Quan REN | Performing a mirror test for localization testing |
US9323643B1 (en) * | 2015-07-13 | 2016-04-26 | GameRefinery Oy | Method and system for analyzing mobile apps |
CN106605219A (en) * | 2015-07-13 | 2017-04-26 | 游戏精炼公司 | Method and system for analyzing mobile apps |
US10255081B2 (en) * | 2015-07-17 | 2019-04-09 | Accenture Global Solutions Limited | Method and system for intelligent cloud planning and decommissioning |
CN106445652A (en) * | 2015-07-17 | 2017-02-22 | 埃森哲环球解决方案有限公司 | Method and system for intelligent cloud planning and decommissioning |
US10474438B2 (en) * | 2017-07-21 | 2019-11-12 | Accenture Global Solutions Limited | Intelligent cloud engineering platform |
US11425085B1 (en) * | 2017-11-20 | 2022-08-23 | Amazon Technologies, Inc. | Service discovery and renaming |
US12120086B2 (en) | 2017-11-20 | 2024-10-15 | Amazon Technologies, Inc. | Service discovery and renaming |
US10514897B1 (en) * | 2018-06-15 | 2019-12-24 | Paypal, Inc. | Systems and methods for integrating modules into a software application |
US11327727B2 (en) | 2018-06-15 | 2022-05-10 | Paypal, Inc. | Systems and methods for integrating modules into a software application |
US20240111510A1 (en) * | 2022-09-29 | 2024-04-04 | Capital One Services, Llc | Systems and methods for data migration |
Also Published As
Publication number | Publication date |
---|---|
EP2020635A3 (en) | 2010-07-07 |
US8122444B2 (en) | 2012-02-21 |
CA2636516A1 (en) | 2009-02-02 |
EP2020635A2 (en) | 2009-02-04 |
CA2636516C (en) | 2013-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8122444B2 (en) | Legacy application decommissioning framework | |
US8656342B2 (en) | Composing integrated systems using GUI-based applications and web services | |
US7979846B2 (en) | Automatic test generation for reference testing | |
US7971183B2 (en) | Tool for converting legacy applications to web services | |
US11068383B2 (en) | Service oriented architecture infrastructure for business process verification and systems integrated testing | |
US5634127A (en) | Methods and apparatus for implementing a message driven processor in a client-server environment | |
US7093247B2 (en) | Installation of a data processing solution | |
US9830135B2 (en) | Declarative and pluggable business logic for systems management | |
US6820118B1 (en) | Method and system for providing a linkage between systems management systems and applications | |
US7971184B2 (en) | GUI-based application to web services conversion system | |
US9513874B2 (en) | Enterprise computing platform with support for editing documents via logical views | |
US20040025157A1 (en) | Installation of a data processing solution | |
US9003430B2 (en) | Dynamic transfer of selected business process instance state | |
Dukaric et al. | BPMN extensions for automating cloud environments using a two-layer orchestration approach | |
US6378002B1 (en) | Object oriented server process framework with implicit data handling registry for remote method invocations | |
Denaro et al. | Performance testing of distributed component architectures | |
Anh | Real-time backend architecture using Node. js, Express and Google Cloud Platform | |
Dasgupta et al. | Design of a Fault-tolerant Job-flow Manager for Grid Environments Using Standard Technologies, Job-flow Patterns, and a Transparent Proxy. | |
Groenda et al. | Model integration method and supporting tooling: project deliverable D5. 1 | |
KR200323843Y1 (en) | Customer Relationship Management System (i-CRMS) and Comprehensive Revenue Management System (i-SEMS) | |
von Laszewski et al. | Grid Workflows in Microsoft Project | |
Klay | He's Got the Whole World in His Hands | |
Groenda | Model Integration Method and Supporting Tooling | |
Monga | Abstractions for Network Systems | |
Stinga | Grid Technologies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: ACCENTURE GLOBAL SERVICES GMBH, SWITZERLAND Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GRECHANIK, MARK;CONROY, KEVIN MICHAEL;SIGNING DATES FROM 20070731 TO 20070801;REEL/FRAME:019695/0122 Owner name: ACCENTURE GLOBAL SERVICES GMBH, SWITZERLAND Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GRECHANIK, MARK;CONROY, KEVIN MICHAEL;REEL/FRAME:019695/0122;SIGNING DATES FROM 20070731 TO 20070801 |
|
AS | Assignment |
Owner name: ACCENTURE GLOBAL SERVICES LIMITED, IRELAND Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ACCENTURE GLOBAL SERVICES GMBH;REEL/FRAME:025700/0287 Effective date: 20100901 |
|
ZAAA | Notice of allowance and fees due |
Free format text: ORIGINAL CODE: NOA |
|
ZAAB | Notice of allowance mailed |
Free format text: ORIGINAL CODE: MN/=. |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20240221 |