Submitted to The 2005 IEEE/WIC/ACM International Conference on Web Intelligence (WI'05) Pending review Fletcher: A Web Service for Planning Thomas M. Vernieri Department of Computer Science North Carolina State University tmvernie@ncsu.edu R. Michael Young Department of Computer Science North Carolina State University young@csc.ncsu.edu Abstract Artificial intelligence planning has traditionally been realized in applications that are tightly bound to planning systems. In this paper, we describe Fletcher, a Web service that exposes and augments a planning system. Fletcher provides an alternative to including a planner implementation within applications. In addition to benefiting applications that need to execute planning tasks, Fletcher gives human authors the option to be involved in the planning process directly. 1. Introduction Web services have been instrumental in allowing applications to enhance their functionality by composing openly available components. Artificial intelligence (AI) planning systems have the potential to be used in a range of conventional applications, but they are rarely used outside of specialized intelligent systems. The work we describe here makes planning more accessible to developers of conventional applications by providing access to a planning system through a Web service named Fletcher. Using a Web service as an interface to a planning system is a significant shift from previous methods for including AI planning functionality in applications. The typical method for including planning functionality in an application is to compile the planner into the application at build-time. This restricts the application developer in a number of ways. First, it requires either that the application be built using the same programming language used to construct the planning system or that the application developer connect his or her code to the planning system via a cross-language interface. Second, the application must share computational resources with a planning system whose runtime requirements are usually quite demanding. Finally, even though several instances of an application may be performing similar or identical planning tasks, the planners are isolated from each other, potentially resulting in duplicated work. For example, if two colleagues are collaborating on a task by each using an application containing a traditional AI planner, the two application instances may both do the same computations at different times during the collaboration. Since the planning system is part of the application, there are no built in mechanisms to allow one instance of the application to take advantage of the results obtained by the other. Since planning tasks often consume a large amount of computational resources, the ability to share information across planning-enabled applications could be a substantial runtime benefit. Applications that use Fletcher include in their code a lightweight Fletcher client responsible for communicating with the Fletcher Web service; in Section 5, we discuss third-party tools that automatically generate this client code for a variety of programming languages. This service-oriented approach has two main benefits over a design requiring that a planning system be built into an application. First, applications that include a Fletcher client can discover a Fletcher server at runtime, allowing them to select a server that can provide them with the lowest computational load, highest processor speed, or lowest usage rates. Second, Fletcher client applications can delegate the often-substantial computational cost of a planning system to a server rather than consuming computational resources on its own processor. Fletcher also gives the developer substantial flexibility when it comes to controlling and gathering information about how the planning problem is solved. When solving a planning problem, Fletcher uses an underlying model of planning as a search through a space of plans. The messages that a client can send to Fletcher determine how the search space of the planning problem is explored and provide the client with detailed information about the portions of the search space the planner has computed. Fletcher’s flexibility provides different clients with distinct methods for accessing its services. For example, an application may access Fletcher in a manner similar to the way that conventional planning systems are accessed—by requesting that Fletcher construct a solution plan for a planning problem. Additionally, applications may use more of Fletcher’s functionality to control the planning process to a fine degree, for instance, by requesting incremental planning efforts or by parceling out elements of a large planning problem to separate Fletcher services. Further, an application may expose the communication between server and client to its user via a graphical user interface and allow the user to provide