This example describes the Call Processing Language (CPL), which is used to describe and control Internet telephony services. The purpose of CPL is to be powerful enough to describe a large number of services and features, but it is limited in power so that it can run safely on Internet telephony servers (Lennox et al. 2004). An example of one modeled service can be seen in Figure 1. The intention of the CPL language is to make it impossible for users to do anything more complex (and dangerous) than describing Internet telephony services. The structure of the language maps closely to its behavior, so any CPL service developer can easily understand and validate the script even from these graphical models.
Figure 1: Example of Call Processing Language model
CPL modeling language concepts are based on the key elements and hierarchical structure described in the CPL specification. Language elements like Switches, Locations and Signaling actions and their attributes, are specific for processing Internet phone calls and services. These concepts are automatically familiar to the service developer and they form a comprehensible working environment for all CPL service developers. Generated XML output can be seen in Figure 2.
Figure 2: CPL output example
Using CPL/XML as an example, designs could be considered valid and well-formed already at the design stage. Thus it was far more difficult to design Internet telephone services that were erroneous or internally inconsistent: something that was all too easy in hand-written CPL/XML. All the developers use domain's familiar concepts, so models are automatically easier to read and remember. This is an example of CPL, there are also cases where the basic CPL language has been extended to cover also domain extensions and new requirements e.g. for Java and VoiceXML, see paper in DSM forum (http://www.dsmforum.org/Events/DSM04/luoma.pdf).
Lennox, J., et al., (2004) CPL: A Language for User Control of Internet Telephony Services. Internet Engineering Task Force, IPTEL WG, April.
Original material © MetaCase, used by permission