`
`(12) United States Patent
`US 7,549,153 B2
`(10) Patent N0.:
`Butterworth et a].
`(45) Date of Patent:
`Jun. 16, 2009
`
`(54) APPARATUS AND METHOD FOR CONTENT
`
`5,724,516 A *
`
`3/1998 Temoshenko ............... 709/202
`
`AND 90N'1‘EX'1‘ PROCESSING OF WEB
`SERVICE TRAFFIC
`
`5,761,673 A *
`5,850,517 A
`
`6/1998 Bookman et a1.
`12/1998 Verkler et a1.
`
`........... 719/311
`
`(75)
`
`Inventors: Paul E. Butterworth, Alamo, CA (US);
`Frederick H. Carter Fremont CA
`(US); Joseph R. Cortopassi, Pleasanton,
`CA (US); lVIichael S. Schilling, San
`Rafael, CA (US); Charles E. Thurston,
`Kensmgton, CA (US); Mark T- Wallace
`San Rafael, CA (US)
`
`(73) Assignee: Amherpoint, Ine., Oakland, CA (US)
`
`( * ) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 483 days.
`
`(21) App]. N0.: 10/201’617
`
`(22) Filed:
`
`Jul. 22, 2002
`_
`_
`_
`Prlor Publlcatlon Data
`US 2004/0133656 A1
`Jul. 8, 2004
`
`(65)
`
`(51)
`
`Int. Cl.
`(2006.01)
`G06F 3/00
`(2006.01)
`G06F 17/30
`(2006.01)
`G06F 15/16
`(2006.01)
`G06Q 40/00
`(52) US Cl.
`............................. 719/317; 705/37; 707/4;
`707/5; 707/10; 709/202
`(58) Field of Classification Search ................. 719/317,
`719/318, 310, 311, 328; filo/201,207a 223,
`709/2172219, 224; 718/108; 707/1210;
`715/513; 705/37
`See application file for complete search history.
`_
`References Clted
`U S PATENT DOCUMENTS
`.
`i
`A
`................. 709/221
`5,367,635 A *
`11/1994 Bauer et a1.
`5,404,523 A *
`4/1995 DellaFera et a1.
`. 718/101
`
`5,655,081 A *
`8/1997 Bonnell et al.
`. 709/202
`1/1998 Lagarde et al. ................ 707/10
`5,710,918 A *
`
`(56)
`
`6’085’240 A .
`6,317,786 B1 "
`61330536 B1
`6,549,952 B1 *
`2002/0087374 A1 *
`2003/0004912 A1 6"
`
`.............. 709/224
`
`7/2000 Suzukl et a1.
`11/2001 Yamane et al.
`12/2001 Yates et A
`.......... 719/311
`4/2003 Plassnlann et a1.
`7/2002 Boubez et a].
`................. 705/7
`1/2003 Pant et a1.
`..................... 706/47
`
`(Contlnued)
`OTHER PUBLICATIONS
`
`M. Jones, “lnterposition Agents: Transparently Inlelposing User
`Code at the System Interface”, ACM, 1993, pp. 80-93.*
`
`(Continued)
`Primary ExamineriMeng—Ai An
`Assistant E.m771iner4Cliarles E Anya
`(74) Attorney, Agent, or FirmiCooley Godward Kronish
`LLP
`
`(57)
`
`ABSTRACT
`
`A method of supplementing the operations performed by a
`web service includes operating all autonomous software
`agent. The autonomous software agent receives a request
`directed to a web service and identifies a web service input
`operation associated with the request. The web service input
`operation is associated with a set of input actions. The input
`actions are executed prior to directing the request to web
`service. The autonomous software agent may also receive a
`response from the web service. A web service output opera-
`tion associated with the response is identified. The web ser-
`vice output operation is associated with a set of output
`actions. The output actions are executed prior to directing the
`response to a client.
`
`11 Claims, 13 Drawing Sheets
`
`
`Autonomous Agent
`
`600
`Module Layer
`
`
`
`608A
`
`
`534
`
`606
`
`
` Core Layer
`
`
`602
`610
`
`
`Module Backplane
`
`Platform Interface
`
`
`
`Platform Layer
`
`608N
`
`612
`
`604
`
`Page 1 of 22
`
`GOOGLE EXHIBIT 1020
`
`Page 1 of 22
`
`GOOGLE EXHIBIT 1020
`
`
`
`US 7,549,153 B2
` Page 2
`
`us. PATENT DOCUMENTS
`
`2005/0193097 A1*
`
`9/2005 Guthrie et a].
`
`.............. 709/219
`
`2003/0061404 A1 *
`2003/0069834 A1 *
`2003/0188040 A1 *
`2003/0233477 A1 *
`
`................ 709/328
`3/2003 Atwal et 31.
`4/2003 Cutler
`......................... 705/37
`10/2003 Vincent
`...................... 709/317
`12/2003 Ballingeret al.
`............ 709/246
`
`OTHER PUBLICATIONS
`Hi Nwana, et a1, “ZEI IS: A Toolkit and Approach for Building Dis-
`‘rimted Mm‘i'Agem ”Stems”, ACM, 1999,1‘1" 36036“
`* cited by examiner
`
`Page 2 of 22
`
`Page 2 of 22
`
`
`
`US. Patent
`
`Jun. 16, 2009
`
`Sheet 1 of 13
`
`US 7,549,153 B2
`
`102
`
`104
`
`Web Service
`
`Client
`
`Response (XML)
`
`
`Request (XML)
`
`
`
`— “’6"
`Service
`
`
`
`100
`
`FIG. 1
`
`(Prior Art)
`
`Order
`
`Processing
`Client
`
`Order
`Processing
`Web Service
`
`Credit Check
`Web Service
`
`
`
`Inventory
`Web Service
`
`Shipping
`Web Service
`
`FIG. 2
`
`(Prior Art)
`
`Page 3 of 22
`
`Page 3 of 22
`
`
`
`US. Patent
`
`Jun. 16, 2009
`
`Sheet 2 of 13
`
`US 7,549,153 B2
`
`300\
`
`302
`
`314
`
`306
`
`
`304
`
`
`
`I Network
`
`
`Network
`
`Interface
`
`Interface
`
`
`
`
`
`eb Service N
`
`Web Service A
`
`—W
`
`Web Client
`
`Software
`
`328N
`
`
`
`
`
`Interface
`
`Web Service A1
`
`Web Service N1
`
`FIG. 3
`
`(Prior Art)
`
`316
`
`Page 4 of 22
`
`Page 4 of 22
`
`
`
`tnetaPs”U
`
`n.
`
`2,
`
`us 7,549,153 32
`
`BS»m?
`
`w65%
`
`
`
`
`
`HEN028%an.m@3308m<Omvnowmmmofim<0mvmomnommomAERmoutflow30:0sg,3%I$2;
`
`
`
`
`
`
`
`
`
`newsman—h@459wNew«853%E“weavedJENAowmwmofin20$
`
`
`
`
`
`mwe»
`
`h/
`
`3%
`
`3%
`
`Page 5 of 22
`
`Page 5 of 22
`
`
`
`
`
`US. Patent
`
`Jun. 16, 2009
`
`Sheet 4 of 13
`
`us 7,549,153 32
`
`500\
`
`516
`
`502
`512
`
`504
`
`506
`
`522
`
`526
`
`I Netw
`
`Interface
`
`CPU
`
`Web Service A
`
`Web Service N
`
`Autonomous Agent
`
`Autonomous Agent
`
`Management Console
`Environment
`
`Monitor
`
`
`mu.Mm'fifltfimu.)Wm\1AKNM“25’-
`2:».
`539 Policy
`
`
`538
`
`Agent
`Configuration
`Editor
`
`Authorization
`
`Editor
`
`540
`
`508
`
`544
`
`[Network
`
`Interface
`
`Web Service A1
`
`nW
`
`eb Service N1
`
`
`
`'Web Client
`Software
`
`518
`
`510
`550
`
`554
`
`J
`
`Network
`Interface
`
`
`
`
`
`Autonomous Agent A]
`IIIIIIIIiIIIIIIIII
`Autonomous Agent N1
`
`556
`
`558N
`
`FIG. 5
`
`546
`
`Page 6 of 22
`
`Page 6 of 22
`
`
`
`US. Patent
`
`Jun. 16, 2009
`
`Sheet 5 of 13
`
`US 7,549,153 B2
`
`
`Autonomous Agent
`
`
`
`Module Layer
`
`534
`
`600
`
`
`
`606
`
`608A
`
`
`
`
`
`
`
`Core Layer
`
`
`
`
`
`602
`
`
`Platform Layer
`
`604
`
`FIG. 6
`
`700 \
`
`71 0A
`
`Module A
`
`
`
`71 ON
`Module N
`
`
`712A
`
`712N
`
`Module A
`
`Module N
`
`
`
`702A
`
`
`
`
`
`
`
`704A
`
`706A
`
`702N
`
`704N
`
`706N
`
`FIG. 7
`
`Page 7 of 22
`
`Page 7 of 22
`
`
`
`US. Patent
`
`Jun. 16, 2009
`
`Sheet 6 0f 13
`
`us 7,549,153 32
`
`VNE
`
`2%
`
`3%
`
`=28
`
`3E5595
`
`gm
`
`22%EI
`
`who
`
`IIvsmm<852
`
`%GEN
`
`.39523m
`
`“5%
`
`3%8m
`
`Page 8 of 22
`
`Page 8 of 22
`
`
`
`
`
`tnetaPs”U
`
`us 7,549,153 32
`
`m33m89:m,gigIII583m
`1.ms‘2am#3EoW<cg
`
`NRveg
`
`outflowIII
`
`BSmIIM085“SamMIIMomfiommoam$53IIIDmfiomwomS3mgSago
`
`EEG
`
`a.UNK
`
`Page 9 of 22
`
`Page 9 of 22
`
`
`
`
`US. Patent
`
`Jun. 16, 2009
`
`Sheet 8 of 13
`
`US 7,549,153 B2
`
`1010
`
`1 012
`
`Identify Operation Invoked by Message
`
`Lookup Actions Associated
`with Operation
`
`1 01 4
`
`Build Context Object
`
`>
`
`1016
`
`10] 7
`
`N0
`
`I 019
`
`
`
`
`
`
`Web Serwce
`
`Invocation (10B)
`
`1018
`
`1024
`
`1026
`
`Yes
`
`Select Next Action
`
`
`
`Pattern Match?
`
`Yes
`
`
`
`
`
`Return Action &
`
`Processing Information
`
`1027
`
`:
`
`1028
`
`Yes
`
`
`
`
`
`Invoke Response
`
`
`Processing (10B)
`
`
`
`FIG. 10A
`
`Page 10 of 22
`
`Page 10 of 22
`
`
`
`US. Patent
`
`Jun. 16, 2009
`
`Sheet 9 of 13
`
`US 7,549,153 B2
`
`1 019
`
`Web Service
`Invocation
`
`
`
`From 10A
`
`Web Service
`
`Processing
`
`1 030
`
`Response Processing
`From 10A
`
`
`
`Yes
`
`Place Response in
`Context Object
`
`1031
`
`No
`
`9
`
`1032
`1 033
`
`1035
`
` Is
`Response
`a Fault?
`
`Yes
`
`1037
`
`No
`
`
` Fault
`Processmg
`
`
`(10C)
`
`
`Yes
`
`Select Next Action
`
`
`
`
`
`
`Pattern Match?
`
`Yes
`
`
`1044
`
`
`
`Return Action &
`
`Processing Information
`
`
`
`Yes
`
`I 048
`
`FIG JOB
`
`Page 11 of 22
`
`Page 11 of 22
`
`
`
`US. Patent
`
`Jun. 16, 2009
`
`Sheet 10 of 13
`
`US 7,549,153 B2
`
`1037
`
`
` Fault
`Processing
`
`From 103
`
`
`
`
`Yes
`
`
`
`Select Next Action
`
`
`
`
` Pattern Match?
`
`Ye S
`
`1058
`
`Return Action &
`
`
`Processing Information
` 1 062
`
`FIG. 10C
`
`Page 12 of 22
`
`Page 12 of 22
`
`
`
`S.U
`
`90
`
`0
`
`w
`
`m
`
`mmmmNN1,E25wDatum925
`7,vmNNboa—H02:
`
`NN.anN
`
`tN.m%NN:56£3amammuoofiP.520E:
`
`EEO
`
`0m2,@5202,magmam.mEmwooEmbehm—m520uo3:
`
`outflow£03Eow<mb95>£@8835
`
`mmwoqES%£58:me
`
`b85>£
`
`“SEN
`
`
`
`Eom<8:82
`
`
`
`BEBE«:quhém
`
`um.
`
`EEO
`
`mammmoooi
`
`Eum<
`
`Emonnmmn—
`
`hNNN
`
`
`
`NNNNQNNN
`
`Page 13 of 22
`
`Page 13 of 22
`
`
`
`
`
`US. Patent
`
`Jun. 16
`
`7
`
`2009
`
`Sheet 12 0f 13
`
`us 7,549,153 32
`
`3.2
`
`notmhsmmaoo
`
`3«PE
`
`Bow<
`
`E230-
`Eom<8,
`acumSwmnoU
`
`
`vomEomno?How/wBuZ95mENMWEWHWW
`
`@852:momemDE
`
`
`maggot:
`
`oomfiumn63
`
`«5:0
`
`NNNN
`
`Page 14 of 22
`
`
`
`
`
`SHEmcosmsmmaooEom<
`
`moowtum303
`
`Page 14 of 22
`
`
`
`
`
`hES.
`
`m835mno?
`
`@852“:
`
`fin.@252:
`t833mno?
`S”3:
`
`m,8:5N3:88:355?
`
`326an
`
`U
`
`aP
`
`n.
`
`us 7,549,153 32
`
`mN.UNK
`
`Page 15 of 22
`
`Page 15 of 22
`
`
`
`US 7,549,153 B2
`
`1
`APPARATUS AND METHOD FOR CONTENT
`AND CONTEXT PROCESSING OF WEB
`SERVICE TRAFFIC
`
`BRIEF DESCRIPTION OF THE INVENTION
`
`This invention relates generally to web services. More
`particularly, this invention relates to an autonomous agent
`that interacts with a web service to provide context and con—
`text processing of web service traffic.
`
`
`
`BACKGROUND OF THE INVENTION
`
`A web service is a software vehicle that accepts requests
`from a client to perform operations. At this time,
`these
`
`requests are typically in the form of Extensible Markup Lan-
`guage (XML). Although XML is used as an example, other
`forms of invocation are also possible. In most cases, a web
`service returns a response after processing the request. This
`prior art architecture is illustrated in FIG. 1, which shows a
`web service client 100 submitting an XML request, as shown
`with arrow 102, to a web service 104. The web service 104
`generates an XML response, as shown with 106.
`Web services typically operate independently of a specific
`computer language, platform, or location. Therefore, a client
`can contact a web service that is written in a different pro—
`gramming language, which is running on a different platform,
`and is located across a network.
`
`Because web services can contact each other to request the
`execution of operations, they serve as building blocks for
`distributed systems. Distributed systems composed of web
`services may span multiple machines, a corporate intranet, or
`the Internet. Combining web services from a base environ-
`ment with web services outside the base environment, such as
`those operated by partners or suppliers, can create complex
`applications, such as shown in FIG. 2.
`FIG. 2 illustrates a base environment 200 under common
`control, such as an intranet. The base environment 200
`includes an order processing client 202, which accesses an
`order processing web service 204. In fulfilling an order, the
`order processing web service 204 accesses an inventory web
`service 206, which resides in the base environment 200 and a
`credit check web service 208, which is located in a first
`partner environment 210. The inventory web service 206
`accesses a shipping web service 212 in a second partner
`environment 214.
`
`FIG. 3 illustrates a prior art networked computer environ-
`ment 300 that supports a distributed web service. The com-
`puter network 300 includes a client computer 302 connected
`to a communication link 304, which may be any wired or
`wireless communication link. Also connected to the commu-
`nication link 304 are a first server 306 and a second server
`308.
`
`The client computer 302 includes a central processing unit
`(CPU) 310 comiected to a bus 312A network interface 314 is
`also connected to the bus 312. A memory 316 is also con-
`nected to the bus 312. The memory 316 stores web client
`software 312, which may be used to initiate a web service
`client request using known techniques.
`The server 306 includes a network interface 320 connected
`
`to a CPU 324 via a bus 322. A memory 326 is also connected
`to the bus 322. The memory 326 stores individual executable
`programs in the form ofweb services 328A-328N. Server 3 08
`also includes a network interface 330 connected to a CPU 334
`
`via a bus 332. A memory 336 stores individual executable
`programs in the form of web services 338A-338N.
`
`2
`Using web services to integrate both internal and external
`data gives an organization flexibility. An organization can
`focus on creating applications for the business problems in a
`domain of expertise, and make use of the web services pro-
`vided by other organizations in order to complete a business
`process. An organization can also offer its web services for
`use by other organizations.
`Typical web service architectures are based on the follow-
`ing elements: a transport protocol, a message format protocol,
`a service definition language, and a mechanism to locate the
`web service. The function ofeach element is described below.
`The transport protocol indicates how messages are sent to
`the web service. HTTP (Hypertext Transport Protocol) is the
`most popular transport protocol for web services, as it makes
`possible universal connectivity via the Internet. HTTP sup-
`ports a request-response message patternbetween a client and
`a web service. Other transport protocols can also be used for
`web service communication and for one-way communication
`(i.e., a request
`that does not
`require a corresponding
`response).
`Messages betweenclients and web services may use SOAP
`(Simple Object Access Protocol). SOAP is a protocol speci-
`fication that defines a uniform way ofpassing XML-encoded
`data. SOAP also defines a way to perform remote procedure
`calls using HTTP (or another transport protocol) as the under-
`lying communication protocol. A client sends a SOAP
`request message to the web service, and receives a SOAP
`response message in return. Using SOAP,
`the service
`requestor and the service provider can communicate as long
`as they agree on a common transport protocol (such as HTTP)
`and the message’ s SOAP definition. This increases the oppor-
`tunities for reuse, as the service places essentially no con—
`straints on the platform, language, or location of its clients.
`The web service’s interface is defined in a Web Services
`Description Language (WSDL), which is an interface
`description language defined in XML. In order to announce
`its operations to potential clients, a web service provides a
`WSDL file that describes the service’s network address, the
`list of operations, and the messages that it uses to communi-
`cate. Ifa client has access to the WSDL definition for a service
`and the proper security credentials, it can access the service
`with no additional information.
`
`Web service clients typically locate a WSDL file using a
`published URL address. Currently, clients typically retrieve a
`WSDL file from a hard-coded URL location. Eventually,
`vendors will publish the URLs for their web services using
`UDDI (Universal Description, Discovery, and Integration).
`UDDI defines the interface to a repository that allows web
`service providers to advertisetheir services and allows clients
`to locate the web services they need.
`The construction of distributed enterprise systems from
`web services raises management challenges. Although the
`independent language, platform, and location qualities of
`web services simplify the construction ofdistributed systems,
`these characteristics complicate the problems of monitoring,
`managing, and controlling these systems. The ability to c0111-
`bine these systems magnifies the management challenge.
`Web service developers will typically spend their resources
`to implement business functionality rather than to implement
`system management facilities, such as security, logging, per-
`formance monitoring, and failover. While some implement-
`ers may incorporate system management facilities directly
`into their web services, different organizations may do so
`with incompatible infrastructures, thereby making it impos-
`sible to manage a distributed system in a consistent manner.
`Since web service developers are not providing adequate
`system management tools, individual risers must create such
`
`5
`
`10
`
`15
`
`20
`
`30
`
`35
`
`40
`
`45
`
`60
`
`65
`
`Page 16 of 22
`
`Page 16 of 22
`
`
`
`US 7,549,153 B2
`
`3
`tools on an ad hoc basis. An organization utilizing a web
`service is generally focused on an underlying business that
`has nothing to do with the web service. Therefore, the web
`service is outside of the core competency of the business.
`Accordingly, hiring individuals to run and deploy the web
`service can be distracting and inefficient. There are various
`web service application platforms that are commercially
`available to make this process easier. Nevertheless, these web
`service application platforms still require recoding ofthe base
`web service in order to expand the functionality of the web
`service. This recoding operation can disrupt the successful
`operation of the base web service.
`In View ofthe foregoing, it would be desirable to provide a
`mechanism for enhancing the functionality of existing web
`services. Ideally,
`the technique would provide enhanced
`functionality without disrupting the code associated with the
`underlying web service.
`
`SUMMARY OF THE INVENTION
`
`The invention includes a method of supplementing the
`operations performed by a web service. The method utilizes
`an autonomous software agent. The autonomous software
`agent receives a request directed to a web service and identi—
`fies a web service input operation associated with the request.
`The web service input operation is associated with a set of
`input actions. The input actions are executed prior to directing
`the request to the web service. The autonomous software
`agent may also receive a response from the web service. A
`web service output operation associated with the response is
`identified. The web service output operation is associated
`with a set of output actions. The output actions are executed
`prior to directing the response to a client.
`The invention also includes a computer readable media to
`direct a computer to operate in a specified manner. The com-
`puter readable media has an autonomous software agent con-
`figured to receive a request directed to a web service, identify
`a web service input operation associated with the request,
`associate the web service input operation with a set of input
`actions, and execute the input actions prior to directing the
`request to the web service. The autonomous software agent if
`further configured to receive a response from the web service,
`identifies a web service output operation associated with the
`response, associates the web service output operation with a
`set of output actions, and executes the output actions prior to
`directing the response to a client.
`The invention facilitates the conversion of web services
`into enterprise-class web services that are secure, manage-
`able and dynamically scalable. The invention facilitates the
`examination of the content of messages, the modification of
`the content of messages, the rerouting of messages, and the
`analysis of the context of messages.
`
`
`
`BRIEF DESCRIPTION OF THE FIGURES
`
`
`
`The invention is more fully appreciated in connection with
`the following detailed description taken in conjunction with
`the accompanying drawings, in which:
`FIG. 1 illustrates a basic prior art web service architecture.
`FIG. 2 illustrates a distributed web service architecture
`utilized in accordance with the prior art.
`FIG. 3 illustrates a prior art computer network supporting
`a web service.
`
`FIG. 4 illustrates a web service architecture configured in
`accordance with an embodiment of the invention.
`
`Page 17 of 22
`
`4
`FIG. 5 illustrates a computer network configured to support
`a web service in accordance with an embodiment of the
`invention.
`FIG. 6 illustrates a configuration for an autonomous agent
`that may be utilized in accordance with an embodiment ofthe
`invention.
`FIG. 7 illustrates an action list that may be used to imple-
`ment embodiments of the invention.
`FIG. 8 illustrates a mapping between a web service opera-
`tion, processing phases associated with the operation, and
`action lists used to implement the processing phases.
`FIG. 9 illustrates web service processing paths utilized in
`accordance with an embodiment of the invention.
`FIGS. 10A-10C illustrate processing steps performed in
`accordance with an embodiment of the invention.
`FIG. 1 1 illustrates the operation of an environment monitor
`implemented in accordance with an embodiment ofthe inven—
`tion.
`FIG. 12 illustrates the operation of an agent configuration
`editor implemented in accordance with an alternate embodi-
`ment of the invention.
`FIG. 13 illustrates the operation of an authorization policy
`editor implemented in accordance with an embodiment ofthe
`invention.
`
`Like reference numerals refer to corresponding parts
`throughout the several views of the drawings.
`
`DETAILED DESCRIPTION OF THE INVENTION
`
`FIG. 4 illustrates a web service architecture 400 configured
`in accordance with an embodiment of the invention. The web
`service architecture 400 includes a web service client 401,
`which communicates with a web service 402 through an
`agent 404. A web service request (e.g., an XML request), as
`shown with arrow 406, is intercepted by agent 404, which
`processes the intercepted message in accordance with tech-
`niques described below. The message is then routed to the
`web service 402, as shown with arrow 408. The processing at
`web service 402 is performed in a standard manner, without
`alteration by the agent 404. As shown with arrow 410, the
`output from the web service 402 is applied to the agent 404,
`which processes the outgoing information in accordance with
`techniques described below. The output from the agent 404 is
`applied to the web service client 401, as shown with arrow
`412.
`Thus, the agent 404 sits between the web service client 401
`and the web service 402. In accordance with the invention, the
`agent 404 is an autonomous entity that interacts with the web
`service 402, without altering the underlying code associated
`with the web service 402. The agent 404 provides analyses of
`the content and context of the messages that are routed to and
`from the web service 402. The agent responds to different
`events, such as the receipt ofa mes sage, an event occurring, or
`a variable changing value or state. The agent responds to each
`event by executing instructions called actions. An action
`instructs an agent to perform a unit of processing. Typical
`actions include logging data, sending an email message,
`sending a request to a web service, and updating variables.
`FIG. 5 illustrates a computer network 500 configured to
`support the web service of the invention. The network 500
`includes a client computer 502 connected to a communication
`link 504. Also comiected to the commumcation link 504 are
`various server computers 506, 508, and 510.
`Client computer 502 has a standard configuration, includ-
`ing a CPU 512, a bus 514, and a network interface 516. A
`memory 518 stores web client software 520, which facilitates
`the initiation of web service requests in a standard manner.
`
`10
`
`15
`
`20
`
`30
`
`35
`
`40
`
`45
`
`50
`
`60
`
`65
`
`Page 17 of 22
`
`
`
`US 7,549,153 B2
`
`5
`Server 506 has a network interface 522 connected to a bus
`524, which is connected to a CPU 526. A memory 530 is also
`connected to the bus 524. The memory 530 stores one or more
`prior art web services 532A-532N. In accordance with the
`invention, the memory (also referred to as a computer read-
`able media) 530 also stores one or more autonomous agents
`534A-534N. In one embodiment of the invention, a separate
`autonomous agent is provided for each web service. For
`example, autonomous agent 534A is associated with web
`service 532A. Memory 53 0 also stores a management console
`536. In one embodiment of the invention, the management
`console includes an environment monitor 537, an agent con-
`figuration editor 538, and an authorization policy editor 539,
`cach of which Will be discusscd bclow.
`FIG. 5 also illustrates a server 508 with a network interface
`540 connected to a bus 542, which is connected to a CPU 544.
`A memory 546 is also connected to the bus 542. The memory
`546 stores a set ofweb services 548A-548N. The autonomous
`agents 534A-534N may be associated with the web services
`548A-548N. Thus, the autonomous agents 534 of the inven-
`tion need not be on the same computer as the web service that
`is being enhanced. This point is further amplified in connec-
`tionwith server 510 ofFIG. 5. Server 510 includes a CPU 550
`connected to a network interface 554, via a bus 552. A
`mcmory 556 is also conncctcd to thc bus 552. The memory
`556 stores a set of autonomous agents 558A-558N. The
`autonomous agents may be associated with the web services
`532 on server 506 or the web services 548 on server 508.
`As can be appreciated from FIG. 5, an agent can operate on
`the same computer (or container) as the web service it man-
`ages, in which case it can be referred to as an in-server agent.
`Altemately, the agent can operate on a separate computer (or
`container), in which case it can be referred to as an external
`agent. An external agent operates as a web service,
`is
`addressed as a web service, and functions as an agent for a
`different web service. Therefore, an external agent can be
`used to manage the communication with a web service pro-
`vided by a partner organization. An in-server agent is inserted
`into the messaging layer of the web service’s container. For
`example, the agent can be installed as a servlet filter in a
`servlet container. In the case of an in-server agent, existing
`web service clients can continue to contact the web service at
`
`the original address.
`In the prior art, such as in the configuration of FIG. 1, a web
`service client 100 contacts a web service 104 by using the
`information in the web service’s Web Service Description
`Language (WSDL) file. The WSDL file indicates the URL
`where the web service is located, lists the operations that are
`provided by the web service, and defines the structure of the
`SOAP messages used to request the operations. Thus, WSDL
`provides a way for service providers to describe the basic
`format of web service requests over different protocols or
`encodings. WSDL is used to describe what a web service can
`do, where it resides, and how to invoke it. Once the client has
`this WSDL filc, it can contact the web scrvicc and rcqucst its
`operations.
`In the case of the autonomous agents of the invention, a
`client contacts the agent, and the agent redirects requests to
`the web service. Because the agent acts as a client to the web
`service, the agent must know the location of the web service’ s
`WSDL file. The clients do not retrieve the WSDL file of the
`
`web service, but instead can retrieve the agent’ s replacement
`WSDL file. The agent provides this WSDL file that shows the
`same operations and SOAP message definitions as the origi-
`nal web service’s WSDL file, but with the URL changed to
`point to the agent. When an in—server agent is used, the clients
`continue to access the web service’s WSDL file directly,
`
`10
`
`15
`
`20
`
`30
`
`35
`
`40
`
`45
`
`60
`
`65
`
`6
`because the in-server agent is installed in the messaging layer
`of the web service’s container. Therefore, clients do not need
`to be redirected to the agent’s URL.
`FIG. 6 illustrates an exemplary architecture for an autono-
`mous agent 534 of the invention. In one embodiment, the
`autonomous agent 534 includes a module layer 600, a core
`layer 602, and a platform layer 604. The module layer 600
`includes one or more action lists 606. FIG. 6 illustrates action
`lists 608A-608N.
`
`FIG. 7 illustrates an exemplary action list 700. The action
`list 700 includes actions 702A-702N. Each action 702 has an
`associated condition 704 and parameter 706. Fach action
`represents an operation that can be performed in comiection
`with a mcssagc. An individual action is implcmcntcd using
`one or more modules. Thus, FIG. 7 illustrates that Action A
`702A is implemented using modules 710A-710N, while
`Action N 702N is implemented using modules 712A—712N.
`Each module has a different functional attribute, such as a
`security function, a monitoring function, a logging function,
`and the like. Unless the actions are linked, they are not aware
`of one another. Therefore, a failure of one action does not
`impact other actions.
`Returning to FIG. 6, the core layer 602 operates as an
`interface between the module layer 600 and the platform layer
`604. The corc laycr 602 may bc configurcd to includc a
`module backplane 610 to interface with the module layer 600
`and a platform interface layer 612 to interact with the plat-
`form layer 604. The platform layer is implemented as a user-
`selected platform (e.g., JAVA®).
`FIG. 8 illustrates the mapping from a message operation to
`processing phases utilized in accordance with the invention,
`which are in turn associated with actions lists. Thus, the
`operation 800 specified within a message is decomposed into
`an input phase 802, an output phase 804, and a fault phase
`806, if necessary. Individual phases or all of the phases may
`be invoked in response to an operation. For each phase, there
`is an associated action list. Thus, FIG. 8 illustrates that the
`input phase 802 has an associated action list 810 with actions
`812A-812N. The output phase 804 has an associated action
`list 814 with actions 816A—816N, while the fault phase 806
`has an associated action list 818 with actions 820A-820N.
`The actions associated with the invention are more fully
`appreciated inconnection with a more specific example. Con—
`sider a stock quote web service that supports different opera-
`tions, such as getting a quote, selling stock, and buying stock.
`The syntax associated with this web service may be as fol-
`lows:
`
`stockiquoteiwebisewlce
`opcrationil /c.g., get a quotc/
`operationifl /e.g., sell stocld
`operationii‘l /e.g., buy stock/
`
`The basic operations (e.g., operationil, operationiZ, and
`operation_3) associated with the stock_quote_web_service
`are supplemented with the actions of the invention. The
`actions of the invention do not impact the underlying opera-
`tions of the web service. Instead, they supplement the under-
`lying operations of the web service without modifying the
`web service. Thus, the invention provides extended function—
`ality for a web service, without changing the code of the
`underlying web service. The extended functionality can be in
`the form ofprocessing based on message content and context
`processing. The conditions 802 and parameters 804 of the
`actions facilitate content and context awareness. A11 example
`
`Page 18 of 22
`
`Page 18 of 22
`
`
`
`US 7,549,153 B2
`
`7
`of content awareness would be the analysis of incoming mes-
`sages to identify all orders over 500 shares. Based upon this
`content awareness, another action could be invoked, such as
`advising a sales person ofa relatively large order. An example
`of context awareness would be the tracking of cumulative
`stock trades in a given time period to determine whether they
`exceed a threshold. As will be discussed below, an “instru-
`ment” can be used as a variable to track the cumulative stock
`trades. Ifthe threshold is exceeded, then another action can be
`invoked, such as advising a trading manager.
`The invention’ 5 use of actions has now been described. The
`combination of actions into action lists to perform functions
`executed by an autonomous agent has also been described.
`Attcntion now turns to cxamplcs of diffcrcnt actions that may
`be specified in accordance with the invention. The following
`discussion will also address how actions and action lists are
`
`used for processing messages and events in accordance with
`the invention.
`As previously indicated, when a specified message event
`occurs, an agent executes individual processing instructions
`called actions. By way ofexample, the following actions may
`be utilized in accordance with an embodiment of the inven-
`tion.
`Check Access: apply authorization checks to verify that the
`rcqucstor is authorized to makc a spccific rcqucst of thc
`web service operation.
`Email: send an email message to someone, such as a sys-
`tem administrator.
`
`Log: write a message to a log file or a monitor.
`Pivot: move from the input processing phase directly into
`the output processing phase (without executing the
`remaining actions in the sequence, and Without sending
`the request to the target web service).
`Redirect: redirect the request to an altemate web service
`instcad of contacting the targct wcb scrvicc (for
`example, if the target web service has gone down, redi-
`rect the request to a backup web service that provides the
`same operations).
`Send: send a message to another web service before, after,
`or instead of contacting the target web service (for
`example, before contacting the target web service, send
`a mcssagc t0 anothcr wcb scrvicc to locatc additional
`information needed by the target web service to process
`the request).
`Transform: change the format or content of a message
`using the message itself and its context information.
`Update Instrument: update the value of an instrtmlent.
`
`Simple tasks can be accomplished by using single actions.
`For example, one can use a log action to write an incoming
`request message to a log file.
`One can accomplish a complex task by constructing a
`sequence of actions. For example, one might create a heart-
`beat function that periodically contacts a web service. If the
`web service does not respond after a series of attempts, one
`can sct an instrumcnt valuc t0 indicatc that thc wcb scrvicc is
`down, so that the agent can redirect subsequent requests to a
`back-up version of the web service. The heartbeat fiJnction
`might also send an email message to the system administrator
`to indicate that the agent