Many different proposals (e.g., Petri nets, Linda and other tuple-space languages, CHAM, Join calculus) for applying formal methods to distributed systems rely on two fundamental design postulates: (1) states are multisets; and (2) elementary actions can atomically fetch (or release) several state components, thus synchronizing them at the event level. However, they often miss a third feature which is instead very useful for programming reliable services, namely the definition of transactions, grouping events into work units that either completely succeed or have no effect. Note that we are interested in transactions denoting atomic computations in a concurrent and causal scenario (as opposed to a sequential one). Though ad-hoc transaction mechanisms are integrated in languages such as BizTalk Orchestration and JavaSpaces, we think the issue deserves a uniform treatment along the many calculi proposed in the literature. Building on points (1) and (2) above, it is in fact possible to define a taxonomy of models with increasing expressiveness. 1 Starting from PT Petri nets, where tokens are seen as non structured data, one may move to colored or high level nets, whose preand postsets are based on domains of token values. In reconfigurable nets, a postset may depend on the values got from the preset (i.e., presets are static, but postsets can change), and thus network reconfigurability can be accounted for. In dynamic nets, not only a firing can modify the current marking, but can also increase the set of transitions (i.e., the control). In Join the situation is analogous to dynamic nets, because new agents can be generated at run-time by the application of reduction steps. When adding transactions, one has two main issues to handle: (i) semantics, a sound theoretical characterization of transactions, making it possible to study their properties and the way in which they can be combined together (e.g., in parallel, sequentially, serializability matters); (ii) algorithms, the development of distributed interpreters, which are able to implement transactions in a consistent way with the semantic level. Hence, it is convenient to select a formal language where these issues can be easily dealt with also at the syntax level. Zero-safe nets have been proposed to make these intuitions concrete for several flavors of PT Petri nets.
[1]
Roberto Bruni,et al.
Transactions and Zero-Safe Nets
,
2001,
Unifying Petri Nets.
[2]
R. Bruni.
Tile Logic for Synchronized Rewriting of Concurrent Systems
,
1999
.
[3]
Roberto Bruni,et al.
Zero-Safe Nets: Comparing the Collective and Individual Token Approaches
,
2000,
Inf. Comput..
[4]
Roberto Bruni,et al.
Executing Transactions in Zero-Safe Nets
,
2000,
ICATPN.
[5]
Roberto Bruni,et al.
Zero-safe nets: The individual token approach
,
1997,
WADT.
[6]
Roberto Bruni,et al.
Zero-safe nets, or transition synchronization made simple
,
1997,
EXPRESS.
[7]
Roberto Bruni,et al.
Zero-safe net models for transactions in Linda
,
2001,
Electron. Notes Theor. Comput. Sci..
[8]
Roberto Bruni,et al.
Zero-Safe Nets: Composing Nets via Transition Synchronization
,
1999
.