a variable name. When the rule is evaluated against a set of documents, the path is
evaluated, resulting in a set of XML nodes which satisfy the XPath. The node set is
then iterated over and the quantifier variable is bound to each node in the node set in
turn and the rule within the quantifier element is evaluated for each value of the variable.
The CLiX language also makes use of seven standard operators (equal, not equal,
greater, less, greater or equal, less or equal and same). All of these are standard mathe-
matical operators, except for the ‘same’ operator, which evaluates to true if two XPaths
refer to the same document node (all other operators work on the value of the nodes).
The CLiX language supports the inclusion of custom operators in addition to the stan-
dard operators. In xlinkit, the operators are defined using ECMAScript[7]. Opera-
tors are combined to build more complex rules using and, or, not, implies and “if and
only if” operators.
The xlinkit rule checking engine checks constraints for single documents or sets
of documents. If a set of documents is provided as input then XPaths are evaluated for
every document. This allows consistency rules between documents to be checked. If
violations are detected, a report is generated which identifies which elements in the
documents violated the constraints.
3 Checking Policy Constraints
The behaviour of web service compositions is implemented using orchestration lan-
guages, such as BPEL, and general purpose languages, such as Java and C#. A web
service composition may be composed of heterogeneous services which are able to in-
teroperate through web service standards. It is difficult to check consistency between
policy constraints and these languages as many different languages can be used. Some
implementations are also likely to be too low level to easily allow consistency checking
to take place, particularly where general purpose languages are used. Furthermore, it is
only possible to obtain a local view by examining web service orchestrations, whether
implemented in an orchestration language or a general purpose language. By looking at
an orchestration it can be seen how a web service interacts with the partners it provides
services to and those it consumes services from. It is not possible to examine more
complex interactions involving multiple levels of composition.
Using WS-CDL, it is possible to model a web service composition from a global
perspective. In [1], WS-CDL is described as follows:
The Web Services Choreography Description Language (WS-CDL) is an XML
based language that describes peer-to-peer collaborations of participants by
defining, from a global viewpoint, their common and complementary observ-
able behavior; where ordered message exchanges result in accomplishing a
common business goal.
Policy constraints can be more easily checked for consistency against this model as it is
more abstract than the behavioural implementations and uses a consistent language to
describe the entire composition. It provides a global view of the complete composition
rather than local views, allowing multiple levels of composition to be checked against
the constraints.
96