Serendipity Home Page

Serendipity is a process modelling and enactment environment that uses primarily visual languages to describe process models. It also provides a novel event-processing visual language to enable end users to define various task automation facilities - software agents, if you prefer that terminology.

Two versions of Serendipity have been developed to date: one using the MViews framework (implemented in an OO Prolog on the Macs), the other, Serendipity-II, implemented with the JViews framework (in Java). Serendipity has the nicest interface, but no useful collaborative usage facilities. Serendipity-II's interface isn't quite so well-developed, but has a decentralised software architecture for collaborative process modelling, enactment and software agent execution.

You can find out more about these environments by looking at the papers listed at the end of this document.

1. Serendipity

The Serendipity process modelling and enactment environment supports multiple, visual language process model descriptions. Figure 1 shows a screen dump of Serendipity in use.
 
 

Figure 1. Serendipity in use. (from [2])

The process modelling language supports process stage (rounded rectangle icon), user/role, artifact and tool component descriptions. These are related with event flow, usage and composite links. Multiple views with overlapping information can be built up, giving end users control over how the view their process models. Full consistent management and view versioning is supported.

Process models in Serendipity are enacted and driven by "enactment events", which are either user-generated, generated by stages starting/stopping, or created by software agents. Figure 2 shows an enacted Serendipity process model.
 



Figure 2. Enacted process model. (from [2])

Serendipity supports software agent (or "task automation facility") specification with a visual language for event handling. Figure 3 illustrates a simple event handling model specified in Serendipity-II.
 



Figure 3. Simple event handling model. (from [2])

Serendipity has a centralised, client-server based software architecture. It uses Snart (OO Prolog) object persistency and MViews-supported distribution capabilities. This turned out to be one of its weaker points. In addition to its lack of speed and portability, it was one of the main reasons to moving to the Java/JViews-based Serendipity-II.

2. Serendipity-II Process Modelling

A few improvements were made to the Serendipity visual process modelling language in Serendipity-II, but the essentials are mostly the same. Figure 4 shows a process model definition in Serendipity-II. Once again, multiple views are supported, but also flexible view editing, with synchronous to asynchronous modes of operation. Figure 5 illustrates an example of asynchronous editing and incremental merging to support collaborative process modelling. These collaborative editing facilities are provided by a JViews plug-in component (whose presence can be detected as the "Collaboration" menu item affordance).

Figure 4. Process model in Serendipity-II. (from [3])

Figure 5. Asynchronous editing in Serendipity-II. (from [3])

One of the nice things about Serendipity-II is its tolerence of disconnection from a collaborative view editing session. Shared views default to asynchronous editing and all view edits are stored and can be exchanged to ensure users have consistent views or at least consistent view edit histories. How view versions can also be exchanged freely. The JViews framework provides all the facilities to do this in a flexible, decentralised way.

3. Serendipity-II Process Enactment

Users enact process models, via a dialogue, or stage start/stop events enact related stages, or software agents generate enactment events. Figure 6 shows an enacted Serendipity-II process model. The "to-do" list dialogue shows enacted stages.

Figure 6. Enacted process model in Serendipity-II. (from [3])

Again, Serendipity-II supports failure of network connections by caching enactment events and handling broadcasting of these when users reconnect. It supports enactment of different versions of the same view between collaborating users. Process models can also be modified while enacted.We use a simple but pragmatic approach to supporting enactment which is tolerent of all of these situations, and of process exception handling.

4. Serendipity-II Software Agents

A visual language is again the main way of composing and depoloying software agents, but is much improved over the Serendipity version. In fact, this filter/action language for Serendipity-II is a specialised form of a general event handling visual language from the JComposer metaCASE tool, and based on general "listener" components from the JViews frameworks. Serendipity-II filters and actions are components which can be implemented as a composite of other components in Serendipity-II, or as proxy JViews component object (only the second form is properly implemented at the moment). Figure 7 shows a simple agent definition in Serendipity-II. Both local and distributed agents are supported. More work needs to be done to make distributed agents easier to specify and deploy, but this is in progress.

Figure 7. Software agent specification in Serendipity-II. (from [3])

5. Serendipity-II Decentralised Architecture

Serendipity-II uses a fully decentralised software architecture, with no servers. Figure 8 illustrates the architecture.

Figure 8. Decentralised Serendipity-II software architecture.

6. Future Work...

There are lots of things that can be done to improve the usability and functionality of Serendipity-II. Some things I'm currently mulling over (when I have time!) include:

Selected Publications

[1] Grundy, J.C., Mugridge, W.B., Hosking J.G. Supporting Large-scale End-user specification of workflows, work
coordination and tool integration, Journal or End-User Computing, Vol. 10, No. 2, May 1998, Idea Group Publishing,
pp. 39-49.

[2] Grundy, J.C. and Hosking, J.G. Serendipity: integrated environment support for process modelling, enactment and work
coordination, Automated Software Engineering: Special Issue on Process Technology 5(1), January 1998, Kluwer
Academic Publishers, pp. 27-60. Postscript

[3] Grundy, J.C., Hosking, J.G., Mugridge, W.B., Apperley, M.D. An architecture and environment for decentralised,
internet-wide software process modelling and enactment, IEEE Internet Computing: Special Issue on Software Engineering via the Internet, Vol. 2, No. 5, September/October 1998, IEEE CS Press. PDF

[4] Grundy, J.C., Hosking, J.G., Mugridge, W.B. Inconsistency Management for Multi-view Software Development
Environments, to appear in IEEE Transactions on Software Engineering: Special Issue on Managing Inconsistency in Software Development, IEEE CS Press. Postscript

Downloadable Software

I've made the .class files of Serendipity-II available on-line for people to play with (I wouldn't recommend serious use, although we have deployed Serendipity-II on a software development project). Its all in a state of flux at the moment as JViews and BBW are getting major overhauls to better use the Java 1.1 and Swing APIs.

To install Serendipity-II, you will need to:

Sorry about the user interface - Rick Mugridge is working on a much nicer version - the current one is pretty glitchy and has a few bugs...

It goes without saying that this is supplied with absolutely no warranty at all and there are numerous bugs, features, foibles, etc. still in it!
 

Back to John Grundy's Projects page...