U.S. patent application number 10/271244 was filed with the patent office on 2003-05-22 for system and method for invoking business functionality for a workflow.
Invention is credited to Upton, Mitch.
Application Number | 20030097345 10/271244 |
Document ID | / |
Family ID | 26995469 |
Filed Date | 2003-05-22 |
United States Patent
Application |
20030097345 |
Kind Code |
A1 |
Upton, Mitch |
May 22, 2003 |
System and method for invoking business functionality for a
workflow
Abstract
An application view component can represent a business-level
interface to business functionality in an application or enterprise
system. An application view component can be configured for, and
can contain services related to, a single business purpose.
Business-relevant data can be specified in the request document for
these services, and can return business-relevant data in a response
document. An application view component can combine this
business-relevant data with stored metadata necessary for a
resource adapter for the enterprise system. The adapter can take
the combined data and execute a system-level business function. A
business process management component can allow the application
view component to be invoked as a business service. This
description is not intended to be a complete description of, or
limit the scope of, the invention. Other features, aspects, and
objects of the invention can be obtained from a review of the
specification, the figures, and the claims.
Inventors: |
Upton, Mitch; (Highlands
Ranch, CO) |
Correspondence
Address: |
FLIESLER DUBB MEYER & LOVEJOY, LLP
FOUR EMBARCADERO CENTER
SUITE 400
SAN FRANCISCO
CA
94111
US
|
Family ID: |
26995469 |
Appl. No.: |
10/271244 |
Filed: |
October 15, 2002 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
60347919 |
Oct 18, 2001 |
|
|
|
60347901 |
Oct 18, 2001 |
|
|
|
Current U.S.
Class: |
705/401 ;
705/1.1; 705/301 |
Current CPC
Class: |
G06F 2209/544 20130101;
G06F 9/541 20130101; Y10S 707/99945 20130101; G06Q 10/103 20130101;
G06F 9/542 20130101; Y10S 707/99943 20130101 |
Class at
Publication: |
705/401 ;
705/1 |
International
Class: |
G06F 017/60 |
Claims
What is claimed is:
1. A system for managing workflow for application integration,
comprising: an application view component adapted to provide an
interface to a resource for the client application; a resource
adapter adapted to invoke functionality in the resource and expose
that functionality to the application view component; and a process
management component adapted to allow the application view
component to be invoked as a service.
2. A system according to claim 1, wherein: the application view
component is adapted to provide a business-focused interface.
3. A system according to claim 1, wherein: the application view
component is adapted to provide an interface to an enterprise
system for the client application.
4. A system according to claim 1, wherein: the process management
component is a business process management component adapted to
allow the application view component to be invoked as a business
service.
5. A system according to claim 1, wherein: the application view
component is further adapted to provide a business-oriented way to
access data in the resource.
6. A system according to claim 3, wherein: the application view
component is further adapted to define a set of business functions
on the enterprise system.
7. A system according to claim 1, wherein: the application view
component is a stateless session bean.
8. A system according to claim 1, further comprising: a Java
interface to the application view component, the Java interface
allowing a Java application to pass XML to and from the
resource.
9. A system according to claim 3, wherein: the business process
management component is further adapted to provide a GUI-based
environment for designing business process workflows, the workflow
capable of including application view events and services.
10. A system according to claim 1, further comprising: an
enterprise system adapted to receive and send XML in response to a
request from a client application.
11. A system according to claim 1, further comprising: a client
application adapted to make requests.
12. A system according to claim 1, further comprising: a workflow
adapted to call the process management component to invoke the
service.
13. A system according to claim 12, wherein: the workflow includes
a task node capable of calling the process management component to
invoke the service.
14. A system according to claim 12, wherein: the workflow includes
an event node adapted to wait for a response from an asynchronous
instance of the service.
15. A system according to claim 12, wherein: the workflow includes
an event node adapted to wait for an application view event.
16. A system according to claim 12, wherein: the workflow is
adapted to be started by an application view event.
17. A system according to claim 1, further comprising: a process
engine adapted to allow the graphical construction and maintenance
of business processes, the business processes adapted to invoke
functionality in an application through the functionality exposed
by the resource adapter in response to an event generated by the
client application.
18. A system according to claim 1, wherein: the process management
component is adapted to manage a business process to perform tasks
selected from the group consisting of receiving events, selecting a
subset of events, performing complex branched actions, generating
complex messages, and sending the complex messages to application
server clients.
19. A system according to claim 1, wherein: the process management
component is adapted to compile, test, and debug a business
process.
20. A system according to claim 1, wherein: the process management
component is adapted to create a workflow.
21. A method for managing workflow for application integration,
comprising: deploying an application view component for an
enterprise system, the application view component adapted to
provide a business-focused interface to the enterprise system;
defining services and events for the application view such that the
application view can be invoked as a business service; and
designating at least one node in the workflow adapted to invoke the
application view as a business service.
22. A method according to claim 21, further comprising: obtaining
any required business logic for the workflow.
23. A method according to claim 21, further comprising: defining
the workflow using a business process management component.
24. A method for invoking enterprise system functionality from a
workflow, comprising: creating a task node in a workflow;
associating the task node with an application view component for a
particular enterprise system, the application view component
capable of being invoked as a service to expose functionality in
the enterprise system; and invoking the service from the task
node.
25. A method according to claim 24, further comprising: defining a
set of business functions on the enterprise system.
26. A method for invoking business functionality for a workflow,
comprising: passing a request to a business process management
component to invoke a business service for an enterprise system;
invoking an application view component adapted to provide a
business-focused interface to the enterprise system; and exposing
business functionality in the enterprise system to the application
view component using a resource adapter.
27. A method for invoking business functionality for a workflow,
comprising starting a business workflow containing at least one
node; invoking a business service in response to an event triggered
by the node; and exposing business functionality to the business
service.
28. A computer-readable medium, comprising: means for calling a
business service from a workflow; and means for invoking
functionality in an enterprise system and exposing that
functionality through the business service.
29. A computer program product for execution by a server computer
for invoking business functionality, comprising: computer code for
calling a business service from a workflow; and computer code for
invoking functionality in an enterprise system and exposing that
functionality through the business service.
30. A system for invoking business functionality, comprising: means
for calling a business service from a workflow; and means for
invoking functionality in an enterprise system and exposing that
functionality through the business service.
31. A computer system comprising: a processor; object code executed
by said processor, said object code configured to: call a business
service from a workflow; and invoke functionality in an enterprise
system and expose that functionality through the business
service.
32. A computer data signal embodied in a transmission medium,
comprising: a code segment including instructions to call a
business service from a workflow; and a code segment including
instructions to invoke functionality in an enterprise system and
expose that functionality through the business service.
Description
CLAIM OF PRIORITY
[0001] This application claims priority to U.S. Provisional Patent
Application No. 60/347,919, filed Oct. 18, 2001, entitled
"APPLICATION VIEW," as well as Application Ser. No. 60/347,901,
filed Oct. 18, 2001, entitled "EVENT ADAPTER," each of which is
hereby incorporated herein by reference.
CROSS-REFERENCED CASES
[0002] The following applications are cross-referenced and
incorporated herein by reference:
[0003] U.S. patent application No. ______ entitled "APPLICATION
VIEW COMPONENT FOR SYSTEM INTEGRATION," by Mitch Upton, filed Oct.
15, 2002.
[0004] U.S. patent application No. ______ entitled "SYSTEM AND
METHOD FOR PROVIDING A JAVA INTERFACE TO AN APPLICATION VIEW
COMPONENT," by Mitch Upton, filed Oct. 15, 2002.
[0005] U.S. patent application No. ______ entitled "SYSTEM AND
METHOD FOR USING WEB SERVICES WITH AN ENTERPRISE SYSTEM," by Mitch
Upton, filed Oct. 15, 2002.
[0006] U.S. patent application No. ______ entitled "SYSTEM AND
METHOD FOR IMPLEMENTING AN EVENT ADAPTER," by Mitch Upton, filed
Oct. 15, 2002.
[0007] U.S. patent application No. ______ entitled "SYSTEM AND
METHOD USING A CONNECTOR ARCHITECTURE FOR APPLICATION INTEGRATION,"
by Mitch Upton, filed Oct. 15, 2002.
[0008] U.S. patent application No. ______ entitled "SYSTEM AND
METHOD FOR IMPLEMENTING A SCHEMA OBJECT MODEL IN APPLICATION
INTEGRATION," by Mitch Upton, filed Oct. 15, 2002.
[0009] U.S. patent application No. ______ entitled "SYSTEM AND
METHOD UTILIZING AN INTERFACE COMPONENT TO QUERY A DOCUMENT," by
Mitch Upton, filed Oct. 15, 2002.
[0010] U.S. patent application No. entitled "SYSTEM AND METHOD
USING ASYNCHRONOUS MESSAGING FOR APPLICATION INTEGRATION," by Mitch
Upton, filed Oct. 15, 2002.
[0011] U.S. patent application No. entitled "SYSTEMS AND METHODS
FOR INTEGRATION ADAPTER SECURITY," by Mitch Upton, filed Oct. 15,
2002.
[0012] U.S. patent application No. ______ entitled "SYSTEM AND
METHOD FOR IMPLEMENTING A SERVICE ADAPTER," by Mitch Upton, filed
Oct. 15, 2002.
COPYRIGHT NOTICE
[0013] A portion of the disclosure of this patent document contains
material which is subject to copyright protection. The copyright
owner has no objection to the facsimile reproduction by anyone of
the patent document of the patent disclosure, as it appears in the
Patent and Trademark Office patent file or records, but otherwise
reserves all copyright rights whatsoever.
TECHNICAL FIELD
[0014] The invention relates generally to the management of
business processes in integrating applications.
BACKGROUND
[0015] E-commerce has become a major driving factor in the new
economy. To be successful in the long-term, e-commerce will require
many companies to engage in cross-enterprise collaborations. To
achieve cross-enterprise integration, a company must first
integrate its internal applications. Using existing technology and
tools, application integration can be an expensive proposition. No
integration solution exists that is easy to use, affordable, and
based on industry standards. Neither does a solution exist that is
based on an industry standard infrastructure, has universal
connectivity, is capable of massive scalability, and has accessible
business process tools.
[0016] Application integration to this point has been very
inward-focused. Many existing integration systems have not focused
on integrating applications between enterprises. Even when
integration solutions were used for cross-enterprise integration,
the solutions were still narrowly focused and aimed at vertical
markets. This inward focus did little to help companies field
external business-to-consumer and business-to-business
applications, such as applications that can utilize the Internet to
generate revenue and reduce costs. The requirement for
Internet-enabled applications led to the rise of the application
server market. To date, application servers have primarily been
used to host external applications targeted at customers and
partners. Application servers are themselves packaged applications
that, instead of solving a specific problem, are general-purpose
platforms that host vertical solutions.
[0017] The first attempts at application integration were primarily
focused on low-level implementation details such as the format of
the data, the byte ordering between machines, and character
encoding. The focus on low-level data formats was necessary
because, for the first generation of application integration
solutions, there were no widely adopted standards for data encoding
that could be deployed across multiple vertical applications.
[0018] The traditional approach involved connecting individual
systems to, in effect, hardwire the systems together. This approach
can be complex, as connecting different systems can require an
intimate, low-level knowledge of the proprietary technologies of
multiple systems.
[0019] Present integration systems, which have moved away from
"hardwiring" systems together, still suffer from a lack of
standards. Each integration vendor typically provides a proprietary
solution for application integration, message transformation,
message formats, message transport, and routing. Not one of these
systems to date has achieved significant market share to enable its
technologies to become the de-facto standard. This lack of
standards has given packaged application vendors little incentive
to integrate these systems with their. Further, each of these
integration systems or servers has its own proprietary API, such
that packaged application vendors cannot leverage development
beyond a single integration server. This fragmentation of the
integration market has provided little financial incentive for
third parties.
BRIEF SUMMARY
[0020] Systems and methods in accordance with embodiments of the
present invention can allow functionality in an enterprise system
or application to be exposed, such as to a business workflow. An
application view component can be used to provide a
business-focused interface to an enterprise system, such as for a
client application. An application view component can be configured
for, and can contain services related to, a single business
purpose. Business-relevant data can be specified in the request
document for these services, and can return business-relevant data
in a response document. An application view component can combine
this business-relevant data with stored metadata necessary for a
resource adapter for the enterprise system. The adapter can take
the combined data and execute a system-level business function. The
resource adapter can be used to invoke functionality in the
enterprise system and expose that functionality to the application
view component. A business process management component can allow
the application view component to be invoked as a business
service.
[0021] Other features, aspects, and objects of the invention can be
obtained from a review of the specification, the figures, and the
claims.
BRIEF DESCRIPTION OF THE DRAWINGS
[0022] FIG. 1 is a diagram of an integration system that can be
used in accordance with one embodiment of the present
invention.
[0023] FIG. 2 is a diagram of a system including a business process
management component that can be used in accordance with another
embodiment of the invention.
[0024] FIG. 3 shows a method that can be used with the system of
FIG. 2.
[0025] FIG. 4 shows another method that can be used with the
systems of FIGS. 1 and 2.
DETAILED DESCRIPTION
[0026] Application integration components can be used to integrate
a variety of applications and systems, such as Enterprise
Information Systems (EISs). Information technology (IT)
organizations typically utilize several highly-specialized
applications. Without a common integration platform to facilitate
application-level integration, these applications cannot be
integrated without extensive, highly-specialized development
efforts.
[0027] Application integration can utilize adapters to establish an
enterprise-wide, united framework for integrating any current or
future application. Adapters can simplify integration efforts by
allowing each application to be integrated with an application
server, instead of requiring that each application being integrated
with every other application.
[0028] The development and widespread acceptance of standards such
as the Java 2 Platform, Enterprise Edition (J2EE) from Sun
Microsystems, Inc. of Santa Clara, Calif., as well as the
extensible Markup Language (XML), has laid the groundwork for a
standardized approach to the development of these adapters. Perhaps
the most significant of these standards for application integration
is the J2EE Connector architecture. The J2EE Connector architecture
provides a standardized approach for the development of adapters
for all types of applications, from legacy mainframe applications,
such as CICS from IBM, to packaged applications such as PeopleSoft,
Siebel, and SAP. The adoption of such standards enables businesses
to develop adapters that work on any J2EE-compliant application
server, for example.
[0029] Application integration can build on this standardized
approach in an application integration framework by providing a
standards-based architecture for hosting J2EE Connector
architecture-based adapters. Developers can build J2EE Connector
architecture-compliant adapters and deploy these adapters, in the
integration framework, to connect enterprise applications to an
application server.
[0030] These adapters can be used to define business-focused
interfaces to an EIS, the interfaces referred to herein as
"application views" of the respective adapters. An application view
can provide a simple, self-describing, consistent interface to
services and events in an application. Application views can make
use of an adapter for an EIS, making it possible to expose existing
information systems as business services. Unlike adapters, however,
an application view does not require users to have intimate
knowledge of the EIS or the client interface for that EIS, such
that non-programmers or technical analysts can use application
views. An application view can provide a business-oriented way for
business analysts to access enterprise data without worrying about
the programmatic details defined in an adapter. These same users
may be otherwise unable to use an adapter directly, due to a lack
of familiarity with the EIS.
[0031] An application integration component directed at enterprise
application integration can have several primary aspects. If the
functionality of an EIS such as a PeopleSoft system or an SAP
system is to be invoked, an implementation of the J2EE Connector
Architecture can be used. If something occurs inside an EIS system,
such as a trigger going off, an event can be generated. This event
may, in some embodiments, need to be communicated to an external
application. An event architecture in an application integration
component can handle this communication.
[0032] Application Views
[0033] An application view can provide significant value to an
application integration component. An application view can abstract
away much of the complexity in dealing with an application, such as
a backend EIS system. Application views can also simplify the way
in which adapters are accessed. Application views can provide a
layer of abstraction, for example, between an adapter and the EIS
functions exposed by that adapter. Instead of accessing an EIS by
direct programming a user can simply: edit an adapter's application
views, create new application views, or delete any obsolete
application view(s). A layer of abstraction formed by application
views can help non-programmers maintain the services and events
exposed by an adapter. Each application view can be specific to a
single adapter, and can define a set of business functions on that
adapter's EIS. After an adapter is created, a Web-based interface
for the adapter can be used to define application views.
[0034] If an application view is used as a primary user interface
for an adapter, a number of features can be included that are not
commonly found in existing enterprise application integration
technologies. Application views can, for example, use XML as a
common language among applications. Service and event definitions
can be used to expose application capabilities. XML schemas can be
used to define the data for services and events. Bidirectional
communication can also be supported in adapters.
[0035] An application view can be an integral part of an
integration framework. An application view can provide a view of
the application capabilities exposed by an adapter that a user can
customize to meet specific needs. A user can tailor an application
view, for example, for a specific business purpose. As a result,
the application view can provide an effective alternative to the
"one size fits all" approach that many applications provide for the
design of a client interface. An application view can be defined
for only the business or other capabilities that are applicable for
a specific purpose. The capabilities can be customized such as by
naming, describing, and defining the data requirements.
[0036] In one example of a system using a resource adapter and
application view component, shown in FIG. 1, adapters 106, 108, 110
can be developed that allow a client application 100 to communicate
with an Enterprise Information System 104 through the use of an
application view 102. A developer can begin by coding an adapter
that exposes the functionality in the enterprise application that
accesses enterprise data. The functionality the adapter exposes
could, for example, update records in a database using SQL
statements, or could request information from an SAP system using
its BAPI or IDOC interfaces. A business analyst, working with the
developer, can then define an application view of the adapter using
an application view interface.
[0037] An example of a system using a business process management
component is shown in FIG. 2. In this figure, a client application
200 can communicate with an EIS 210 through an integration server
202. The integration server can be, for example, a web server or
application server, and can be included in a cluster or integration
system, represented here by the dotted line. The integration server
can include an application view component 206 and a resource
adapter 208 for the EIS 210. A business process management
component 204 can be included that allows the application view 206
to be invoked as a business service.
[0038] A method for using such a system is shown in FIG. 3. A
request can be passed to a business process management component to
invoke a business service for an enterprise system 300. The request
may not directly invoke the service, but may instead start a
workflow that has a node that will trigger the invoking of the
service. An application view component, which acts as a
business-focused interface to an application or enterprise system,
can then be invoked as a business service, hiding the internal
functionality of the enterprise system 302. That business
functionality can be invoked in the enterprise system and exposed
to the application view component through a resource adapter for
that enterprise system 304.
[0039] In FIG. 4, for example, a workflow is defined for a business
process 400. That workflow can be started, such as by a client
application 402. An event can be triggered by a node in the
workflow, such as an event node or task node 404. A business
service, which can be represented by an application view component,
can be invoked in response to the event 406. The corresponding
business functionality, which may be in an enterprise system, for
example, can then be exposed to the business service 408.
[0040] An application view is an object, which can be implemented
in one embodiment as a stateless session JavaBean. There can be a
Java interface to the application view for the client application.
A Java application can be custom coded to use that object, such as
by passing XML in and receiving XML back. In addition, a business
process management component can be included that allows process
engineers to define workflows, and can allow application views to
be invoked as business services. A workflow can be a graphical
representation of a business process, which can be defined and
modified using, for example, a business process management (BPM)
component such as a BPM plug-in, as well as a business process
engine. In a workflow, a callout can be made to an EIS to get
information such as a customer's credit record. The fact that the
application view is a Java object or enterprise JavaBean can be
hidden from the process and/or designer.
[0041] In application integration, new application views can be
hot-deployed against an existing EIS through a web-based interface.
An application view is hot-deployed when it is deployed with the
system running, without restarting the destination server. A new
customer management tool for SAP, for example, can also be defined
through a web browser.
[0042] Integration Framework
[0043] Application integration can utilize an integration
framework, which can provide a systematic, standards-based
architecture for hosting application views. Features of such a
framework can include application views for exposing application
functions and design-time graphical user interfaces (GUIs), such as
web-based interfaces that can be used for creating application
views. The integration framework can utilize adapters, instead of
"hardwiring" enterprise systems together. Once an adapter is
deployed for an EIS, other components and applications can use that
adapter to access data on the EIS.
[0044] A framework in accordance with one embodiment of the present
invention relies on XML as the standard format for messages. XML
includes XSLT, a standard for transforming XML documents into other
XML documents. XSLT is designed for use as part of XSL, which is a
stylesheet language for XML. In XSLT, an XML document is used to
specify the operations to perform on a class of XML documents in
order to transform the documents' structure and content. An XSLT
transformation can make use of any of the operations built into the
Java programming language, or can make use of custom operations
written either in Java or in native code. An integration framework
allows a business process to invoke an XSLT engine in order to
transform XML messages.
[0045] An integration framework can also rely on standards for
transporting messages such as Java Message Service (JMS) and HTTPS.
JMS is a standard API for interfacing with message transport
systems. Using JMS, a framework can utilize any message transport
mechanism that provides a JMS interface. The J2EE Connector
architecture standard does not specify a message transport
mechanism, but an application integration framework can specify
such a transport mechanism.
[0046] An integration framework can be based on an existing
standard infrastructure, such as an application server that
supports J2EE, JMS, and the J2EE Connector architecture. Using such
a standard infrastructure also provides for high availability and
scalability, such as by clustering and resource pooling. The
framework can provide for universal connectivity by enabling the
construction of XML-based application adapters that can connect to
any legacy and packaged application. An adapter development kit can
be used to allow users such as customers, system integrators, and
packaged application vendors to quickly develop J2EE connector
architecture-compliant and integration framework-based adapters.
The framework can utilize XML, which means that the same data
format can be used for both within- and between-enterprise
integration, since many e-commerce systems use XML as the standard
message format.
[0047] An integration framework can also utilize a business-process
engine to allow non-programmers to graphically construct and
maintain business processes. An integration framework can implement
a common model on top of the J2EE Connector architecture that is
focused on business-level concepts. This model, which can consist
of XML-encoded events and services, allows the management of a
consistent integration environment, regardless of the interface
required between adapters and their target applications. The
business processes can react to events generated by applications,
and they can invoke an application's functionality via services
that are exposed by an application adapter.
[0048] Business Process Management
[0049] One way to use an application view with business processes
for an enterprise is to design a workflow using a business process
management (BPM) component. A BPM component can provide a GUI-based
environment for designing business process workflows. These
workflows can include application view services and events defined
using application integration.
[0050] There can be at least four ways to use an application view
in a workflow using BPM. For instance, a task node can be set up to
call an application view service. Alternatively, an event node can
be set up to wait for a response from an asynchronous application
view service. A workflow can also be created that is started by an
application view event. An event node can be set up to wait for an
application view event. If BPM is not used, an alternate way to use
an application view in an enterprise is to write custom Java code
to implement a business process.
[0051] For each business process implemented, an implementation
method can be selected. While any business process can be
implemented as a workflow by using BPM, it may be undesirable to
custom code a business process unless it is simple and/or
specialized.
[0052] It can be advantageous to use a BPM component to implement a
business process in certain situations. One situation in which it
can be advantageous to use BPM to implement a business process
occurs when implementation would require complicated error
management, persistent processes, and sophisticated conditional
branching. For example, if a business process receives events,
selects only a subset of the events, performs complex branched
actions, then generates many complex messages and sends the
messages to a variety of application server clients, it can be
advantageous to use BPM to implement the business process.
[0053] BPM can also be used when only occasional changes need to be
made to a business process. BPM can reduce the number of
compile/test/debug cycles. BPM can also be used when, as in many
organizations, developers are valuable and scarce.
[0054] Certain prerequisites can be met before a user invokes an
application view service or receives an application view event in
BPM. First, a user may need to have created an application view and
defined services and events for the application view. Also, the
application view and its adapter may need to be functional and
saved somewhere on the system. If the user is planning to call
application view services and events from a running workflow, the
application view should be deployed as well. In some embodiments
both BPM and application integration should be running, and the
application integration plug-in should be loaded. The user may wish
to obtain information about any required business logic for the
workflows being defined. This information can come from a business
analyst, for example. Also, a workflow template definition can be
opened.
[0055] After creating the necessary application view services and
events for an enterprise, a user can use those application views to
execute business processes. BPM can be used to design business
process workflows that use the application view services and
events. BPM can provide a GUI-based environment for designing
business process workflows. These workflows can include application
view services and events defined using application integration.
[0056] There are at least four primary ways to use application view
services and events in BPM. One way is to set up a task node to
call an application view service. Another way is to set up an event
node to wait for a response from an asynchronous application view
service. Another way involves creating a workflow started by an
application view event. Finally, an event mode can be set up to
wait for an application view event. These scenarios can be used in
combination with each other to create personalized workflows.
[0057] Business Example
[0058] In an example of an application view useful for exposing a
business interface to an application, an application view object
can be created with a name that reflects its business purpose, and
within a namespace that describes its place within the
organizational structure of the business. The resulting application
view can satisfy the business data requirements and can perform the
proper interaction with applications. Users of the application view
can include business analysts, technical analysts, and subject
matter experts. A business analyst can decide that which will be
the business purpose of the application view. A technical analyst
can decide which application is best suited to the purpose for the
application view. The technical analyst can enlist the help of the
subject matter, or application, expert to assist in defining the
application view by offering application expertise, and by possibly
modifying the application or its metadata to meet the needs of the
application view. The adapter for the application selected by the
technical analyst can already be installed, as well as the
appropriate JSP-based design-time GUI. The server hosting the
adapter and the design-time interface should also be up and running
before creating a new application view.
[0059] The basic flow and alternate flows for the application view
can assume that the business analyst, technical analyst, and
subject matter expert are all interacting during the
creation/definition of the application view. This may not always be
the case. If each user is instead taking a turn reviewing the
current state of the application view, the flow of events could
take the form of multiple passes through the flow of events, with
each pass representing only the single user interactions.
[0060] In one basic flow, a technical analyst can open a web
browser and point to the URL for the adapter design-time interface.
The technical analyst and business analyst can decide the business
organization under which the application view belongs, and can
verify that an appropriate application view namespace exists. This
can be done using a namespace browser tree on the home page of an
adapter design-time interface. If no appropriate namespace exists,
the namespace can be created using a namespace browser.
[0061] A technical analyst and a business analyst can agree on a
name for an application view that reflects the business purpose for
the application view. The technical analyst can create a new
application view within the identified namespace and give it the
agreed-upon name. The business analyst can give a brief description
of the application view's business purpose and the technical
analyst can type it into the description field of the new
application view. The set of events and services for the
application view can be reviewed and edited, if necessary. The
technical analyst can then save the new application view. At this
point, the application view can be saved for later use, tested, or
deployed into the runtime application view engine.
[0062] Business Approach
[0063] If a business analyst or technical analyst defines an
application view using an adapter, the application view can be
customized for a specific business purpose defined by the business
analyst. For example, if defining a "customer management"
application view on an adapter for a Customer Relationship
Management (CRM) system, services and events related to customer
management can be added. Application views can be created that are
as inclusive as necessary. Because application views can be
customized for a specific business purpose, application views can
work much better than the "one size fits all" approach used by many
other enterprise application integration systems.
[0064] A business-level view of an application's capabilities can
provide a logical separation between the programmer and the
technical analyst. For example, this abstraction can enable a
technical analyst to create records in a database without having to
know SQL.
[0065] Workflow
[0066] In an organization, there may be situations in which a user
wants to call an application view service from within a workflow.
To do this, a task node can be added to the workflow, with an
appropriate application view service action being added to the task
node. Once the workflow is saved and activated, the application
view service can be called whenever the task node executes.
[0067] In order to set up a task node to call an application view
service, certain steps can be followed to create a task node that
calls an application view service. First, a template definition can
be opened. A task node can be created if it does not already exist.
A task node can be selected that can call the application view
service, such as by double-clicking on the particular task node. An
"actions" area can be displayed from which a user can select a
service to be called. The choice can depend on the business
processes.
[0068] At this point, an application view service can be called. A
"call service" dialog box or other data entry panel can be
displayed from which a user can select a service to be called. A
navigation tree can be used to organize application view services
by folder, such as a folder called EastCoast.Sales, and by
application view, such as an application view called
CustomerManagement. All application view services can be positioned
at the lowest level of the navigation tree. From a "request
document variable" list, a user can select an existing XML variable
that contains the input data for the application view service.
[0069] A "service request template" dialog box can display a
template to apply to all service requests of this type. This
template can be based on the input schema for the service. When
this action executes, the template data can be assigned to the
specified request document variable and used as the input document
for the service. This template can override any previous setting
for the variable. If the user wishes to examine the XML schema of
the input document, the user can choose to view a request
definition.
[0070] A user may also want to create a workflow that starts
whenever a designated application view event occurs. To set a
workflow to be started by an application view event, a user can
edit the workflow's start node to respond to an event of type "AI
Start," for example, and can then select the appropriate
application view event. If necessary, the user can set conditions
upon which to filter the event. After saving and activating the
workflow, the start node can execute each time the application view
event occurs.
[0071] In order to create a workflow started by an application view
event, certain steps can be followed to set up a workflow with a
start node that is triggered by an application view event. A user
can open a template definition and create a start node if one does
not already exist. This start node can respond to a specified
application view event. The user can specify an application view
event. If necessary, the user can filter the event such as by
entering a condition. The user can select an XML variable, such as
from an event document variable list. When the start node receives
data from the application view event, this variable can be used to
store the data. If no suitable XML variable exists, the user can
create a new variable.
[0072] In a workflow, a user may want to create an event node that
is triggered by an application view event. To set up an event node
to respond to an application view event, the event node can be
edited so it responds to an event of type "AI Event", for example,
and the appropriate application view event can be selected. If
necessary, conditions can be set on which to filter the application
view event. After saving and activating the workflow, the workflow
can progress to this event node, wait for a specified application
view event, and continue processing.
[0073] A developer may want to modify an application view by
writing custom code. Many application view features can be accessed
by using, for example, a Web-based GUI, but there are some
application view features that can used only by custom coding.
These can include connecting using specific credentials and custom
coding a business process.
[0074] When exporting a workflow that utilizes application
integration, a BPM export tool can automatically identify the
application views and other resources the workflow depends on. To
fully export an application view, a user can select all entities
that are related to the application view.
[0075] Synchronous Approach
[0076] In order to call an application view synchronously, a user
can select a "synchronous" option from the appropriate application
view console A node that synchronously calls a service can be
configured to wait for a service to return a response document
before the workflow can continue. If the node were to
asynchronously call a service, the workflow would be able to
continue. For synchronous services that require storage of the
response, a user can select a predefined XML variable, such as from
a "response document variable" list. When BPM receives the response
from the application view service, the response document variable
can store the response. If a user does not care about the response
data, the user can leave this field empty.
[0077] If no suitable XML variable exists, a user can select an
option to create a new XML variable. If it is necessary to examine
the XML schema of the response document, the user can view the
response definition.
[0078] Asynchronous Approach
[0079] For asynchronous services, such as may require storage of
the request ID, a predefined string variable can be selected from
an application view console. If no suitable string variable exists,
a "variable properties" dialog box can be opened where a new string
variable can be created. When a task node is set up to call an
asynchronous application view service, the result can be returned
to BPM. A workflow can identify this response using the selected
request ID variable. To set an event node to receive the response,
the same request ID variable can be used for the event node.
[0080] A user may wish to set up an event mode to wait for a
response from an asynchronous application view service. In a
workflow, whenever an action calls an application view service
asynchronously, the application view service can return a response.
Normally, if the user wants to know about the response, the user
may want to set up a corresponding asynchronous event node to wait
for the response. To configure an asynchronous event node to wait
for a response from an asynchronous application view service, an
event node can be created with the event node being set to wait for
an event, such as an event of type "Async Response."
[0081] There are at least two primary methods that can be used to
set up the event node to receive the asynchronous service response
in this embodiment. In a first method, a user can select a
"response document" option. When using this method, a user can
receive an asynchronous service response by selecting the request
ID variable and a response document variable. The request ID
variable is a string and the response document variable is of type
XML. A second method uses an "asynchronous variable" option. When
using this method, the asynchronous service response can be
received by selecting the request ID variable and an asynchronous
service response variable. The request ID variable can be a string
and the asynchronous service response variable can be of a type
such as "AsyncServiceResponse." A preferred method may be the
response document method, as it can provide a universal means of
receiving both asynchronous and synchronous responses. When using
the response document method, an XML document can be received
regardless of whether the response is asynchronous or synchronous,
and it will not be necessary to query the value of the asynchronous
service response variable.
[0082] A response document variable can be used to receive
asynchronous service responses whenever possible. Whenever an
"event properties" dialog box is set to wait for an event of the
asynchronous response type, a user can choose to use an
asynchronous variable to receive the response. If an asynchronous
response event node is edited that was previously set up to use an
asynchronous service response variable to receive the response,
then two options can be displayed in an event properties dialog
box: an asynchronous variable option and a response document
option. In this case, a user can select one of the two methods to
receive the service response.
[0083] If an existing asynchronous response event node is edited
that does not use an asynchronous service response variable or a
new asynchronous event node is created, an event properties dialog
box can display a dialog box that will allow a user to set a
response document to receive the service response.
[0084] Although this scenario does not handle errors returned in
the application view service response, a user may want to handle
errors in specific user workflows. To handle asynchronous service
response errors in these workflows that may use, for example, an
AsyncServiceResponse variable, a user can use features included in
an application integration plug-in. An application integration
plug-in can include a variable type such as AsyncServiceResponse
and functions such as AIHasError( ), AIGetErrorMsg( ), and
AIGetResponseDocument( ).
[0085] To set up an asynchronous event node to wait for a response
from an asynchronous application view service, an event node can be
created and set to wait for an event of a type such as "AI Async
Response." Steps for setting an event node to use an XML variable
to receive an asynchronous service response can include, first,
opening a workflow template definition. A user can create an event
node if one does not already exist, which will wait for an
asynchronous response from a designated application view service.
The user can select an already-defined string variable, and BPM
will listen for an asynchronous response with an ID matching this
variable.
[0086] The event node can wait for a response to an action, such as
a call to an application view service, that was called
asynchronously earlier in the workflow. The "call application view
service" action can set the request ID variable. To make the action
and this event node work together, they can both use the same
request ID variable.
[0087] For asynchronous services that require storage of the
response, a user can select a predefined XML variable, such as from
a response document variable list. When BPM receives the response
from the application view service, the response document variable
can be used to store the response. If no suitable XML variable
exists, the user can create a new variable. A preferred method for
receiving an asynchronous service response may be to use a response
document variable of type XML. However, if an existing workflow
contains an asynchronous event node that was previously set to use
an AsyncServiceResponse variable to wait for a response from an
asynchronous application view service, a user can modify the event
node.
[0088] If an event mode uses an AsyncServiceResponse variable to
receive an asynchronous service response, one approach to modifying
the event mode uses the following steps. A workflow template
definition is opened and an asynchronous variable type selected. A
user selects an already-defined string variable, and BPM, listens
for an asynchronous response with an ID matching this variable.
[0089] Callback Listener
[0090] A client can choose to invoke a service asynchronously if it
is a long-running service. For instance, some SAP requests can take
about two or three minutes to process. The processing of the
request usually happens transparent to the client. If the user is
sitting at a web page, it can be undesirable for the page to simply
"hang" for two minutes without doing anything. It may be preferable
to issue some sort of response, then update the web page once the
proper response is received, such as a new message from SAP. This
is one reason for using a callback listener for asynchronous
responses. In this way, a client does not want to have to wait
around for a response, but will instead be notified when the
response is received by the callback listener.
[0091] A listen and receive event is another valuable part of
certain embodiments in accordance with the present invention, as a
listen and receive event is not addressed in the J2EE Connector
architecture. A trigger can occur in an EIS, and external
applications may need to know about the firing of the trigger. In
other words, an event occurs that needs to be propagated out to
certain applications. Any registered listeners may need to be
notified as well.
[0092] As before, a client can create an application view and can
add an event listener. A handler is created that knows what to do
once it receives an event from the application view. The
application view in one embodiment subscribes to a JMS topic and
registers the listener on that topic. A JMS topic is a JMS feature
to which JMS messages can be posted, similar to an inbox.
[0093] There can be a defined object, or application integration
component, called an "event generator." The job of the event
generator is to watch and communicate with the EIS to determine
when an event occurs. For a DBMS adapter, this can involve a query
on a staging table. A user can make a request, such as "select from
event." Any record in that event table will be a record of a new
event in the DBMS. The event generator can periodically look to the
EIS for new events.
[0094] For example, when an order processing system is running low
on an item in inventory, an event can result the system triggering
a notification that it needs to restock a certain product. This
event can happen, for example, in an EIS. Triggers can be used for
DBMS. Once an insert occurs on a certain table, a trigger can fire
and place information about the new data into the event table, such
as by using an "insert into event . . . " statement. Then, once a
new event occurs, the event generator can pull that event.
[0095] Plug-Ins
[0096] Plug-ins can be useful to extend or add functionality to
application integration. When using an application integration
plug-in, functions such as, for example, AIHasError( ),
AIGetErrorMsg( ), and AIGetResponseDocument( ) can be used to
interrogate application integration response variables, where
applicable. If an application integration plug-in is installed in
BPM, a user can be given access to any of these functions. Using
these functions, decision nodes can be configured to handle success
and failure conditions. In some embodiments, these functions
support only an asynchronous variable method for receiving
asynchronous service responses.
[0097] Another plug-in function such as AIHasError( ) can be used
to determine the status of an asynchronous service response. A
function such as AIGetErrorMsg( ) can be used to retrieve the error
message string returned by an asynchronous application view
service. A function such as AIGetResponseDocument( ) can be used to
retrieve the actual XML response document returned by an
asynchronous application view service.
[0098] Custom Coding
[0099] In certain situations, it may be advantageous for a user to
custom code portions of the application integration solution. In a
simple example, business logic can be implemented where an
enterprise has a customer relationship management (CRM) system and
an order processing (OP) system. A business process can be desired
that coordinates the synchronization of customer information
between these two systems. The creation of a customer on the CRM
system can trigger the creation of a corresponding customer record
on the OP system. A Java class such as "SyncCustomerlnformation"
can be custom coded by the user to implement this business
logic.
[0100] This example demonstrates some basic steps that can be taken
when implementing an organization's business processes, using an
example class called SyncCustomerInformation. In general, two steps
can be used to create custom code that uses an application view in
a business process. First, a user can make sure that a Java class
exists to represent the application implementing the business
process. Then, within this Java class, the user can supply the code
to implement the business logic.
[0101] For one embodiment, the following prerequisites should be
met before creating custom code to implement a business process.
First, an application view should be created, with one or more
events or services being defined within the application view. A
user can obtain information about the required business logic for
the business process workflow being defined. This information can
come, for example, from a business analyst.
[0102] In addition, this particular scenario assumes certain
prerequisites are already complete. One assumption is that
application views for the source CRM system and the target OP
system are defined and working. Also assumed is that both
application views exist. When writing custom code, a Java class can
exist to represent each application required for the business
process. The necessary Java classes can be created if they already
exist.
[0103] A reference can be obtained to a namespace manager and
application view manager within an application server. This can be
accomplished by using a JNDI (Java Naming and Directory Interface)
lookup. Using a namespace manager, a reference can be obtained to
the "root" namespace by calling a method such as "getRootNamespace(
)." Using a root variable, a reference can be obtained to the East
Coast namespace by calling "root.getNamespaceObject." A temporary
reference can be obtained to the customer management application
view and the reference can be stored into a variable called
"custMgmtHandle."
[0104] This custMgmtHandle temporary reference can be used to
obtain an actual reference to an application view instance for
customer management. This can be accomplished by calling the
application view manager as "avm.getApplicationViewInstance
(custMgmtHandle.getQualifiedName( ))." The returned reference can
be stored into a variable called custMgmt.
[0105] The user can begin listening for "new customer" events by
calling "custMgmt.addEventListener("New Customer", listener),"
where "listener" is an object that can respond to "new customer"
events. An "onEvent" method of the listener class can also be
implemented. When a "new customer" event is received, the onEvent
method of the listener can be called. The onEvent method should
then call a method to respond to the event. In this example, the
onEvent method provides the event object that contains the data
associated with the event. This method, called "handleNewCustomer,"
can be implemented to respond to the New Customer event.
[0106] Application View as a Business-Level Interface
[0107] A key component of one embodiment of an application
integration component is an application view. An application view
can represent a business-level interface to the specific
functionality in an application. An adapter, on the other hand, can
represent a system-level interface to all the functionality in the
application. An application view can be configured for a single
business purpose and can contain services related to that business
purpose. These services can require only business-relevant data to
be specified in the request document and return only
business-relevant data in the response document. An application
view can combine this business-relevant data with stored metadata
necessary for the adapter. The adapter can take both the
business-relevant data and the stored metadata, and can execute a
system-level function on the application.
[0108] The application view can represent both events and services
that support a business purpose. This can allow a business user to
interact with the application view for all communication with an
application. This bi-directional communication can be supported by
an event adapter and a service adapter. An application view can
abstract this fact from the user and present the user with a
unified business interface to the application.
[0109] Service as a Business Operation
[0110] A service can be a business operation within an application
that is exposed by the application view. The service can exist as a
request/response mechanism. When an application receives a request
to invoke a business service, the application view can invoke that
functionality within its target application and return, or respond
with, an XML document that describes the results.
[0111] To define a service, a user may need to determine and define
the input requirements, output expectations, and the content of the
interaction specification.
[0112] The foregoing description of preferred embodiments of the
present invention has been provided for the purposes of
illustration and description. It is not intended to be exhaustive
or to limit the invention to the precise forms disclosed. Many
modifications and variations will be apparent to one of ordinary
skill in the art. The embodiments were chosen and described in
order to best explain the principles of the invention and its
practical application, thereby enabling others skilled in the art
to understand the invention for various embodiments and with
various modifications that are suited to the particular use
contemplated. It is intended that the scope of the invention be
defined by the following claims and their equivalence.
* * * * *