PiDuce is a distributed implementation of pi-like process calculi with native XML datatypes developed at the Department of Computer Science of Bologna.
PiDuce relies on a new model for the distributed implementation of pi-like calculi, which permits strong correctness results that are simple to prove -- the PiDuce Distributed Machine. This machine, as the Join Calculus Machine, groups processes at their channels (or locations), in contrast with the more common approach of incorporating additional location information within processes. In contrast with the Join Calculus Machine that does not support messages carrying channels with input capability, the PiDuce Distributed Machine allows such feature and implements it by means of linear forwarders.
PiDuce natively uses XML datatypes: values, messages, and processes are XML documents. The language may construct XML documents, and by means of a powerful pattern mechanism, deconstruct them. Programs are strongly typed by means of XML Schema and the static semantics ensures that invalid documents can never be produced. Messages may contain Uniform Resource Identifiers that represent web addresses.
PiDuce has been designed to experiment emerging service oriented technologies such as web services and business process management systems.
The Fusion Machine - Extended abstract - Gardner, Laneve, Wischik - In CONCUR'02, LNCS 2421, pp 418-433, 2002. The Fusion Machine is the precursor of the PiDuce Machine. It was a distributed machine implementing pi-like calculi by means of concurrent constraints called fusions -- equations on channel names.
Linear Forwarders - Gardner, Laneve, Wischik - in CONCUR'03, Marseille, August 2003. LNCS 2761. The Fusion Machine was fragile as regards failures. The PiDuce Distributed Machine improves robustness by replacing fusions with linear forwarders.
PiDuce: a process calculus with native XML datatypes, by A. Brown, C. Laneve, G. Meredith, in Proceedings of 2nd International Workshop on Web Services and Formal Methods, LNCS 2005 (Invited Talk). PiDuce is a statically typed process calculus with native XML datatypes. This contribution defines a static semantics supporting openness of web applications, specifies a dynamic semantics accounting for the transmission of messages that may contain Uniform Resource Identifiers (channels or sevice addresses), and demonstrates the soundness of the former with respect to the latter.
The PiDuce Distributed Machine Architecture, by S. Carpineti, C. Laneve, P. Milazzo, December 2004 - in ACSD'05, St. Malo IEEE p2363, pp 202-212,2005. In this paper the architecture of the PiDuce Distributed Machine and the language are illustrated. The presentation of the language is via examples while the architecture is described exhaustively.
A basic contract language for web services - by S. Carpineti, C. Laneve, to appear in Proceedings of ESOP 2006, January 2006. In this paper a schema language for modelling XML documents containing channels is presented and two equivalent subschema algorithms are defined. The first one uses a simulation relation; the second one (used in the current prototype of PiDuce) examines the structure of the schema.
Smooth orchestrators - by C. Laneve, L. Padovani, to appear in Proceedings of FOSSACS 2006, January 2006. A smooth orchestrator is a process with several alternative branches, every one defining synchronizations among co-located channels. Smooth orchestrators constitute a basic mechanism that may express standard workflow patterns in web services as well as common synchronization constructs in programming languages. Smooth orchestrators may be created in one location and migrated to a different one, still not manifesting problems that usually afflict generic mobile agents. We also study the translation of smooth orchestrators into finite-state automata, therefore addressing the implementation of co-location constraints and the case when synchronizations are not linear with respect to subjects.
PiDuce -- a project for experimenting Web Services technologis - by S. Carpineti, C. Laneve, L. Padovani, January 2006. The PiDuce project aims at experimenting Web services technologies by relying on solid theories about process calculi and formal languages for XML documents and schemas. The PiDuce programming language has values and datatypes that extend XML documents and schemas with channels, it uses a pattern matching mechanism for deconstructing values, and it retains control constructs that are based on Milner's asynchronous pi-calculus. The compiler yields typesafe XML object codes by means of a powerful type system with subtyping. The runtime supports the execution of programs overnetworks by relying on state-of-the-art technologies, such as XML schema and WSDL, thus enabling interoperability with existing Web services. In this paper we thoroughly describe the PiDuce project: the programming language and its semantics, the architecture of the distributed runtime and its implementation.
The must preorder revisited: an algebraic theory for web services contracts - by C. Laneve, L. Padovani, in CONCUR 2007. We define a language for Web services contracts as a parallel-free fragment of CCS and we study a natural notion of compliance between clients and services in terms of their corresponding contracts. The induced contract preorder turns out to be valuable in searching and querying registries of Web services, it shows interesting connections with the must preorder, and it exhibits good precongruence properties when choreographies of Web services are considered. Our contract language may be used as a foundation of Web services technologies, such as WSDL and WSCL.
Download Talk Slides
Implementing the Fusion Machine. Talk at Highwire Workshop in Bologna, September 2002, 349k, 9 pages
BoPi - a distributed machine for experimenting Web Services technologies. Talk at ACSD 2005, Fifth International Conference on Application of Concurrency to System Design, St. Malo, June 2005.
PiDuce - a process calculus with native XML datatypes. Invited Talk at the 2nd International Workshop on Web Services and Formal Methods, Versailles, September 2005.
PiDuce. Seminar at the Information Science and Technology Institute, University of Urbino, December 2005.
PiDuce/schemas, wsdls, and contracts. Seminar at the TraLaLa workshop, Paris 2006
A Formal Account of Contracts for Web Services. Presentation at the 3rd International Workshop on Web Services and Formal Methods, September 2006.
The current implementation is written in C# and provides a compiler and a runtime engine. The compiler compiles PiDuce programs and generates the correspondent XML bytecode. The runtime is composed by a channel manager and an interpreter. The channel manager represents a location, it manages inputs, outputs and reactions over its set of channels. The interpreter receives bytecode from the network and interprets its instructions. The prototype is interoperable with standard Web services becaue it uses WSDL as language for describing channel interfaces, SOAP as protocol for sending XML messages over channels and HTTP as transport protocol.
The source code of the PiDuce Project, the pre-compiled binaries, as well as some example files can be downloaded from this page.