~~NOTOC~~
====== Rachel ======
{{tag>tool Rachel}}
===== Understand Rachel =====
Much work has been conducted to analyze services and service choreographies to assert manyfold correctness criteria. While errors can be detected automatically, the correction of defective services is usually done manually.
{{ :tools:rachel_overview.png }}
Rachel is a tool to correct deadlocking choreographies by giving information how to modify a service of the choreography to acheive deadlock freedom.
{{ :tools:rachel_edit.png }}
Rachel does not give arbitrary modification information, but tries to find the most similar correct service from the set of all correctly fitting services.
Rachel takes a service automaton and an operating guideline as input and calculates a list of correction actions needed to fix the service automaton to match with the operating guideline.
==== Case Studies ====
* At the **Business Process Management conference 2008**, a [[publications:lohmann_2008_bpm|paper]] was presented containing a case study.
This is the complete list of all case-studies available on service-technology.org that were conducted with Rachel:
{{topic>case_study +Rachel&nodate&nouser&firsthl&list}}
You can run all case studies by executing
make experiments
in the root directory of a Rachel distribution after compilation.
==== References ====
We suggest the following paper to get an overview on the problem that is addressed by Rachel and Rachel's problem solving algorithms.
* Niels Lohmann. **[[publications:lohmann_2008_bpm|Correcting deadlocking service choreographies using a simulation-based graph edit distance]]**. In Marlon Dumas and Manfred Reichert, editors, //Business Process Management, 6th International Conference, BPM 2008, Milan, Italy, September 1–4, 2008, Proceedings//, volume 5240 of Lecture Notes in Computer Science, pages 132-147. Springer-Verlag, September 2008.
This is the complete list of all publications related to Rachel:
{{topic>publication +Rachel&nodate&nouser&firsthl&list}}
===== Get Rachel =====
{{ :tools:gpl.png}} Rachel is released as [[http://www.gnu.org/software/software.html|free software]] under the terms of the [[http://www.gnu.org/licenses/gpl.html|GNU General Public License]]. You can download the source code and compile it using a C++ compiler.
==== Download ====
You can download the latest source code release **[[http://download.gna.org/service-tech/rachel/|here]]**.
==== Setup & Install ====
Rachel can be compiled on most operating systems((We tried Microsoft Windows (with [[http://www.cygwin.com|Cygwin]]), Sun Solaris, GNU/Linux, and Mac OS X.)) with
tar xfz rachel-1.xx.tar.gz
cd rachel-1.xx
./configure
make
To check the built binary, you can (optionally) execute
make check
which runs a bunch of self-tests.
After compilation, you can install the generated binary, the manpage, and the documentation with
make install
For more details, see the distribution's INSTALL file.
==== Sources ====
The (most recent, possibly buggy) source code is also available from an anonymous Subversion repository typing((For more information, see [[https://gna.org/svn/?group=service-tech]].))
svn co http://svn.gna.org/svn/service-tech/trunk/rachel
After checking out, the following commands have to be executed to prepare Rachel to compile
cd rachel
autoreconf -iv
Now, Rachel can be configured and compiled with
./configure
make
Note that in order to compile the source code from the repository, you need to following tools:
* [[http://www.gnu.org/software/autoconf|Autoconf]]
* [[http://www.gnu.org/software/automake|Automake]]
* [[http://flex.sourceforge.net|Flex]]
* [[http://www.gnu.org/software/bison|Bison]]
* [[http://www.gnu.org/software/gengetopt|Gengetopt]]
==== Change Log ====
A detailed change log is available [[http://download.gna.org/service-tech/rachel/ChangeLog|here]].
===== Use Rachel =====
Rachel is a prototypic implementation and currently lacks a graphical user interface. Instead, Rachel is controlled with a few simple command line parameters.
==== Manual ====
A [[http://download.gna.org/service-tech/rachel/rachel.pdf|manual]] is available in PDF format.
==== Parameters ====
Rachel is controlled with command line parameters:
Usage: rachel -aFILE|--automaton=FILE -oFILE|--og=FILE [-h|--help] [--full-help]
[-V|--version] [-dFILE|--dot=FILE] [-mMODE|--mode=MODE] [-v|--verbose]
[--node-similarity=DOUBLE] [--discount=DOUBLE] [--benefit-keep=DOUBLE]
[--benefit-change=DOUBLE] [--benefit-insert=DOUBLE]
[--benefit-delete=DOUBLE] [-cFILE|--conf-file=FILE]
About rachel:
-h, --help Print help and exit
--full-help Print help, including hidden options, and exit
-V, --version Print version and exit
File input:
-a, --automaton=FILE Read a service automaton. Any annotated
formulae are ignored. (mandatory)
-o, --og=FILE Read an operating guideline (mandatory)
File output:
-d, --dot[=FILE] Create a Dot file. If no filename is given, it
is derived from the input filenames:
"__.dot". If Graphviz
Dot was found by the configure script, also a
PNG file is created.
Options:
-m, --mode=MODE Edit distance (possible values="matching",
"simulation", "lpsim" default=`matching')
-v, --verbose Verbose output: mostly status information
during longer calculations. (default=off)
Configuration of used cost function:
--node-similarity=DOUBLE Node similarity (default=`1.0')
--discount=DOUBLE Discount factor (default=`0.5')
--benefit-keep=DOUBLE Benefit of label keeping (default=`1.0')
--benefit-change=DOUBLE Benefit of label change (default=`0.7')
--benefit-insert=DOUBLE Benefit of label insertion (default=`0.2')
--benefit-delete=DOUBLE Benefit of label deletion (default=`0.2')
-c, --conf-file=FILE Read configurations from file
==== Bugs ====
Currently, we are not aware of any bugs.
Bugs can be reported at Rachel's [[https://gna.org/bugs/?func=additem&group=service-tech|project page]] or via e-mail to [[rachel@service-technology.org]].