
|
 |
Queueing Networks: Multiple tool solution with the WEASEL Tool
Weasel:
The main goal of the WEASEL tool is to
offer a Web Service that solves queueing network
models specified in PMIF format, using
multiple external solution tools. Actually the
WEASEL tool provide support for QNAP, SHARPE,
PDQ, PEPSY, MQNA1, MQNA2, PMVA, MVA-QFP, OPENQN
and CLOSEDQN tools, but it provide a simple way
to add support for other solution tools. The
WEASEL tool follow a simple client-server
approach to accomplish this scope, based on the
standard XML based web service protocols SOAP
and WSDL. The WEASEL tool provide a four level
stack oriented architecture, where each level
can use or not the result of the previous one.
Clients application are keep free to use or not
some functional level in order enhance the Web
Service flexibility. This functional levels are
shown in Figure 1 and the functions are
described below:

Figure 1: Weasel Web Service Functional Levels
(click to enlarge)
-
Level 1: PMIF 2.0 syntax validation against
official PMIF 2.0 Schema definition.
-
Level 2: PMIF 2.0 semantic validation
against “PMIF Semantic Analyzer” external
tool.
-
Level 3: Translation of the PMIF 2.0 model
into a file in one of the integrated tools
format, using an XSLT transformation.
-
Level 4: Solution tool execution on the PMIF
2.0 translated model or on the tool native
language model.
We have preferred to leave the clients
application free to select the functional level
to use without the limit of a sequential
invocation of the four levels. This, in some
measure, follow the Web Service philosophy of
providing “simple” services that can be combined
to perform a more complex task. This approach
allow client users to decide if use our web
service and which functionality of it. For
example, some user may decide to use our web
service only for the solution of a QN model, but
to use a third party web service for the model
semantic or syntax validation. The performance
measure are presented to the client as a text
file in the original output format of the
selected tool. Actually the web service do not
provide a method to format the tools output in
XML, but these feature can be implemented as an
extension in a future version. In order to
implement our Web Service we have chosen the
Apache, PHP 5, PEAR::SOAP trilogy. This approach
offer a free of charge implementation that can
be widely implemented in a various range of HW
and SW architecture. Apache is a secure and
efficient HTTP server available in the
Microsoft™ Windows©, Mac™ OS/X© and Linux
operating systems. In order to provide a
standard access method to our web service we
have to implement the SOAP protocol and we have
to provide a standard interface to the web
service methods via a WSDL file. The simplest
way to do that is to using the PHP5 scripting
language with the PEAR::SOAP extension. Using
PHP5 will simplify our life providing us the
support to DOM (Document Object Model) and XSLT
(eXtensible Stylesheet Language for
Transformations) extension used respectively for
the PMIF 2.0 syntax validation and for PMIF 2.0
to tool models translation. The PEAR (PHP
Extension and Application Repository) SOAP
extension is a PHP5 module that provide support
for the SOAP protocol and for the automatic
generation of the WSDL file.

Figure 2: WEASEL Web Service UML Class
Diagram (click to enlarge)
The
PHP5 implementation of the Web Service consist
essentially in a PHP5 class named QNSolver (see
Figure 2) with the following public method:
-
Copyright: this method have no
parameter. The returned string can be
customized by the Web Service mantainer and
can contain the following information: web
service name and version, guest operating
system, PHP version, web service physical
location, mantainer name and e-mail address.
-
GetToolsList: like the previous one
this method needs no parameters. It returns
an XML string containing the description of
the integrated tools. This method can be
used by clients application to build a
runtime menu to be able to use multiple web
service that integrate different solvers.
Information provided by this method are:
tool name, description, author, supported
client operation (translation, solution,
native tool language solution) and supported
solution methods and algorithms.
-
ValidateSyntax: this method receive
an input string with a QN model and is type
(actually can be only “PMIF 2.0”) and
returns an output string containing an XML
response with the value of the syntax
validation (True or False). The validation
is made against the PMIF 2.0 XML Schema
provided by
www.perfeng.com/pmif/pmifschema.xsd.
-
ValidateSemantic: this method receive
an input string with a QN model and a string
with is type (actually can be only “PMIF
2.0”) and returns an output string
containing an XML response with the value of
the semantic validation (True or False). The
validation is made against the PMIF Semantic
Analyzer external tool of D. G. Cousillas
and C. M. Lladó.
-
Transform: this method receive an
input string containing a QN model, a string
with is type (actually can be only “PMIF
2.0”), a string containing the target tool
ID, an optional string containing the
solution method (for those tools that
support more than one solution algorithms)
and one more optional string containing some
extra params needed by some tools (for
example number of jobs).
-
Solve: this method receive an input
string containing a QN model, a string with
is type (here the type can be any of the
integrated tools ID), a string containing
the target tool ID (if the type of model is
different from “PMIF 2.0” then type and tool
ID must be equal), an optional string
containing the solution method (for those
tools that support more than one solution
algorithms) and one more optional string
containing some extra params needed by some
tools (for example number of jobs).
-
GetModelDescription: this method
receive an input string with QN model and an
input string with is type (actually can be
only “PMIF 2.0”) and return an output string
containing an english human readable
description of the model.
The
WEASEL tool is fully customizable and extensible,
we have split the configurable part of the web
service in an external file “QNSolver.inc” where
user can add new tool and change the web service
behaviour.
End
user is free to develop his own web service
client and implement it with any programming
language that provide standard SOAP support. In
order to test our web service we have developed
three clients application. The first was been
written in PHP5 and have a simple command line
interface. The second was a web based
application using the emerging AJAX (Asyncronous
Javascript And Xml) technology. The third was a
real Microsoft™ Windows© application written in
Borland™ Delphi© 2005 Architect Edition, that we
have named “PMIF Editor” due to the fact that
integrate a graphical PMIF 2.0 visual editor (see
Figure 3) able to assist the analysts from the
visual design phase of the queueing networks, to
the translation of the graphic model in PMIF 2.0
and finally to the resolution invoking the
remote web service.

Figure 3: The Weasel Client (click to enlarge)
Given a standard PMIF 2.0 queuing network
model, the WEASEL tool can actually translate
the model into the following tools/languages:
|
Tool ID |
XSLConversion
File |
Supported QN Type |
Guest OS |
|
PDQ |
PMIF2_to_PDQ.xsl |
Open, Closed |
Windows, Linux |
|
QNAP |
PMIF2_to_QNAP.xsl |
Open, Closed,
Mixed? |
Windows, Linux? |
|
SHARPE |
PMIF2_to_SHARPE_PFQN.xsl |
Closed |
Windows, Linux |
|
OPENQN |
PMIF2_to_OPENQN.xsl |
Open |
Windows |
|
CLOSEDQN |
PMIF2_to_CLOSEDQN.xsl |
Closed |
Windows |
|
MVAQFP |
PMIF2_to_MVAQFP.xsl |
Closed |
Windows, Linux |
|
PMVA |
PMIF2_to_PMVA.xsl |
Closed |
Windows |
|
PEPSY |
PMIF2_to_PEPSY.xsl |
Open, Closed,
Mixed? |
Linux |
|
MQNA1 |
PMIF2_to_MQNA1.xsl |
Open, Closed |
Windows |
|
MQNA2 |
PMIF2_to_MQNA2.xsl |
Open, Closed,
Mixed, Finite Capacity Queue with
Blocking and Lost |
Windows |
For
more information on weasel please visit:
To download the PMIF Editor click
here
To download the Samuel Zallocco full thesis (in
Italian) click
here
|