throbber
USOO7549153B2
`
`(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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket