The present invention relates to a data processing system, and more particularly, to business processes in Web services and enterprise development environment.
Most enterprise infrastructures, such as Java™ 2 Platform, Enterprise Edition (J2EE™) or Microsoft .NET™, provide services to users, group a service as a single unit with little reuse. Java and J2EE are trademarks of Sun Microsystems, Inc. in the United States, other countries or both while Microsoft .NET is a trademark of Microsoft Corporation in the United States, other countries or both. These infrastructures lack understand of workflows within the enterprise. This lack of understanding affects the enterprise in terms of its information technology systems, work requirements, and integration with other business partners when better services are required quickly. Current infrastructures often replicate similar services in order to achieve reuse.
With existing enterprise infrastructures, there is no persistence of transactions to a persisted storage, such that when a service failure occurs with a business partner the transactions may be recovered. Even if the transactions are persisted, current enterprise infrastructures fail to distinguish between transactions that are interruptible and non-interruptible. Interruptible transactions are business transactions that are short running and may not require persistence, while non-interruptible transactions are business transactions that are long running and may require persistence. Most of the existing infrastructures fail to classify such type of transactions based upon enterprise feasibility and business requirements. Even if these infrastructures support non-interruptible transactions, these infrastructures are manipulated and customized for the specific environment.
In addition, current enterprise infrastructures that provide service-oriented architectures and business workflow modeling often use proprietary or non-standard workflow formats, legacy applications, specific workflow modeling tools, and perform no correlation between the business workflow activities and the business workflow languages. Currently, a user has to manually translate incoming events or messages into a business workflow event based on the business workflow language.
The present invention is directed in part to automatic discovery and maintenance of business processes in web services and enterprise development environments. The mechanism of the present invention deploys a set of agents to a set of enterprise containers, and provides an event grouper that groups events into a single business activity responsive to detecting events reported by an agent in the set of agents. The present invention also provides an event correlation engine that correlates activities into business workflow language constructs based on a set of rules in a rules engine.
The present invention then provides a business workflow language generator that generates a business workflow based on the business workflow language constructs. Finally, the present invention provides a workflow editor that presents the business workflow in a user interface to the user.
As will be appreciated by one of skill in the art, the present invention may be embodied as a method, system, or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects all generally referred to herein as a “circuit” or “module.” Furthermore, the present invention may take the form of a computer program product on a computer-usable storage medium having computer-usable program code embodied in the medium.
Any suitable computer readable medium may be utilized. The computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a nonexhaustive list) of the computer-readable medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a transmission media such as those supporting the Internet or an intranet, or a magnetic storage device. Note that the computer-usable or computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, or otherwise processed in a suitable manner, if necessary, and then stored in a computer memory. In the context of this document, a computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
Computer program code for carrying out operations of the present invention may be written in an object oriented programming language such as Java7, Smalltalk or C++. However, the computer program code for carrying out operations of the present invention may also be written in conventional procedural programming languages, such as the “C” programming language. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer. In the latter scenario, the remote computer may be connected to the user's computer through a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
The present invention is described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
With reference now to the figures,
In the depicted example, server 104 is connected to network 102 along with storage unit 106. In addition, clients 108, 110, and 112 are connected to network 102. These clients 108, 110, and 112 may be, for example, personal computers or network computers. In the depicted example, server 104 provides data, such as boot files, operating system images, and applications to clients 108-112. Clients 108, 110, and 112 are clients to server 104. Network data processing system 100 may include additional servers, clients, and other devices not shown. In the depicted example, network data processing system 100 is the Internet with network 102 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, government, educational and other computer systems that route data and messages. Of course, network data processing system 100 also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN).
Referring to
Peripheral component interconnect (PCI) bus bridge 214 connected to I/O bus 212 provides an interface to PCI local bus 216. A number of modems may be connected to PCI local bus 216. Typical PCI bus implementations will support four PCI expansion slots or add-in connectors. Communications links to clients 108-112 in
Additional PCI bus bridges 222 and 224 provide interfaces for additional PCI local buses 226 and 228, from which additional modems or network adapters may be supported. In this manner, data processing system 200 allows connections to multiple network computers. A memory-mapped graphics adapter 230 and hard disk 232 may also be connected to I/O bus 212 as depicted, either directly or indirectly.
Those of ordinary skill in the art will appreciate that the hardware depicted in
The data processing system depicted in
With reference now to
An operating system runs on processor 302 and is used to coordinate and provide control of various components within data processing system 300 in
Those of ordinary skill in the art will appreciate that the hardware in
As another example, data processing system 300 may be a stand-alone system configured to be bootable without relying on some type of network communication interfaces As a further example, data processing system 300 may be a personal digital assistant (PDA) device, which is configured with ROM and/or flash ROM in order to provide non-volatile memory for storing operating system files and/or user-generated data.
The depicted example in
The present invention provides a method, an apparatus, and computer instructions for automatic discovery and maintenance of business processes in Web services and enterprise development environments. The processes and mechanisms of the present invention may be implemented as part of an application executed by data processing systems, such as data processing system 200 in
In an illustrative embodiment, the present invention first deploys agents to a variety of enterprise infrastructures in order to gather a list of user function calls over a period of time. The agents are deployed to provide correlation at each domain or enterprise infrastructure. In this way, a distributed set of workflows may be generated at each domain based on the message domains. Since agents are non-intrusive to the underlying domain or enterprise infrastructure, business workflow generation may be accomplished without changes to the existing infrastructures.
Upon gathering a list of user calls, the deployed agents generate events based on a business workflow language. Examples of a business workflow language include business process execution language (BPEL), business process modeling language (BPML), and business process specification schemas (BPSS). The agents in turn report the events to a business workflow generator provided by the present invention. The generator includes an event handler that accepts the events and groups them to a single workflow activity.
The event handler also collects the events from various deployed agents and correlates the events using an existing autonomic correlation technology that generates a sequence of events, parallel events, and repetitive events. In addition to agents and the event handler, the present invention also provides a business workflow language event correlation engine to correlate workflow activities into business workflow language constructs. The correlation is performed based on rules in a rules engine. These rules are written according to the business process definition language of interest and the events are mapped back into the constructs of the language. In one embodiment, the business workflow language event correlation engines are distributed at different domains to achieve scalability. Alternatively, the correlation engine may be centralized, such that transparent business workflows may be developed and used across multiple domains.
The event correlation engine includes a temporal condition handler, which handles temporal conditions of the events, and a collection counting handler, which collects the number of times a particular message or event is handled. Depending on the business workflow language, temporal conditions may arrange events differently. For example, in BPEL, existing system workflows and flow of information maybe mapped to business workflow language activities, such as Receive, Sequence, Flow, While, Pick, and Reply. As to collection counting, the number of times a particular message is handled may be counted to determine the While and Switch activities. Thus, with the temporal condition and collection counting handlers, the present invention discovers and composes business processes from low level work flows while mapping low level correlations to workflow language correlations. For example, a low level correlation can be a series of four events from three servers which map into a single event into the work flow language description. In BPEL, local level correlation can be occurrence of three low-level sequential events which results in one high level sequence mapping.
In one illustrative embodiment, in order to compose business processes from workflow activities, correlation rules have to be defined for the business workflow language. For example, in BPEL, a Sequence rule is defined when various services are called sequentially. A Flow rule is defined when different activities are invoked in parallel and executed randomly during application runtime. A Switch rule is defined to execute a service based on whether a condition of context of the message is met. A While rule is defined for repetition of a particular activity more than once, such that the type of message being invoked can be detected. A Wait is defined for a certain period of time, duration or a date. A Receive rule is defined when a message reaches an enterprise JavaBean™ software program or a Web service (JavaBean is a trademark of Sun Microsystems, Inc. in the United States, other countries or both).
Also, in BPEL, a Reply rule is defined when a corresponding reply exists for a function call that is made to an enterprise JavaBean software program or a Web service. An Invoke rule is defined when an enterprise JavaBean software program or a Web service calls a method asynchronously to place a message into a queue. A Pick rule is defined when a message is invoked after waiting for a certain period of time from outside the network. A Stop rule is defined when a fault message occurs inside an enterprise JavaBean software program or a Web service handler, which results in termination of the business workflow. A Compensation rule is defined when allows a user to call a compensation logic when a fault occurs. A Staff Activity rule is defined when a user is involved in a staff activity. A staff activity may be detected by a correlation pattern with various wait patterns and message formats.
Once the handlers of the business workflow language event correlation engine handle the events, a workflow editor is provided by the present invention to present to the user a business workflow that is generated by the business workflow language generator.
Turning now to
While these transactions involve outside enterprises, each of these business applications use propriety or non-standard workflow formats that are not understood by the outside enterprises. In addition, each of these business applications may use its own workflow modeling tool to model the business workflow. Thus, it would be desirable to have a mechanism that can correlate the transactions into business workflows that can be understood by outside enterprises.
Turning now to
Once the agents collect the events, the agents report events to central business workflow language generator 502. Central business workflow language generator 502 report events in a manner that is easily understandable by the user. In cases where there are too many events for a particular filter, central business workflow language generator 502 has the capability to ignore certain types of events.
In this example, servlet agent 504 may be implemented using a component called filter, which is a type of component according to the Java Servlet Specification version 2.3 available from Sun Microsystems, Inc. A filter dynamically intercepts requests and responses to transform or use information contained in the requests or responses. Filters may be attached to any type of servlets or Java server pages (JSP). The present invention may use filters to get a URL request and the servlet name that was invoked and forward the information to central business workflow language generator 502.
Filters are preferred for a variety of reasons. First, filters can encapsulate recurring tasks in reusable units. In this way, developers may modularize their code using these reusable units. Filters are also more manageable and easy to debug. Second, filters may be used to transform the response from a servlet or a JSP. To form filters, filter mappings are ordered in the order that filter mappings appear in the Web application deployment descriptor. Thus, the filter is placed at the beginning of the Web application deployment descriptor, such that it will be called at the beginning of the servlet patterns.
Since Web services handlers, such as a JAX-RPC handler, intercept SOAP messages at various times during a Web service invocation, a Web service handler may be defined for the server side to intercept messages and define a chain of handler messages that can be invoked prior to the Web service. In this example, Web services agent 506 may be implemented as a JAX-RPC handler programmed to monitor individual request and response messages and report the messages to central business workflow language generator 502. The handler may be used as a transporter for information, including port type, start timing, and invoked operation calls. Web services agent 506 detects when the operation ends and the business process activities that start after ending of the operation.
When deploying Web services agent 506, the Web services handler may be defined in a Web service deployment descriptor. Turning now to
While the enterprise JavaBeans software program specification does not support filters or agents, the specific EJB container implementation do. Thus, EJB filter agent 508 may be deployed by using an EJB callback mechanism that registers a particular generic method with the programming model extensions. The callback mechanism calls back a registered method upon invocation of a specific EJB method in order to report information to central business workflow language generator 502.
Turning now to
Event handler 702 collects events reported by the agents and uses event grouper 710 to group events into a single business workflow language activity. Once the events are grouped, business workflow correlation engine 706 performs a correlation of the business workflow activities to business workflow language constructs based on rules that are defined in rules engine 704. As described above, correlation rules are defined for the business workflow language.
The engine includes a temporal condition handler that handles the activities that are in sequence, in parallel, or repetitive. The engine also includes a collection count handler that counts the number of times a particular activity is handled. After the engine correlates business workflow activities to business workflow language constructs, workflow editor 708 presents the generated workflow to the user.
Turning now to
Business workflow language generator 800 in turn groups the events into business activities, correlates the activities to business workflow language constructs, and presents them to the user. In this way, a transparent service-oriented workflow may be developed and used across multiple platforms. In addition, automatic maintenance of the business processes may be achieved as events collected from various platforms are updated.
Turning now to
Next, agents collect a list of function calls made by the user for a period of time in the containers and reports them to the event handler (step 902). Once the event handler receives events from the agents (step 904), the event grouper classifies or group events into a single activity (step 906). A correlation engine then correlates the activities into workflow language constructs based on rules that are in the rules engine (step 908).
The temporal condition handler maps activities that are in sequence, parallel, or are repetitive (step 910). The condition count handler counts the number of times an activity is handled (step 912). Once the business workflow activities are mapped to business workflow language constructs, the workflow editor presents the workflow generated by the business workflow language generator (step 914) and the process terminates thereafter.
The flowcharts and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems which perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.