US9384020B2 - Domain scripting language framework for service and system integration - Google Patents

Domain scripting language framework for service and system integration Download PDF

Info

Publication number
US9384020B2
US9384020B2 US13/744,853 US201313744853A US9384020B2 US 9384020 B2 US9384020 B2 US 9384020B2 US 201313744853 A US201313744853 A US 201313744853A US 9384020 B2 US9384020 B2 US 9384020B2
Authority
US
United States
Prior art keywords
computer
script
runtime engine
tags
workflow
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.)
Active
Application number
US13/744,853
Other versions
US20140208294A1 (en
Inventor
Srikantaiah Siddaraju
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Unisys Corp
Original Assignee
Unisys Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Unisys Corp filed Critical Unisys Corp
Priority to US13/744,853 priority Critical patent/US9384020B2/en
Priority to US13/744,882 priority patent/US20140208169A1/en
Publication of US20140208294A1 publication Critical patent/US20140208294A1/en
Assigned to UNISYS CORPORATION reassignment UNISYS CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SRIKANTAIAH, SIDDARAJU
Publication of US9384020B2 publication Critical patent/US9384020B2/en
Application granted granted Critical
Assigned to WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT reassignment WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: UNISYS CORPORATION
Assigned to WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT reassignment WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: UNISYS CORPORATION
Assigned to WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL TRUSTEE reassignment WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL TRUSTEE PATENT SECURITY AGREEMENT Assignors: UNISYS CORPORATION
Assigned to JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT reassignment JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: UNISYS CORPORATION
Assigned to UNISYS CORPORATION reassignment UNISYS CORPORATION RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: WELLS FARGO BANK, NATIONAL ASSOCIATION
Application status is Active legal-status Critical
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • G06F17/30893
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/20Handling natural language data
    • G06F17/21Text processing
    • G06F17/211Formatting, i.e. changing of presentation of document
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45529Embedded in an application, e.g. JavaScript in a Web browser

Abstract

Systems and methods are disclosed herein to a computer-implemented method of executing an enterprise application comprising: receiving, by a computer, an external request for a service provided by a runtime engine of the enterprise application; selecting, by a computer, a script from a plurality of scripts saved on a database based on the external request; referencing, by the computer, one or more tags stored in a tag library saved on the database that are called by the script, wherein the tags in the tag library define commands of the plurality of scripts and call one or more granular services of the enterprise application; loading, by a computer, the selected script and the tags referenced by the selected script; and executing, by a computer, instructions of the script to provide the service requested by the external request, wherein the selected script is updated in the database after executing instructions of the script.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS

This non-provisional patent application is related to U.S. patent application Ser. No. 13/744,882, filed Jan. 18, 2013, entitled “DOMAIN SCRIPTING LANGUAGE FRAMEWORK FOR SERVICE AND SYSTEM INTEGRATION.” filed on even date herewith, the entire contents of which are hereby incorporated herein by reference in their entirety.

TECHNICAL FIELD

The present invention relates generally to enterprise applications, and more specifically to an scripting language architecture for an enterprise application.

BACKGROUND

Conventional enterprise applications may be compiled and deployed with a separate workflow layer that is responsible for orchestrating business flow and coordinating services. The workflow layer gives the conventional enterprise application functionality. After an enterprise application is deployed, a customer may desire changes to the functionality, workflow, or services provided by the enterprise application, which are unpredicted during system design. Any changes to the functionality, workflow, or services of the conventional enterprise application require a change to the workflow layer or in granular service layers. In order to make a change to the workflow layer or the granular service layer, the enterprise application must be disabled, recompiled, and redeployed. Changes requiring recompilation of the workflow layer are costly and require a significant amount of time to implement. Costly and time-consuming changes frustrate a customer and may lead the customer to decide against making enterprise application changes unless the changes are very important.

Further, in a conventional enterprise application, any faults in the workflow, implementation or system components may lead to serious errors or system slow down to address the faults. Fault management in modern enterprise applications must be fast and accurate so that no faults occur during normal operation and faults do not seriously burden any users of the enterprise application.

Thus, a business application having flexibility after deployment, good performance, and good fault management is desired for enterprise applications.

SUMMARY

The systems and methods described herein attempt to overcome the drawbacks discussed above by providing a domain scripting language based architecture saved on a database and implemented by a runtime engine of an enterprise application. The runtime engine receives external requests for services provided by the enterprise application. The runtime engine processes the requests and calls one of a plurality of scripts located on the database to give the runtime engine workflow. Thus, updating the scripts on the database changes the workflow of the enterprise application after deployment rather than by recompiling and redeploying a workflow layer.

In addition, the scripts may be wrapped by a “savepoint” feature configured to restart the script at a point before a fault occurred. The savepoint feature creates snapshots during the execution of the scripts for reliable fault management.

In one embodiment, a computer-implemented method of executing an enterprise application comprises: receiving, by a computer, an external request for a service provided by a runtime engine of the enterprise application; selecting, by a computer, a script from a plurality of scripts saved on a database based on the external request; referencing, by the computer, one or more tags stored in a tag library saved on the database that are called by the script, wherein the tags in the tag library define commands of the plurality of scripts and call one or more granular services of the enterprise application; loading, by a computer, the selected script and the tags referenced by the selected script; and executing, by a computer, instructions of the script to provide the service requested by the external request, wherein the selected script is updated in the database after executing instructions of the script.

In another embodiment, a computer-implemented method of updating an enterprise application comprises: deploying, by a computer, a runtime engine of the enterprise application; storing, by a computer, a script and a tag library, wherein the script defines a workflow of the enterprise application when loaded by the runtime engine, and the tag library comprises tags that define commands executed by the script to call and control granular services; executing, by a computer, the script using the runtime engine to perform a first workflow; changing, by a computer, the script; uploading, by a computer, the changed script to the database; and executing, by a computer, the changed script using the runtime engine to perform a second workflow that is different than the first workflow.

In another embodiment, a computer program product for executing an enterprise application comprises a non-transient computer readable medium having a computer readable program, wherein the computer readable program includes a runtime engine that when executed on a processor causes a computer to: receive an external request for a service provided by the enterprise application; select a script from a plurality of scripts saved on a database based on the external request; reference one or more tags stored in a tag library saved on the database that are called by the script, wherein the tags in the tag library define commands of the plurality of scripts and call one or more granular services of the enterprise application; load the selected script and the tags referenced by the selected script; and execute instructions of the script to provide the service requested by the external request.

In another embodiment, a computer-implemented method of fault management for an enterprise application comprises: executing, by a computer, a script by a runtime engine to provide a workflow for the enterprise application, wherein the script includes a limit management feature; determining, by a computer, that an error has occurred during the workflow specified by the script; creating, by a computer, a snapshot of a state of workflow determining that an error occurred and saving the snapshot in a database, wherein the snapshot is a placeholder of a point in the workflow before the error occurred and processed data of the workflow with any updates to the processed data that occurred during or after the error removed; stopping, by a computer, the workflow specified by the script; and moving, by a computer, the snapshot into a fault queue.

In another embodiment, a computer program product for executing a fault management feature of an enterprise application comprises a non-transient computer readable medium having a computer readable program, wherein the computer readable program includes a runtime engine that when executed on a processor causes a computer to: execute a script by a runtime engine to provide a workflow for the enterprise application, wherein the script includes a fault management feature; determine that an error has occurred during the workflow specified by the script; create a snapshot of a state of the workflow determining that an error occurred and saving the snapshot in a database, wherein the snapshot is a placeholder of a point in the workflow before the error occurred and processed data of the workflow with any updates to the processed data that occurred during or after the error removed; stop the workflow specified by the script; and move the snapshot into a fault queue.

In another embodiment, a fault management system comprises: a processor configured to execute a script having a fault management feature to provide a workflow for the enterprise application, determine that an error has occurred during the workflow specified by the script; create a snapshot, saving the snapshot in a database, stop the workflow of the script, and move the snapshot into a fault queue; the database connected to the processor configured to save the snapshot of a state of a workflow in a fault queue, wherein the snapshot is a placeholder of a point in the workflow before an error occurred and processed data of the workflow with any updates to the processed data that occurred during or after the error removed; and a computer readable medium used by the processor to execute commands of the script.

Additional features and advantages of an embodiment will be set forth in the description which follows, and in part will be apparent from the description. The objectives and other advantages of the invention will be realized and attained by the structure particularly pointed out in the exemplary embodiments in the written description and claims hereof as well as the appended drawings.

It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are intended to provide further explanation of the invention as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings constitute a part of this specification and an embodiment of the invention and together with the specification, explain the invention.

FIG. 1 illustrates a logical overview of the domain scripting language based enterprise application architecture according to the exemplary embodiments.

FIG. 2 illustrates the domain scripting language applied to a biometric system according to the exemplary embodiments.

FIG. 3 illustrates a method of changing a script and updating a workflow according to the exemplary embodiments.

FIG. 4 illustrates a fault management method according to the exemplary embodiments.

DETAILED DESCRIPTION

Reference will now be made in detail to the preferred embodiments, examples of which are illustrated in the accompanying drawings.

The embodiments described above are intended to be exemplary. One skilled in the art recognizes that numerous alternative components and embodiments that may be substituted for the particular examples described herein and still fall within the scope of the invention.

FIG. 1 illustrates a logical overview of the domain scripting language (DSL) based enterprise application architecture. As shown in FIG. 1, a client device 110 sends a request to a runtime engine 130 through a web service 120. The client device HO may be a client computer, a server, a smart phone, a tablet or any other computing device capable of sending requests to the runtime engine 130. For example, the runtime engine 130 may run on an application server executing commands from a tangible computer-readable medium. The application server executing the runtime engine 130 may be connected to a network, such as the internet, and may receive the requests from the client device 110 through the network. The runtime engine 130 uses the web service 120 implemented as a server to receive requests over the World Wide Web, and the web service 120 may be omitted or replaced by a different network service if the runtime engine 130 does not receive requests over the World Wide Web. The runtime engine 130 may be the controller of an enterprise application, and the runtime engine 130 organizes and executes business workflow by using a script 140 and tags from a tag library 150. The runtime engine 130 includes a number of modules: a resource selector 132, a resource manager 134, and a script executor 136. The resource selector 130 selects one of a plurality of the scripts 140 based on the request from the client device 110. Once the resource selector 132 selects a proper script 140, the resource selector references the tag library 140 to find definitions for the commands called by the selected script 140. The tags in the tag library 150 define the functionality of the commands specified by the script 140. The resource manager 134 converts the requests from the client device 110 into a format understood by the runtime engine 130 to process the requests. The resource manager 134 may further create execution context for each execution. Each execution may have an independent execution context regardless of the type of request.

For example, a database, which may be an SQL, OQL, XQuery, or any other type of database, stores the scripts 140 and the tag library 150. One database may store both the scripts 140 and the tag library 150, or multiple databases may store the script 140 and the tag library 150. A customer or an information services company may control the database. If an information services company controls the database, the customer may request a change in the business workflow of the enterprise application from the information services company, and the information services company may provide and upload the update of the scripts 140 or the tag library 150 to the database without inconveniencing the customer.

Scripts 140 give the runtime engine business flow. The scripts 140 may be written in a domain scripting language, and definitions for commands called by the domain scripting language may be saved as tags in the tag library 150. The tag library 150 may contain language commands and custom commands. The language commands are not customer specific and define operations across the enterprise application in order to build the domain scripting language. The custom commands may be customer specific and may be used for customer-specific services and services.

The tag library 150 includes tags used by the scripts 140 to call underlying granular services 160, 162, such as plain-old java objects (POJO) or other granular services. In other words, the tags of the tag library 150 give the enterprise application implementation. The granular services 160, 162 interface external services 170, 172 to perform the features of the enterprise application. For example, the external services 170, 172 may be biometric engines that validate a user after receiving biometric data. More specifically, the external services 170, 172 may be an engine and plug-in that receives data from a commercial off-the-shelf product configured to gather biometric information by reading the iris of a person accessing a security check point.

A tag may be written, for example, using Groovy or Smooks, and the tags contain commands necessary to call the granular services 160, 162 that execute the external services 170, 172. Groovy is a programming language for the Java platform commonly used for writing scripts because it natively supports markup languages such as XML, and because a Groovy script is fully parsed, compiled, and generated before execution. Smooks is a framework for building applications for processing XML and non-XML (CSV, EDI, Java) data using Java. Smooks includes a transformation function that performs a wide range of data transforms such as XML to EDI, XML to Java, or EDI to Java. The tools and features of Groovy and Smooks assist in making changes to the scripts 140 and tags quickly. As discussed above, the resource manager 134 translates external requests into a language understood by the runtime engine 130, and existing Smooks tools and features may perform this transformation process.

When the runtime engine 130 receives an external request from the client device 110, the resource manager 132 converts the request into a data format used by the runtime engine 130 to process external requests. For example, the resource manager 132 may convert an XML, EDI, or CSV external request to a java object understood by the runtime engine 130. After the runtime engine 130 processes the request, the resource selector 132 selects a script from a plurality of scripts in the database based on the external request. The resource selector 132 loads the script 140 only once and loads the script 140 into cache memory to increase performance. Once the runtime engine 130 loads a script 140 from the database, the resource selector 132 also determines and receives the tags from the tag library 150 defining commands in the script 140. After receiving, loading, and compiling the script 140 and corresponding tags, the runtime engine 130 executes the script using the script executer 136. The script executor follows the business workflow of the loaded script 140 and follows the definitions of the tags from the tag library 150 to command services 160, 162. To further increase performance, the runtime engine 130 may only store data to a hard disk when there is a manual step or if an error has been raised.

As can be seen in FIG. 1, a plurality of scripts 140 executed by the runtime engine 130 replaces the workflow layer. Thus, changing the workflow of the enterprise application is simple and fast. The workflow or implementation of the enterprise application may be changed simply by changing the scripts 140 and tag library 150 in the database. The runtime engine 130 is not changed or recompiled, but instead the scripts 140 and tags change to update the business workflow of the enterprise application. Also, new workflows may be added by adding a new scripts 140. Also, additional services may be added by adding new definitions to the tag library 150. Making changes to the scripts 140 causes the scripts 140 to use new tags to implement the new functionality. Also, and perhaps more importantly, changes to one tag or script 140 can be made without affecting other tags, services, and scripts 140. After making a change to the scripts 140 or the tag library 150 and uploading the new or updated scripts 140 and tags to the database, the runtime engine 130 executes the new business workflow by loading the new or updated script 140.

FIG. 2 illustrates an exemplary domain scripting language used in a biometric identification enterprise application for illustration purposes. As shown in FIG. 2, a script selector 232 (which may be part of the resource selector 132 of FIG. 1) selects a script from the plurality of scripts 240 based on an external request. A script processor 233 (which may be part of the resource selector 132 of FIG. 1) loads a series of commands from the selected script 240 and compiles the script 240 by referencing tags from the script tag library 250 that define the commands of the script 240. An input data converter 234 (which may be part of the resource manager 134 of FIG. 1) receives the external request and converts the external request, which may be in XML, CSV, or another data format, using a data converting pattern Smooks definition 210. A script context creator and manager 235 creates an execution context for each execution. After the script 240 and tags are loaded, a script executor 236 executes the instructions of the script 240. Following the instructions of the script 240, the script executor 236 may need to implement one or more services from a plurality of services 270, 272, 274 through a service interface 260. The services 270, 272, 274 may call for external services such as a fingerprint biometric plug-in 290, an iris biometric plug-in 291, and a facial recognition biometric 292 that respectively communicate with a fingerprint biometric engine 296, an iris biometric engine 297, and a facial recognition biometric engine 298. Any call to the plug-ins 290, 291, 292 may be made through a plug-in interface 280. Alternatively, the services 270, 272, 274 may reference data stored in a database 220, which may include a plurality of databases 222, 224, 226.

More specifically, the external request may be a request to enroll a new user into the biometric system shown in FIG. 2. The script selector 232 selects the corresponding script 240 that generates the workflow for enrolling a new user. Enrolling a new user may include saving a person's name, address, birthday, etc., in one of the databases 222, 224, 226 using, for example, the application service 270. Enrolling a new user may further include obtaining a biometric reading for the person, such as by uploading a fingerprint reading using the fingerprint plug-in 290 and the fingerprint engine 296 after calling the biometric service 274. After the biometric system collects the fingerprint readings, the biometric data for the user may be saved in one of the databases 222, 224, 226 by, again, using the application service 270. The selected script 240 controls the enrollment business workflow including inputting a person's information (name, birthday, address, etc.) followed by inputting biometric readings for the person. The tag library 250 may define any commands of the services 270, 272, 274 or calls to the external services 290, 291, 292.

As another example, the external request may be a request to verify a user using biometric information. Verifying a user may involve the business flow of collecting a fingerprint reading from a user requesting to be verified, comparing the collected reading with fingerprint data stored in one of the databases 222, 224, 226, and providing access to a secured resource if the collected fingerprint matches a stored fingerprint. These steps, and any intermediary steps necessary to perform user verification, may be controlled by the commands listed in a user verification script 240. The script selector 232 calls the user verification script 240, the script executor 236 performs the instructions of the script 240, and the services 270, 272, 274 called by the script 240 are performed.

The examples above described a situation where only fingerprints were collected to biometrically identify an enrolled user. As a customer's needs change, the customer may decide that fingerprints are inefficient or not providing enough security. As a result, the customer may decide to replace fingerprint biometrics services with iris biometrics services, or decide to add iris biometrics services in addition to existing fingerprint biometric services. In the example where iris biometric services replace fingerprint biometric services, the tags of the tag library 250 simply may be changed so that the iris services 291, 297 are referenced instead of the fingerprint services 290, 296. In the example where iris biometric services 291, 297 are added to existing fingerprint biometric services 290, 296, the scripts 240 may be changed to add in the iris biometric services 291, 297 as part of the workflow. In either case, only the tags and scripts 240 need be updated in the database that saves the scripts 240 and the tag library 240, and the next time the runtime engine 230 calls one of the scripts 240, the runtime engine performs the new and updated workflows.

While the example of a biometric enrollment and verification system has been described for exemplary purposes, those skilled in the art should recognize that the domain scripting language framework can be applied to any enterprise application containing a workflow layer. The scripts and tag library described above may be used to replace the workflow layer of any enterprise application for adaptability and flexibility after deployment. For example, the domain scripting language framework may replace the workflow layer in accounting software for a business, master data management for a government agency, or business process management applications.

FIG. 3 illustrates a method of changing a script and updating a workflow. The method begins in step 302 when a runtime engine of the enterprise application is deployed. Deploying a runtime engine may include the steps of compiling the entire runtime engine and starting the processes of the runtime engine. According to the exemplary embodiments, the goal is to only compile and deploy the runtime engine once in the lifetime of the runtime engine. In step 304, a script and a tag library are stored in a database. The script defines a workflow of the enterprise application when loaded by the runtime engine, and the tag library comprises tags that define commands executed by the script to call and control granular services. After the runtime engine selects a script and downloads the script from the runtime engine, the runtime engine executes the script to perform a first workflow. Subsequent to executing the script, a customer may desire a second workflow that is different than the first workflow. To generate the second workflow, the script controlling the first workflow is changed in step 308. After the script is rewritten, the changed script is uploaded to the database in step 310. Once the new script is uploaded to the database, the runtime engine can select the changed script, load it, and execute the changed script to perform a second workflow that is different than the first workflow in step 312.

While the runtime engine 230 performs the business workflows by using the scripts 240, reliable fault management remains important for accurate data processing and data integrity. To perform fault management, every script 240 may include a feature, which may be called savepoint, that creates a snapshot of the execution that resides in a messaging queue or database in case of execution failures. A snapshot may include all processed data, after removing any updates during or after the error occurred, and a pointer that points a specific point in a workflow before the error occurred. The execution of the workflow may continue from the snapshot point saved in the messaging queue or database after correcting any problems.

The savepoint feature may be a tag included in the tag library 250. FIG. 4 illustrates the process of the savepoint feature. As shown in FIG. 4, the savepoint feature 402 determines if a previous instruction statement contained any errors in step 404. If no error occurs at step 404, the savepoint feature ends in step 420. If any error occurred, savepoint creates a placeholder and a snapshot for the fault message and saves the placeholder in either the messaging queue in step 412 or the database in step 414. The placeholder created in either step 412 or 414 is the snapshot described above. The script may retry the executed step where the fault occurred a configurable number of time, and the job may be moved into a fault queue if the retries fail.

Using the savepoint feature, an engine can stop immediately, and then resume from the point of a fault. When an error occurs, the runtime engine 230 creates a snapshot, identifies and remedies issues, references the placeholder, and continues the workflow from the point pointed to by the placeholder. By implementing fault management this way, a workflow does not need to be completely performed again, and messages and data from the first iteration of the workflow, which had a fault, are not lost.

Further, by using the savepoint feature, the runtime engine 230 can identify faulty equipment if fault messages are becoming numerous at one location in the workflow.

The exemplary embodiments can include one or more computer programs that embody the functions described herein and illustrated in the appended flow charts. However, it should be apparent that there could be many different ways of implementing aspects of the exemplary embodiments in computer programming, and these aspects should not be construed as limited to one set of computer instructions. Further, those skilled in the art will appreciate that one or more acts described herein may be performed by hardware, software, or a combination thereof, as may be embodied in one or more computing systems.

The functionality described herein can be implemented by numerous modules or components that can perform one or multiple functions. Each module or component can be executed by a computer, such as a server, having a non-transitory computer-readable medium and processor. In one alternative, multiple computers may be necessary to implement the functionality of one module or component.

Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or “generating” or “synchronizing” or “outputting” or the like, can refer to the action and processes of a data processing system, or similar electronic device, that manipulates and transforms data represented as physical (electronic) quantities within the system's registers and memories into other data similarly represented as physical quantities within the system's memories or registers or other such information storage, transmission or display devices.

The exemplary embodiments can relate to an apparatus for performing one or more of the functions described herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a machine (e.g. computer) readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs and magnetic-optical disks, read only memories (ROMs), random access memories (RAMS) erasable programmable ROMs (EPROMs), electrically erasable programmable ROMs (EEPROMs), magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a bus.

The exemplary embodiments described herein are described as software executed on at least one server, though it is understood that embodiments can be configured in other ways and retain functionality. The embodiments can be implemented on known devices such as a personal computer, a special purpose computer, cellular telephone, personal digital assistant (“PDA”), a digital camera, a digital tablet, an electronic gaming system, a programmed microprocessor or microcontroller and peripheral integrated circuit element(s), and ASIC or other integrated circuit, a digital signal processor, a hard-wired electronic or logic circuit such as a discrete element circuit, a programmable logic device such as a PLD, PLA, FPGA, PAL, or the like. In general, any device capable of implementing the processes described herein can be used to implement the systems and techniques according to this invention.

It is to be appreciated that the various components of the technology can be located at distant portions of a distributed network and/or the Internet, or within a dedicated secure, unsecured and/or encrypted system. Thus, it should be appreciated that the components of the system can be combined into one or more devices or co-located on a particular node of a distributed network, such as a telecommunications network. As will be appreciated from the description, and for reasons of computational efficiency, the components of the system can be arranged at any location within a distributed network without affecting the operation of the system. Moreover, the components could be embedded in a dedicated machine.

Furthermore, it should be appreciated that the various links connecting the elements can be wired or wireless links, or any combination thereof, or any other known or later developed element(s) that is capable of supplying and/or communicating data to and from the connected elements. The term module as used herein can refer to any known or later developed hardware, software, firmware, or combination thereof that is capable of performing the functionality associated with that element. The terms determine, calculate and compute, and variations thereof, as used herein are used interchangeably and include any type of methodology, process, mathematical operation or technique.

The embodiments described above are intended to be exemplary. Uric skilled in the art recognizes that numerous alternative components and embodiments that may be substituted for the particular examples described herein and still fall within the scope of the invention.

Claims (23)

What is claimed is:
1. A computer-implemented method of executing an enterprise application, the method comprising:
receiving, by a computer, an external request from a client device for a service provided by a runtime engine of the enterprise application, wherein the runtime engine runs on the computer;
automatically selecting, by the computer via the runtime engine, a script from a plurality of scripts saved on a database based on the external request;
referencing, by the computer via the runtime engine, one or more tags stored in a tag library saved on the database that are called by the selected script, wherein the one or more tags in the tag library define commands of the plurality of scripts and call one or more granular services of the enterprise application;
loading, by the computer via the runtime engine, the selected script and the one or more tags referenced by the selected script; and
executing, by the computer via the runtime engine, instructions of the loaded script based on the one or more tags to provide the service to the client device as requested by the external request, wherein the selected script is updated in the database after executing instructions of the loaded script.
2. The computer-implemented method of claim 1, wherein the selected script and the referenced tags are loaded into a cache memory of a computer.
3. The computer-implemented method of claim 1, wherein the selected script is selected by a script selector module of the runtime engine.
4. The computer-implemented method of claim 1, wherein tile external request is transformed into a data format used by the runtime engine by a data converting module of the runtime engine.
5. The computer-implemented method of claim 4, wherein the external request is transformed into a Java Object.
6. The computer-implemented method of claim 1, wherein the tags include language tags defining general operations of the enterprise application and custom commands defining customer-specific commands and services.
7. The computer-implemented method of claim 1, wherein the external request is received through a web service and the external request is sent over the World Wide Web.
8. The computer-implemented method of claim 1, wherein the tags in the tag library are written using Smooks or Groovy.
9. The computer-implemented method of claim 1, wherein the runtime engine stores data to a hard disk only when there is a manual step or when an error is raised.
10. The computer-implemented method of claim 1, wherein the runtime engine is not recompiled or redeployed based on the updating of the selected script.
11. A computer-implemented method of updating an enterprise application, the method comprising:
deploying, by a computer, a runtime engine of the enterprise application, wherein the runtime engine runs on the computer;
retrieving, by the computer via the engine, a script and a tag from one or more databases, wherein the tag is stored in a tag library on the one or more databases, wherein the retrieved script defines a workflow of the enterprise application when the retrieved script is loaded by the runtime engine, and the tag library comprises tags that define commands executed by the script to call and control granular services;
executing, by the computer, the loaded script with the tag using the runtime engine to perform a first workflow;
changing, by the computer, the loaded script after the executing, wherein the changed script is stored in the one or more databases:
retrieving, by the computer via the runtime engine, the changed script from the one or more databases; and
executing, by the computer, the changed script using the runtime engine, without changing or recompiling the runtime engine to execute the changed script form performance of the first workflow, to perform a second workflow that is different than the first workflow, wherein performance of the second workflow is based on a request received by the computer from a client device.
12. The computer implemented method of claim 11, wherein changing the script includes adding steps to the first workflow, removing steps from the first workflow, changing the order of the steps of the first workflow, or changing the granular services called by the first workflow.
13. The computer implemented method of claim 11, further comprising,
changing, by a computer, the tags in the tag library; and
uploading, by a computer, the changed tag library.
14. The computer-implemented method of claim 13, wherein changing the tags in the tag library includes changing the granular services called by a command, adding a command, removing a command, or changing how a granular service is commanded.
15. A computer program product for executing an enterprise application comprising a non-transient computer readable medium having a computer readable program, wherein the computer readable program includes a runtime engine that when executed on a processor causes a computer to:
receive an external request from a client device for a service provided by the enterprise application, wherein the runtime engine runs on the computer;
automatically select, via the runtime engine, a script form a plurality of scripts saved on a database based on the external request;
reference, via the runtime engine, one or more tags stored in a tag library saved on the database that are called by the selected script, wherein the one or more tags in the tag library define commands of the plurality of scripts and call one or more granular services of the enterprise application;
load, via the runtime engine, the selected script and the one or more tags referenced by the selected script; and
execute, via the runtime engine, instructions of the loaded script to provide the service to the client device as requested by the external request.
16. The computer program product of claim 15, wherein the selected script and the referenced tags are loaded into a cache memory of a computer.
17. The computer program product of claim 15, wherein the selected script is selected by a script selector module of the runtime engine.
18. The computer program product of claim 15, wherein the external request is transformed into a data format used by the runtime engine by a data converting module of the runtime engine.
19. The computer program product of claim 18, wherein the external request is transformed into a Java Object.
20. The computer program product of claim 15, wherein the tags include language tags defining general operations of the enterprise application and custom commands defining customer-specific commands and services.
21. The computer program product of claim 15, wherein the external request is received through a web service and the external request is sent over the World Wide Web.
22. The computer program product of claim 15, wherein the tags in the tag library are written using Smooks or Groovy.
23. The computer program product of claim 15, wherein the runtime engine stores data to a hard disk only when there is a manual step or when an error is raised.
US13/744,853 2013-01-18 2013-01-18 Domain scripting language framework for service and system integration Active US9384020B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US13/744,853 US9384020B2 (en) 2013-01-18 2013-01-18 Domain scripting language framework for service and system integration
US13/744,882 US20140208169A1 (en) 2013-01-18 2013-01-18 Domain scripting language framework for service and system integration

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/744,853 US9384020B2 (en) 2013-01-18 2013-01-18 Domain scripting language framework for service and system integration

Publications (2)

Publication Number Publication Date
US20140208294A1 US20140208294A1 (en) 2014-07-24
US9384020B2 true US9384020B2 (en) 2016-07-05

Family

ID=51208790

Family Applications (1)

Application Number Title Priority Date Filing Date
US13/744,853 Active US9384020B2 (en) 2013-01-18 2013-01-18 Domain scripting language framework for service and system integration

Country Status (1)

Country Link
US (1) US9384020B2 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2951678A4 (en) * 2013-01-31 2016-07-20 Hewlett Packard Development Co Remotely executing operations of an application using a schema that provides for executable scripts in a nodal hierarchy
EA201301239A1 (en) * 2013-10-28 2015-04-30 Общество С Ограниченной Ответственностью "Параллелз" Method for placing a network site using virtual hosting
GB2536402A (en) * 2014-11-14 2016-09-21 Mastercard International Inc Workflow integration
CN106250104B (en) * 2015-06-09 2019-08-20 阿里巴巴集团控股有限公司 A kind of remote operating system for server, method and device
TW201733314A (en) * 2016-03-10 2017-09-16 群暉科技股份有限公司 Method for executing request and associated server

Citations (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590277A (en) 1994-06-22 1996-12-31 Lucent Technologies Inc. Progressive retry method and apparatus for software failure recovery in multi-process message-passing applications
US5694617A (en) 1995-03-31 1997-12-02 International Business Machines Corporation System for prioritizing quiesce requests and recovering from a quiescent state in a multiprocessing system with a milli-mode operation
US5715386A (en) 1992-09-30 1998-02-03 Lucent Technologies Inc. Apparatus and methods for software rejuvenation
US20020120746A1 (en) * 2001-02-23 2002-08-29 Basavaraj Patil Method and system for providing a service
US20040003130A1 (en) * 2002-06-28 2004-01-01 International Business Machines Corporation Systems and methods for accessing web services using a tag library
US20040078373A1 (en) 1998-08-24 2004-04-22 Adel Ghoneimy Workflow system and method
US20040268312A1 (en) * 2003-05-30 2004-12-30 International Business Machines Corporation Application development support, component invocation monitoring, and data processing
US20050177066A1 (en) * 2004-01-07 2005-08-11 Vered Aharonson Neurological and/or psychological tester
US20050256826A1 (en) 2004-05-13 2005-11-17 International Business Machines Corporation Component model for batch computing in a distributed object environment
US20050257227A1 (en) * 2004-05-14 2005-11-17 Bea Systems, Inc. System and method for utilizing a common framework for portal administration tools
US20060095835A1 (en) * 2004-11-01 2006-05-04 William Kennedy System and method for the modular generation of markup language
US20060200439A1 (en) * 2005-03-07 2006-09-07 Computer Associates Think, Inc. System and method for data manipulation
US20060200753A1 (en) * 2005-03-07 2006-09-07 Rishi Bhatia System and method for providing data manipulation as a web service
US20090037881A1 (en) * 2007-07-31 2009-02-05 Caterpillar Inc. Systems and methods for testing the functionality of a web-based application
US7523447B1 (en) * 2003-09-24 2009-04-21 Avaya Inc. Configurator using markup language
US7546428B1 (en) 2004-07-01 2009-06-09 Emc Corporation Computer architecture for managing replication of data in a data storage environment
US20090307763A1 (en) * 2008-06-05 2009-12-10 Fiberlink Communications Corporation Automated Test Management System and Method
US7634687B2 (en) 2005-01-13 2009-12-15 Microsoft Corporation Checkpoint restart system and method
US20110179398A1 (en) * 2010-01-15 2011-07-21 Incontact, Inc. Systems and methods for per-action compiling in contact handling systems
US20110178980A1 (en) * 2002-05-22 2011-07-21 Pitney Bowes Inc. Data source independent interface for an electronic bill presentment and payment system
US20110246725A1 (en) 2010-03-31 2011-10-06 Moir Mark S System and Method for Committing Results of a Software Transaction Using a Hardware Transaction
US20110289484A1 (en) * 2010-05-19 2011-11-24 Also Energy Method and System for Script Processing for Web-Based Applications
US20110301996A1 (en) * 2010-06-03 2011-12-08 International Business Machines Corporation Automating workflow participation
US20120023484A1 (en) * 2010-07-22 2012-01-26 Sap Ag Automation of testing for user interface applications
US8161492B2 (en) 2008-04-15 2012-04-17 Microsoft Corporation Continuation based runtimes in transactions
US20120159439A1 (en) * 2009-12-14 2012-06-21 International Business Machines Corporation Using appropriate level of code to be executed in runtime environment using metadata describing versions of resources being used by code
US20120291005A1 (en) * 2011-05-12 2012-11-15 Google Inc. Compilation and Injection of Scripts in a Rapid Application Development
US8365015B1 (en) 2010-08-09 2013-01-29 Nvidia Corporation Memory-based error recovery
US20130159974A1 (en) * 2011-12-15 2013-06-20 The Boeing Company Automated Framework For Dynamically Creating Test Scripts for Software Testing
US20130238970A1 (en) * 2012-03-07 2013-09-12 Google Inc. Uniquely Identifying Script Files
US20130275806A1 (en) 2012-04-16 2013-10-17 International Business Machines Corporation Reconfigurable recovery modes in high availability processors
US8595693B2 (en) 2008-07-29 2013-11-26 International Business Machines Corporation Model driven deployment of composite applications
US20130346947A1 (en) * 2012-06-25 2013-12-26 International Business Machines Corporation Comprehensively testing functionality of a computer program based on program code changes
US8635594B1 (en) * 2006-03-30 2014-01-21 Emc Corporation Script language for storage management operations
US8745634B2 (en) 2010-10-15 2014-06-03 Invensys Systems, Inc. System and method for integrated workflow scaling
US8839107B2 (en) * 2008-05-13 2014-09-16 International Business Machines Corporation Context based script generation
US20140279919A1 (en) 2013-03-15 2014-09-18 Silicon Graphics International Corp. Hierarchical system manager rollback

Patent Citations (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715386A (en) 1992-09-30 1998-02-03 Lucent Technologies Inc. Apparatus and methods for software rejuvenation
US5590277A (en) 1994-06-22 1996-12-31 Lucent Technologies Inc. Progressive retry method and apparatus for software failure recovery in multi-process message-passing applications
US5694617A (en) 1995-03-31 1997-12-02 International Business Machines Corporation System for prioritizing quiesce requests and recovering from a quiescent state in a multiprocessing system with a milli-mode operation
US7403948B2 (en) 1998-08-24 2008-07-22 Fujitsu Limited Workflow system and method
US20040078373A1 (en) 1998-08-24 2004-04-22 Adel Ghoneimy Workflow system and method
US20020120746A1 (en) * 2001-02-23 2002-08-29 Basavaraj Patil Method and system for providing a service
US20110178980A1 (en) * 2002-05-22 2011-07-21 Pitney Bowes Inc. Data source independent interface for an electronic bill presentment and payment system
US20040003130A1 (en) * 2002-06-28 2004-01-01 International Business Machines Corporation Systems and methods for accessing web services using a tag library
US20040268312A1 (en) * 2003-05-30 2004-12-30 International Business Machines Corporation Application development support, component invocation monitoring, and data processing
US7523447B1 (en) * 2003-09-24 2009-04-21 Avaya Inc. Configurator using markup language
US20050177066A1 (en) * 2004-01-07 2005-08-11 Vered Aharonson Neurological and/or psychological tester
US20050256826A1 (en) 2004-05-13 2005-11-17 International Business Machines Corporation Component model for batch computing in a distributed object environment
US8024733B2 (en) 2004-05-13 2011-09-20 International Business Machines Corporation Component model for batch computing in a distributed object environment
US20050257227A1 (en) * 2004-05-14 2005-11-17 Bea Systems, Inc. System and method for utilizing a common framework for portal administration tools
US7546428B1 (en) 2004-07-01 2009-06-09 Emc Corporation Computer architecture for managing replication of data in a data storage environment
US20060095835A1 (en) * 2004-11-01 2006-05-04 William Kennedy System and method for the modular generation of markup language
US7634687B2 (en) 2005-01-13 2009-12-15 Microsoft Corporation Checkpoint restart system and method
US20060200439A1 (en) * 2005-03-07 2006-09-07 Computer Associates Think, Inc. System and method for data manipulation
US20060200753A1 (en) * 2005-03-07 2006-09-07 Rishi Bhatia System and method for providing data manipulation as a web service
US8635594B1 (en) * 2006-03-30 2014-01-21 Emc Corporation Script language for storage management operations
US20090037881A1 (en) * 2007-07-31 2009-02-05 Caterpillar Inc. Systems and methods for testing the functionality of a web-based application
US8161492B2 (en) 2008-04-15 2012-04-17 Microsoft Corporation Continuation based runtimes in transactions
US8839107B2 (en) * 2008-05-13 2014-09-16 International Business Machines Corporation Context based script generation
US20090307763A1 (en) * 2008-06-05 2009-12-10 Fiberlink Communications Corporation Automated Test Management System and Method
US8595693B2 (en) 2008-07-29 2013-11-26 International Business Machines Corporation Model driven deployment of composite applications
US20120159439A1 (en) * 2009-12-14 2012-06-21 International Business Machines Corporation Using appropriate level of code to be executed in runtime environment using metadata describing versions of resources being used by code
US20110179398A1 (en) * 2010-01-15 2011-07-21 Incontact, Inc. Systems and methods for per-action compiling in contact handling systems
US20110246725A1 (en) 2010-03-31 2011-10-06 Moir Mark S System and Method for Committing Results of a Software Transaction Using a Hardware Transaction
US20110289484A1 (en) * 2010-05-19 2011-11-24 Also Energy Method and System for Script Processing for Web-Based Applications
US20110301996A1 (en) * 2010-06-03 2011-12-08 International Business Machines Corporation Automating workflow participation
US20120023484A1 (en) * 2010-07-22 2012-01-26 Sap Ag Automation of testing for user interface applications
US8589883B2 (en) * 2010-07-22 2013-11-19 Sap Ag Automation of testing for user interface applications
US8365015B1 (en) 2010-08-09 2013-01-29 Nvidia Corporation Memory-based error recovery
US8745634B2 (en) 2010-10-15 2014-06-03 Invensys Systems, Inc. System and method for integrated workflow scaling
US20120291005A1 (en) * 2011-05-12 2012-11-15 Google Inc. Compilation and Injection of Scripts in a Rapid Application Development
US20130159974A1 (en) * 2011-12-15 2013-06-20 The Boeing Company Automated Framework For Dynamically Creating Test Scripts for Software Testing
US20130238970A1 (en) * 2012-03-07 2013-09-12 Google Inc. Uniquely Identifying Script Files
US20130275806A1 (en) 2012-04-16 2013-10-17 International Business Machines Corporation Reconfigurable recovery modes in high availability processors
US20130346947A1 (en) * 2012-06-25 2013-12-26 International Business Machines Corporation Comprehensively testing functionality of a computer program based on program code changes
US20140279919A1 (en) 2013-03-15 2014-09-18 Silicon Graphics International Corp. Hierarchical system manager rollback

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Anders Moller et al., Interactive Web Services with Java, Apr. 2002, [Retrieved on Mar. 13, 2016]. Retrieved from the internet: <URL: http://www.brics.dk/NS/02/1/BRICS-NS-02-1.pdf> 102 Pages (1-102). *
Anders Moller et al., Interactive Web Services with Java, Apr. 2002, [Retrieved on Mar. 13, 2016]. Retrieved from the internet: 102 Pages (1-102). *
Changtao Quet al., A Collaborative Courseware Generating System Based on WEBDAV, XML, and JSP, 2001, [Retrieved on Mar. 13, 2016]. Retrieved from the internet: <URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=943898> 2 Pages (197-198). *
Changtao Quet al., A Collaborative Courseware Generating System Based on WEBDAV, XML, and JSP, 2001, [Retrieved on Mar. 13, 2016]. Retrieved from the internet: 2 Pages (197-198). *

Also Published As

Publication number Publication date
US20140208294A1 (en) 2014-07-24

Similar Documents

Publication Publication Date Title
US9760366B2 (en) Maintaining deployment pipelines for a production computing service using live pipeline templates
US20120324417A1 (en) Systems and methods for incremental software development
US20080086660A1 (en) Test data management
US10261776B2 (en) Automated deployment and servicing of distributed applications
KR20150096312A (en) Telemetry system for a cloud synchronization system
US20080295085A1 (en) Integrated code review tool
US9317410B2 (en) Testing functional correctness and idempotence of software automation scripts
US20080244565A1 (en) Dynamic software installation and configuration
RU2488166C2 (en) Service-oriented conveyor-based architecture
US20090094450A1 (en) Firmware image update and management
US20120167053A1 (en) Targeting code sections for correcting computer program product defects using records of a defect tracking system
US8166448B2 (en) Rapid development of distributed web service
US9910743B2 (en) Method, system and device for validating repair files and repairing corrupt software
US8683446B2 (en) Generation of test cases for functional testing of applications
CN100468356C (en) Test case inheritance controlled via attributes
US9355017B2 (en) Automated error checking system for a software application and method therefor
US20150169434A1 (en) White-box testing systems and/or methods in web applications
US20110145643A1 (en) Reproducible test framework for randomized stress test
US8983935B2 (en) Methods for utilizing a javascript emulator in a web content proxy server and devices thereof
US8832028B2 (en) Database cloning
US7937622B2 (en) Method and system for autonomic target testing
EP2420931A1 (en) Solving hybrid constraints to generate test cases for validating a software module
US9182964B2 (en) System and method for deploying software into a computing environment
TW201019149A (en) Method and apparatus for merging EDA coverage logs of coverage data
KR101331935B1 (en) Method and system of fault diagnosis and repair using based-on tracepoint

Legal Events

Date Code Title Description
AS Assignment

Owner name: UNISYS CORPORATION, PENNSYLVANIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SRIKANTAIAH, SIDDARAJU;REEL/FRAME:038411/0726

Effective date: 20130120

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT,

Free format text: SECURITY INTEREST;ASSIGNOR:UNISYS CORPORATION;REEL/FRAME:040938/0907

Effective date: 20170103

AS Assignment

Owner name: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT,

Free format text: SECURITY INTEREST;ASSIGNOR:UNISYS CORPORATION;REEL/FRAME:041227/0490

Effective date: 20170103

AS Assignment

Owner name: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATE

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:UNISYS CORPORATION;REEL/FRAME:042354/0001

Effective date: 20170417

AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT

Free format text: SECURITY INTEREST;ASSIGNOR:UNISYS CORPORATION;REEL/FRAME:044144/0081

Effective date: 20171005

AS Assignment

Owner name: UNISYS CORPORATION, PENNSYLVANIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:WELLS FARGO BANK, NATIONAL ASSOCIATION;REEL/FRAME:044416/0114

Effective date: 20171005