The present disclosure is directed, in general, to cloud computing environments.
Cloud computing means Internet (‘Cloud’) based development and use of computer technology (‘Computing’). It is a style of computing where IT-related capabilities are provided “as a service”, allowing users to access technology-enabled services “in the cloud” without knowledge of, expertise with, or control over the technology infrastructure that supports them. It is a general concept that incorporates software as a service, Web 2.0 and other recent, well-known technology trends, where the common theme is reliance on the Internet for satisfying the computing needs of the users.
The majority of cloud computing infrastructure currently consists of reliable services delivered through next-generation data centers that are built on compute and storage virtualization technologies. The services are accessible anywhere in the world, with The Cloud appearing as a single point of access for all the computing needs of consumers. Commercial offerings need to meet the quality of service requirements of customers and typically offer service level agreements.
Today's problems in cloud computing environments include a lack of a system that is process-driven to provision a cloud-based computing environment, and weak integration between the cloud computing environment and the traditional hosting environment. Another problem concerns the lack of a standardized development platform that exposes development tools and the platforms for developing and deploying in services in the cloud and integrating with traditional hosting environments. Niche Cloud providers tend to lock-in on technology and tools which are not widely adopted hence consumers are locked into specific cloud providers, making switching providers require a complete rewrite and significant cost.
A disclosed embodiment provides a data processing system comprising a processor and accessible memory, the data processing system implementing an integrated development engine configured to automatically create and provision a computing environment in a network cloud environment. In some embodiments, the integrated development engine interacts with a user via a graphical user interface to create applications for the network cloud environment. In some embodiments, the integrated development engine uses a markup language to define functions according to Expressions, Actions and Statements categories.
The foregoing has outlined rather broadly the features and technical advantages of the present disclosure so that those skilled in the art may better understand the detailed description that follows. Additional features and advantages of the disclosure will be described hereinafter that form the subject of the claims. Those skilled in the art will appreciate that they may readily use the conception and the specific embodiment disclosed as a basis for modifying or designing other structures for carrying out the same purposes of the present disclosure. Those skilled in the art will also realize that such equivalent constructions do not depart from the spirit and scope of the disclosure in its broadest form.
Before undertaking the DETAILED DESCRIPTION below, it may be advantageous to set forth definitions of certain words or phrases used throughout this patent document: the terms “include” and “comprise,” as well as derivatives thereof, mean inclusion without limitation; the term “or” is inclusive, meaning and/or; the phrases “associated with” and “associated therewith,” as well as derivatives thereof, may mean to include, be included within, interconnect with, contain, be contained within, connect to or with, couple to or with, be communicable with, cooperate with, interleave, juxtapose, be proximate to, be bound to or with, have, have a property of, or the like; and the term “controller” means any device, system or part thereof that controls at least one operation, whether such a device is implemented in hardware, firmware, software or some combination of at least two of the same. It should be noted that the functionality associated with any particular controller may be centralized or distributed, whether locally or remotely. Definitions for certain words and phrases are provided throughout this patent document, and those of ordinary skill in the art will understand that such definitions apply in many, if not most, instances to prior as well as future uses of such defined words and phrases.
For a more complete understanding of the present disclosure, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, wherein like numbers designate like objects, and in which:
Disclosed embodiments include an Integrated Development Engine (IDE) that can automatically create and provision a computing environment in the cloud. Various disclosed embodiments provide an Integrated Development Engine (IDE) to develop applications that can be hosted and integrated to legacy environments. The IDE and the system can be implemented as described herein, and by using standard tools, e.g., XML. Security specifications can be captured and enforced using a Security Assertion Markup Language (SAML).
Other peripherals, such as local area network (LAN)/Wide Area Network/Wireless (e.g. WiFi) adapter 112, may also be connected to local system bus 106. Expansion bus interface 114 connects local system bus 106 to input/output (I/O) bus 116. I/O bus 116 is connected to keyboard/mouse adapter 118, disk controller 120, and I/O adapter 122. Disk controller 120 can be connected to a storage 126, which can be any suitable machine usable or machine readable storage medium, including but not limited to nonvolatile, hard-coded type mediums such as read only memories (ROMs) or erasable, electrically programmable read only memories (EEPROMs), magnetic tape storage, and user-recordable type mediums such as floppy disks, hard disk drives and compact disk read only memories (CD-ROMs) or digital versatile disks (DVDs), and other known optical, electrical, or magnetic storage devices.
Also connected to I/O bus 116 in the example shown is audio adapter 124, to which speakers (not shown) may be connected for playing sounds. Keyboard/mouse adapter 118 provides a connection for a pointing device (not shown), such as a mouse, trackball, trackpointer, etc.
Those of ordinary skill in the art will appreciate that the hardware depicted in
A data processing system in accordance with an embodiment of the present disclosure includes an operating system employing a graphical user interface (GUI). The operating system permits multiple display windows to be presented in the graphical user interface simultaneously, with each display window providing an interface to a different application or to a different instance of the same application. A cursor in the graphical user interface may be manipulated by a user through the pointing device. The position of the cursor may be changed and/or an event, such as clicking a mouse button, generated to actuate a desired response.
One of various commercial operating systems, such as a version of Microsoft Windows™, a product of Microsoft Corporation located in Redmond, Wash. may be employed if suitably modified. The operating system is modified or created in accordance with the present disclosure as described. In other embodiments, the operating system provisioned can range from LINUX, SUN OS, Microsoft Windows, or others. The markup language used in some embodiments enables the system to be OS and machine independent during provisioning and runtime.
LAN/WAN/Wireless adapter 112 can be connected to a network 130 (not a part of data processing system 100), which can be any public or private data processing system network or combination of networks, as known to those of skill in the art, including the Internet. Data processing system 100 can communicate over network 130 with server system 140, which is also not part of data processing system 100, but can be implemented, for example, as a separate data processing system 100.
The Integrated Development Engine (IDE) disclosed herein enables a set of actions, verbs, expressions, and configuration parameters to create and host custom applications in cloud computing environment. The IDE enables the developers to drag-and-drop actions/verbs/expressions/configuration parameters using a graphical user interface to create and host applications. The IDE interacts with a user via a graphical user interface to create applications for the network cloud environment. In some embodiments, the disclosed application itself includes a GUImade up of windows, forms, and controls, such as text fields, tabular forms, labels, etc. These controls are drag and drop capable as well. In some embodiments, the application can be rich or web forms. In specific embodiments, the application shows rich windows applications, and in some embodiments, the implementation could be implemented using JAVA Swing or MICROSOFT XAML techniques.
In various embodiments, the IDE facilitates the utilization of restricted programming concepts that empowers developers to utilize cloud, enhances a limited set of core functionalities, and provides constructs that can be built on top of Data Center Markup Language (DCML) for hosting platforms based on how the platforms are be provisioned.
Point solutions 340 can be user (custom applications) or Commercial Off the Shelf (COTS) applications or custom solutions and use the adapter development kit to create custom adapters for interfacing with point solutions.
In various embodiments, the runtime environment includes all of the above, possibly excepting the IDE, plus a facility to specify both service management and service delivery aspects. In some embodiments, the service delivery and management relates to an ITIL framework, which is metadata driven to specify runtime parameters such as high-availability, disaster recovery, how to scale, etc. These are interpreted by the engine at runtime to modify the attributes of the provisioned environment that houses the application that is deployed.
Various embodiments provide reuse of business process outsourcing (BPO), hardware, and applications across a multi-tenancy cloud system, and allow meta-data verbs to dictate the runtime hosting environment provisioning, e.g., classified/unclassified, disaster recovery and high availability, etc. Various embodiments provide a mechanism to address release and change management, and provides basic constructs provide services on both very large and small scale. The XML construct provides all the functionality required for hosting without acquiring new services for service provisioning.
In disclosed embodiments, objects are defined and created for all instances of data manipulation. A serializer then converts/translates to an XML format before it is sent as message for intermediaries. Upon receiving the message at the recipient end, the message action handler converts/translates XML message to back to the object and invokes methods within the object to perform action specified. Disclosed embodiments include both a serializer and de-serializer part of engine. These components complement each other, and this is similar to the integration server.
The IDE uses a markup language to define functions according to Expressions, Actions and Statements categories to define a programming language construct; these are created part of call-back as drag-drop from the IDE and converted back to objects to execute the commands at runtime. The lowest common denominator is statement, followed by statement, followed by action. Combination of action/statement/verb is called as task, series of tasks is referred as job and series of jobs is grouped as jobsession. This method is employed for reuse, better error handling and modular constructs. For example: On file creation on specific directory perform an action could be an example for integration from UI to COTS or custom application hosted in cloud environment. In this approach it is integration based on file creation instead of scheduled. In the integration framework, for the sake of clarity, the job engine is classified under each of the Expressions, Actions and Statements categories.
Actions: An “action” is defines as whenever one has to perform a particular operation such as copy a file or delete a file. The supported actions are: Copy, Delete, Rename, Execute, End Job, End Session, Fail, Pause, Succeed, System, Zip, and UnZip.
Various Actions are briefly described below (Unless otherwise specified all filenames are in URL format, e.g. http://):
Copy: Copy source=filename, destination=filename.
Delete: Delete source=filename
Rename: Rename source=file, destination=filename
Execute: Execute application=notepad, +others
End Job: Abruptly or conditionally End a job with failure
End Job Session: Abruptly or conditionally End a job session
Fail: Forcefully fail an action [for testing only, not implemented in job editor]
Pause: Pause x seconds
Succeed: Forcefully make an action exit with success, for testing purposes.
Zip: Zip source=filename or wildcard path, destination=filename
UnZip: UnZip source=filename, destination=path
In various embodiments, a user does not have to worry about syntax or parameters required for every action since these constructs and the XML are created from the GUI. IDE 241 is configured to create constructs and executable code as described herein through an interaction with a user using a graphical user interface. See the example described above for integration.
Adding: The following will describe adding a new action called CreateFile.
Step 1: One would create a CreateFileAction class in the Actions folder. CreateFile will be derived from ActionBase and will expose the override Run Method:
Expressions: Whenever one has to perform a particular operation, such as conditional delete or use of a dynamic variable during execution, an expression is used and evaluated. An expression factory evaluates expressions at run time. In various embodiments, the supported Expressions are: FileExists, VariableExpression, LastActionSucceeded.
Statements: A statement is used whenever one has to perform a particular operation such as conditional copy or conditional execution of a step, such as using “If then else” or “while” constructs. Statements provide a way to group and execute steps via “If—Then—Else” and “While” constructs. In disclosed embodiments, the statements include the statements described below. The syntax of statements and expressions are similar to other programming language constructs, with the exception that various embodiments use XML representation of it within the engine.
IF Statement: Allows evaluation of an expression and to group true and false steps.
A While expression loops while the expression evaluates to true, and groups true statements or tasks together.
One can combine Expressions in statements but not actions.
A Job is a collection of discrete actions, expressions, or statements, or collection of actions, expressions, and statements. A Job Session is implemented as a collection of jobs. The Job Session code is also capable of including actions, expressions and statements in a session, outside of a job. A run method is illustrated below. “Task” is used above to provide a better understanding for readers, but “Job” is also used herein. As used below, JobContext is an instance of all the variables that are at specific state during runtime execution. Get/set are properties as indicated. Critical defines whether the step is critical to the completion. Some jobs are not critical; the system may not care if there is no file when listening for file creation event)
All actions are derived from ActionBase. Action base implements IAction and abstracts the Run Method. Therefore, the derived class should implement the Run method. ActionBase implements a handful of public methods so that the derived classes do not need to implement them, unless it needs to override those methods:
As illustrated above, all derived Actions only have to implement the Run Method, since it is abstracted, otherwise the compiler will not compile the new action. One simple action. FailAction, is illustrated below:
Adapter specifications for creating custom adapters are interface based so writing adapters is very simple. A sample XML construct for Visualization (Similar to XAML) is illustrated below:
A sample XML construct for BPM/Orchestration is illustrated below: StepID is a sequencer that indicates in what order to execute the jobs or statements depending on the context. Other XML fragments indicated by the exemplary code below will be understood by those of skill in the art, or is not essential for an understanding of the claimed inventions.
A sample XML construct for ESB/Integration is illustrated below:
A sample XML construct for Messaging is illustrated below:
A sample XML construct for Scheduling, in accordance with disclosed embodiments, is illustrated below:
Those skilled in the art will recognize that, for simplicity and clarity, the full structure and operation of all data processing systems suitable for use with the present disclosure is not being depicted or described herein. Instead, only so much of a data processing system as is unique to the present disclosure or necessary for an understanding of the present disclosure is depicted and described. The remainder of the construction and operation of data processing system 100 may conform to any of the various current implementations and practices known in the art.
It is important to note that while the disclosure includes a description in the context of a fully functional system, those skilled in the art will appreciate that at least portions of the mechanism of the present disclosure are capable of being distributed in the form of a instructions contained within a machine usable medium in any of a variety of forms, and that the present disclosure applies equally regardless of the particular type of instruction or signal bearing medium utilized to actually carry out the distribution. Examples of machine usable or machine readable mediums include: nonvolatile, hard-coded type mediums such as read only memories (ROMs) or erasable, electrically programmable read only memories (EEPROMs), and user-recordable type mediums such as floppy disks, hard disk drives and compact disk read only memories (CD-ROMs) or digital versatile disks (DVDs).
Although an exemplary embodiment of the present disclosure has been described in detail, those skilled in the art will understand that various changes, substitutions, variations, and improvements disclosed herein may be made without departing from the spirit and scope of the disclosure in its broadest form.
None of the description in the present application should be read as implying that any particular element, step, or function is an essential element which must be included in the claim scope: the scope of patented subject matter is defined only by the allowed claims. Moreover, none of these claims are intended to invoke paragraph six of 35 USC §112 unless the exact words “means for” are followed by a participle.