An interactive, web-based, configurator for models expressed in Clafer. The configurator provides a novel approach to configuration (model instantiation), whereby the configurer works with multiple correct configurations at the same time instead of working with a single configuration, making configuration steps, and resolving configuration conflicts. When working with a single configuration, the configurer is often not aware of the impact of their configuration actions, and when conflicts arise, they have great difficulty resolving the conflicts. In contrast, in ClaferConfigurator, the configurers always see only correct configurations and can explore them using filtering, ordering, highlighting of the differences, and creating more configurations on demand. Read more in the paper Clafer Tools for Product Line Engineering.
- Master branch (stable and released): ClaferConfigurator
- Develop branch (with newest features, but not guaranteed to be stable): ClaferConfigurator (evelopment)
If the demo is down or you encounter a bug, please email Michał Antkiewicz.
See clafer.org.
- Provides a web based GUI for interaction with instance generators.
- Allows for comparing and analyzing multiple product configurations simultaneously.
- Facilitates configuration of clafer models.
The ClaferConfigurator is a web-based application. Its server side (implemented with Node.js
) only runs the chosen backend passes back its output.
The client-side is implemented using JavaScript/HTML
and provides configuration functionality.
- Neil Vincent Redman, co-op student Jan-Apr 2013. Main developer.
- Michał Antkiewicz. Research Engineer. Requirements, development, architecture, testing, technology transfer.
- Alexandr Murashkin. Developer. Transition to the platform, improvements, multiple backends.
- Eldar Khalilov. Developer. Upgrade to 0.4.2 (replace XML with JSON, test suites).
- Java Platform (JDK) v8+
- Clafer v0.4.4
- can be from the binary distribution
- Node.js Framework, v4.2.3 LTS
- Redis Server, v2:2.*
- On Ubuntu, execute
sudo add-apt-repository ppa:chris-lea/redis-server && apt-get install redis-server
- On Ubuntu, execute
- Backends' dependencies must be satisfied. See the backend installation steps below.
Core
- Download (
git clone
) ClaferConfigurator to some directory<target directory>
- Go to
<target directory>/ClaferConfigurator
and execute
git submodule init
git submodule update
This will install the platform.
When working with a branch other then master
, you need to additionally checkout that branch (e.g., develop
):
git submodule foreach git checkout develop
- Go to
<target directory>/ClaferConfigurator/Server
and execute
npm install
This will download all the required Node.js
modules.
- Install the necessary backends into some location
<bin>
found onPATH
. The default configuration in<target directory>/ClaferIDE/Server/Backends/backends.json
assumes/home/clafertools040/bin
.
The fastest way is to unzip a binary distribution into the folder <bin>
.
See Installing Backends for detailed steps.
-
Make sure the port
8093
is free, or change the value of the keyport
inServer/config.json
:"port" = "8093"
to any free one. -
Make sure
clafer
,node
, andjava
are inPATH
environment variables, so they can be executed without any path prefixes. -
Running the following commands should produce the following results or later version:
clafer --version
Clafer v0.4.4
java -version
java version 1.8.0_102
node -v
v4.2.3 LTS
-
Make sure
uploads
folder is accessible for writing, since temporary files will be stored there. -
If you use Shell scipts (
.sh
) for running, make sure the scripts haveExecute
permissions.
- To run the server in a standard mode, execute
cd <target directory>/ClaferConfigurator/Server/
node ClaferConfigurator.js
- If you use
Node Supervisor
under Linux, you can execute
cd <target directory>/ClaferConfigurator/Server/commons
chmod +x start.sh
./start.sh
Then you can go to any browser and type http://localhost:[port]/
and open any Clafer file with objectives in it.
- Choose
Adaptive Cruise Control Example
example in the dropdown box in the upper-left corner of the tool window. - Press
Compile
button right in the front of the drop down list. - Once you see the compilation is complete, go to
Instance Generator
view and pressRun
there (the default backend isChoco-based IG (IG + MOO)
). - The
Feature and Quality Matrix
view should show the first 10 generated configurations (instances).
All related projects are following the simultaneous release model.
The branch master
contains releases, whereas the branch develop
contains code under development.
When building the tools, the branches should match.
Releases from branches master
are guaranteed to work well together.
Development versions from branches develop
should work well together but this might not always be the case.
- Visit language's website.
- Report issues to issue tracker