Web Services
The Zocalo Web services provide the fundamental problem-solving functionality within Zocalo. They handle planning and mediation problems, which can be computationally expensive. Providing this functionality on powerful servers rather than on the end-user's machine, allows planning-based applications to be delivered to virtually any device with an Internet connection.
Using an architecture based around Web services also allows for components to be replaced, extended, or added. The open APIs for the Web services could be used for alternative implementations without necessitating changes to the Execution Manager or the execution environments. The Web services methodology also allows for applications to choose among multiple deployments at runtime; it would be practical to have multiple servers running Fletcher with the Execution Manager choosing the server with the lowest load.
Read more about the details of the Fletcher, CrossWind, and Kyudo Web services.
Execution Manager
The Execution Manager bridges the gap between the Web services, which compute plans involving conceptual operators, and the execution environments, which realize plans in concrete ways. It is provided in three different forms: a .NET DLL, a C DLL that uses the .NET framework internally, and a socket-based stand-alone executable. All three forms provide the same functionality and are available for download; the variety is provided to ease integration with execution environments running in different types of applications.
Information must be pulled from the Web services, by making HTTP requests; however, execution environments that support user interactivity are well suited for push-style information sources. The Execution Manager stands between these two components, pulling information from the Web services, combining it with information from an execution environment, and then pushing the processed data to the execution environment in the form of executable plan steps.
Execution Environments
Developers can write clients that communicate with Zocalo's Execution Manager in order to execute partial-order plans. A Zocalo client for Unreal Tournament 2004 (UT2k4) has been completed and is available for download. There are also movies that showcase aspects of Zocalo within the UT2k4 client. Extension of the UT2k4 client is ongoing as well as development of a Half Life 2 client.
Planning Schemas
Complex pieces of information are frequently transferred among the Web services and other components in Zocalo. These planning problems, plans, action sets, and other documents need to conform to a standard format in order to be usable by the Zocalo components. The planning schemas and the Planning.Xml assembly provide an API that developers can program against, making it easier to work with these documents.
The planning schemas are written in the W3C XML Schema Definition Language and are embedded into the Planning.Xml assembly. The classes in the Planning.Xml assembly include readers that validate XML documents against these schemas as they are read, parsers that push XML data via strongly-typed methods, and writers that write new XML documents from calls to strongly-typed methods. These classes used throughout the Zocalo components and may also be useful when developing new execution environments. The .NET assembly and the schema files are available for download.

