Accent Tool Suite
(Advanced Component Control Enhancing Network Technologies)

Accent Logo

See the download page to obtain this program

Accent Overview

Accent (Advanced Component Control Enhancing Network Technologies) is a comprehensive tool suite that provides interfaces to a variety of communications systems, but more importantly allows these systems to be controlled through goals (high-level user aims) and policies (lower-level rules for how a system should behave). Accent has so far been applied to the domains of:

However, the approach is designed to be generic and extensible for managing other kinds of systems. The three domains above show that the Accent approach can be adapted for different applications.

Accent is essentially software. As most of Accent in written in Java, it needs at least a JRE (Java Runtime Environment) but more likely a Java SDK (Software Development Kit) such as Oracle JDK or OpenJDK. However, to interact with the real world Accent needs relevant hardware such as a communications server (softswitch) or home automation equipment.

Accent Licence

The Accent Tool Suite is is free software. You can redistribute it and/or modify it under the terms of the Gnu General Public Licence, either version 3 or (at your option) any later version.

This program is distributed in the hope that it will be useful, but without any warranty and without even the implied warranty of merchantability or fitness for a particular purpose.

Accent Capabilities

From one point of view, Accent offers interfaces to the following kinds of systems. These interfaces may be useful in their own right, irrespective of the support for goals and policies:

From another point of view, Accent offers a comprehensive approach for controlling systems through goals and policies. Since policy support was developed before goal support, some subsystems are named after policies though they also apply to goals. The overall architecture of the system is as follows:

General System Architecture

Goal and Policy Language

Appel (Adaptable and Programmable Policy Environment and Language) was originally developed on the Accent Project for control of Internet telephony. The acronym therefore originally stood for 'Accent Project Policy Environment/Language'. The name also derives from the French word for a call, so the stress is on the second syllable. Subsequently, Appel was extended into new domains: sensor network and wind farm management on the Prosen Project, home automation and telecare on the Match project. Initially Appel supported only policies. Capabilities were later added for supporting policy variables, resolution policies and goals so Appel is not limited to plain policies.

The development of Appel and its supporting tools was undertaken by Jason Adair, Lynne Blair, Gavin Campbell, Tingxue Huang, Stephan Reiff-Marganiec and Ken Turner of Computing Science (University of Stirling).

Appel is an XML-based language for defining goals (high-level user aims) and policies (lower-level rules for how a system should behave) for how a system should automatically react to certain stimuli in certain situations. It is an example of a general class of policy languages called ECA (Event-Condition-Action). Appel differs from other policy languages in a number of distinctive ways:

Appel has been applied to call control for Internet telephony, management of sensor networks and wind farms, and managing home automation and telecare.

The following diagram shows how Appel can be extended for new domains. The core language is domain-independent and defines common aspects such as goal, policies, variables, timers and histories. This is then extended for regular policies (that perform actions in response to events) and resolution policies (that detect and resolve conflicts among policy actions). Each of these is then particularised for an application domain such as call control or home care.

Appel Schema Levels

Appel is defined through XML schemas supported by OWL ontologies. The latter are also defined in a modular and hierarchical fashion, allowing ready extension to new application domains. See the actual schemas and ontologies for the fine details.

The key structural elements of Appel are as follows:

Goal and Policy Examples

The following will give a feel for Appel. Although Appel uses XML internally, in practice it is defined and edited with a user-friendly policy wizard to render policies in a much more readable form. The examples below illustrate regular policies, resolution policies and goals for call control. Each example has a textual explanation, then its typical representation in a policy wizard, and finally its raw XML form.

Regular Policy: Forward Incoming if Busy

Forward a call to bob@cs.stir.ac.uk if there is an incoming connection to ken@cs.stir.ac.uk while the latter is busy. The empty argument for unavailable means the current user is busy.

    Applicability (label, owner, ...):
      label		Forward incoming if busy
      owner		ken@cs.stir.ac.uk
      applies to	ken@cs.stir.ac.uk
      status		enabled

    Preference (must, prefer, ...):
      don't care

    Rules (combinations, triggers, conditions, actions):
	when I am called
      and
	when unavailable
	if unconditionally
	do forward the call to bob@cs.stir.ac.uk
  
    <policy owner="ken@cs.stir.ac.uk" applies_to="ken@cs.stir.ac.uk"
     id="Forward incoming if busy" enabled="true"
     changed="2018-02-02T11:20:05">
      <policy_rule>
	<triggers>
	  <and/>
	  <trigger>connect_incoming</trigger>
	  <trigger arg1="">unavailable(arg1)</trigger>
	</triggers>
	<action arg1="bob@cs.stir.ac.uk">forward_to(arg1)</action>
      </policy_rule>
    </policy>
  

Resolution Policy: Timer Start-Stop

Timer actions can give rise to conflicts. The following checks whether a timer with the same identifier is being asked to start and also stop by different policies. It is also checked whether the associated policy preferences are similar ('in' means 'in keeping with'). If so, the resolution of this conflict is to start the timer identified by variable0. The resolution applies to all users in cs.stir.ac.uk. Variable names are prefixed with ':'.

    Applicability (label, owner, ...):
      label		Timer start-stop
      owner		@cs.stir.ac.uk
      applies to	@cs.stir.ac.uk
      status		enabled

    Rules (combinations, triggers, conditions, actions):
	when start a timer called variable0 with value variable2
      and
	when stop a timer called variable1
	if variable0 is variable1
      and
	if preference0 is in :preference1
	do start a timer called :variable0 with value :variable2
  
    <resolution id="Timer start-stop"
     owner="admin@cs.stir.ac.uk" applies_to="@cs.stir.ac.uk" enabled="true"
     changed="2018-02-10T20:40:00">
      <policy_rule>
	<triggers>
	  <and/>
	  <trigger arg1="variable0" arg2="variable2">
	   start_timer(arg1,arg2)</trigger>
	  <trigger arg1="variable1">stop_timer(arg1)</trigger>
	</triggers>
	<conditions>
	  <and/>
	  <condition>
	    <parameter>variable0</parameter>
	    <operator>eq</operator>
	    <parameter>variable1</parameter>
	  </condition>
	  <condition>
	    <parameter>preference0</parameter>
	    <operator>in</operator>
	    <value>:preference1</value>
	  </condition>
	</conditions>
	<action arg1=":variable0" arg2=":variable2">
	 start_timer(arg1,arg2)</action>
      </policy_rule>
    </resolution>
  

Goal: Minimise Call Bandwidth

If the day is 1 to 5 (Monday to Friday), call bandwidth is minimised: literally, its negative value is maximised. Goals are associated with weights so that more important goals can be given higher priority; in this case the weight is 1.0. The policy wizard allows weights to be set by the user.

    Applicability (label, owner, ...):
      label		Minimise call bandwidth
      owner		@cs.stir.ac.uk
      applies to	@cs.stir.ac.uk
      status		enabled

    Rules (combinations, triggers, conditions, actions):
      if day is in 1..5
      do optimise
	call bandwidth as negative
  
    <goal owner="admin@cs.stir.ac.uk" applies_to="@cs.stir.ac.uk"
     id="Minimise call bandwidth" enabled="true"
     changed="2018-02-03T17:18:00">
      <policy_rule>
	<condition>
	  <parameter>day</parameter>
	  <operator>in</operator>
	  <value>1..5</value>
	</condition>
	<action arg1="-1.0*call_bandwidth">maximise(arg1)</action>
      </policy_rule>
    </goal>
      

Accent Software

The Accent tool suite supports a wide variety of subsystems, nearly all written in Java. Some files use additional languages such as scripts for Unix shell, SQL or JSP. Accent will run on standard systems (Apple Macintosh, Linux, Microsoft Windows) as well as on the Raspberry Pi credit card sized computer.

Accent provides a comprehensive set of software subsystems:

Various subsystems rely on external packages that are not part of Accent:

Many external devices are connected via USB and appear as serial ports. This simplifies the need for device-specific drivers.

Associated Hardware

The Accent Tool Suite just needs a computer to run the software. To interface with the real world requires dedicated hardware such the following that have been used with Accent:

System Installation

The Accent distribution provides the following files:

External software described under Software also needs to be installed as required. A Java Development Kit or Java Runtime Environment is essential, as is a relational database and a tuple server. The relational database would normally be permanently active; unlike the tuple server it is not started by Accent but this could be added to the startup script.

A servlet container is also essential if policies are to be created and edited using the policy wizard. In Tomcat, for example, install the policy wizard in the Tomcat webapps directory. Alternatively a context file could be created in conf/Catalina/localhost/wizard.xml, say, that points to the policy wizard directory, e.g. <Context docBase="C:/usr/local/accent//PolicyWizard" path="/wizard" reloadable="true"/>. Although the policy wizard has been localised in a few languages, the French is approximate and the German is rather incomplete.

Most of the external software can be downloaded and used without cost. However, the TSpaces tuple server is available initially only on an evaluation basis and cannot be provided with the Accent distribution. It may be possible to obtain TSpaces 2 without charge as it is now quite old but is sufficient for Accent. Although there are a number of open-source tuple spaces, changes would be necessary for Accent to work with these. To help with portability, the policy server uses the tuple server through a fairly narrow interface.

When Accent is run from the command line (e.g. with the accent-start script), the normal startup sequence is: servlet container (e.g. Tomcat), Accent ontology server (Poppet), tuple server (e.g. TSpaces), policy server. The policy server will open its own control window. The policy wizard can be accessed as, say, localhost:8080/wizard/home_care/ (the trailing '/' may be necessary depending on the servlet container). Things are shut down in the reverse order (e.g. with the accent-stop script).

If Accent is run under OSGi, startup is more automatic. However, bundles then need to be installed in the OSGi container and given an appropriate start level (see the policy system for home care). The policy wizard is accessed as above, though the servlet container is Jetty.

Once Accent is running, goals and policies can be edited using the policy wizard. Normally these would be created by modifying an existing template (though blank templates are provided for a clean start). Identifiers starting with '?' are template variables that need to be filled in before the policy can be stored. Other features of the wizard include creating policy variables, creating users of the policy system, and changing user status. The history of policy execution can also be checked. Policy variables can be defined as textual values or audio clips. The latter uses a Java applet that may well not run in recent browsers due to security restrictions (though it may be possible to work round these).

Related Projects

As the original project, Accent gave its name to the overall approach that was extended through further projects.

Accent (Advanced Call Control Enhancing Network Technologies)

The original work on managing call control was carried out by the Accent Project (Advanced Call Control Enhancing Network Technologies). This project was undertaken by Computing Science (University of Stirling) from September 2001 to March 2005. It was supported by EPSRC (Engineering and Physical Sciences Research Council) under grant R31263. Mitel Networks Corporation also supported the project financially and technically.

The project was coordinated by Ken Turner as Principal Investigator, with Evan Magill as Co-Investigator. The project researchers were Stephan Reiff-Marganiec, Lynne Blair and Jianxiong Pang. The project also benefited from collaboration with Luigi Logrippo at the University of Ottawa (Canada) and Joanne Atlee at the University of Waterloo (Canada).

The aim of the Accent Project was to develop a comprehensive but practical policy system. This was designed to achieve greater flexibility than CPL (Call Processing Language). The project worked on an advanced language and supporting mechanisms for enterprises and individuals to specify their policies and preferences for call processing - particularly for Internet telephony. The project developed a call control language for defining user policies, for analysing conflicts in these, and for supporting policies in an operational environment. The methods and tools were designed for user-friendly description of call control using a policy language called Appel (Adaptable and Programmable Policy Environment and Language). Accent also supplemented call control of Internet telephony with offline and online analysis of policy conflicts.

Interfaces were developed between the Accent policy system and communications servers supporting a variety of protocols. The Accent Project itself focused on servers supporting SIP (Session Initiation Protocol) such as the proprietary Mitel 7000 ICS, a digital PBX (Private Branch Exchange). In complementary work, the Pith Project extended this to servers supporting H.323.

Pith (Policies for Internet Telephony over H.323)

Related work was carried out on managing call control in H.323 by the Pith Project (Policies for Internet Telephony over H.323). This project was undertaken by Computing Science (University of Stirling) from April 2003 to April 2004. It was supported by the Sino-British Fellowship Trust. The project was undertaken by Huang Tingxue under the supervision of Ken Turner and Stephan Reiff-Marganiec.

Whereas the Accent Project focused mostly on a SIP environment, Pith complemented this using H.323 (Packet-Based Multimedia Communications Systems) as the communications mechanism. The aim was to allow SIP and H.323 calls to use a common policy framework that applied to any type of underlying Internet telephony device. Pith developed an interface for H.323 support from GNU GK (GNU Gatekeeper), though this is not actually included in the distribution.

Prosen (Proactive Condition Monitoring of Sensor Networks)

Separate work was carried out on managing sensors networks by the Prosen Project (Proactive Condition Monitoring of Sensor Networks). This project was undertaken by Environmental Informatics (Lancaster University), Computer Science (University of Essex), Computing Science (University of Stirling) and Electrical Engineering (University of Strathclyde) from October 2005 to September 2008. It was supported by EPSRC (Engineering and Physical Sciences Research Council) under grants C014790, C014804 and C014790. A number of external partners also supported the work.

The Stirling contribution to Prosen focused on the use of goals and policies to manage wind farms. This was achieved by extending the goal/policy language and related ontologies to handle the requirements of this domain. Although an interface was created between the Accent policy system and the Prosen control system, this is not included in the distribution as it would be of limited interest.

Match (Mobilising Advanced Technologies for Care at Home)

Separate work was carried out on managing home automation and telecare by the Match Project (Mobilising Advanced Technologies for Care at Home). This project was undertaken by Computing Science (University of Stirling), Computing (University of Dundee), Informatics (University of Edinburgh) and Computing Science (University of Glasgow) from November 2005 to October 2013. It was supported by SFC (Scottish Funding Council) under grant HR04016. A large number of external partners also supported the work.

The Stirling contribution to Match included the use of goals and policies to manage home automation and telecare. This was achieved by extending the goal/policy language and related ontologies to handle the requirements of this domain. Interfaces were also created to support a wide range of home automation and telecare devices.

Accent Publications

The main reference documentation for Accent is contained in the following technical reports that are part of the distribution:

In addition, the following external papers describe work on the Accent policy system: