Installation

The CppWfMS project has been developed under the Linux Operative System. The installation procedure is based on Linux environment. The CppWfMS project has several external dependencies and in order to succeed in the compilation from sources the following libraries MUST be installed in your system:

BOOST 1.34.1

Boost library provide several facilities needed by the WfMS project; beside the Boost headers you have also to compile the following libraries: boost_thread, boost_python, boost_signals, boost_date_time and boost_filesystem.

GSOAP 2.7.X

Download the package (gsoap-linux-2.7-x) and unzip inside your $HOME directory.

OpenSSL 0.9.7

OpenSSL is necessary in order to deal with service authentication mechanisms usually used in Grid systems (SSL and X.509 certificates).

libxml2 & libxslt

libxml is needed by the cppWfMS in order to parse the XML-based GWorkflowDL definition of workflows, the xslt library is used in order to convert Scufl workflows into GWorkflowDL descriptions.

mysql 5.0 & mysql++ 3.0.2

The mysql server has to be installed in the system in order to have the possibility to exploit the checkpointing capabilities of the cppWfMS. Therefore, the libraries mysqlclient and mysqlpp should be installed in the system.

Python 2.5

The python2.5 interpreter and the python2.5 library should be installed in your system, consider that the compilation of the Boost.Python library also requires it. In addition to the standard python libraries additional libraries should be installed: Each of these python modules should be installed using the following commands:
				
	# gzip -d X.tar.gz
	# tar -x X.tar
	# cd X
	# python setup.py install
	

Installation procedure

Once all the libraries are installed in your system:
Unzip the cppwfms-XX.tar.gz into the directory cppwfms. (e.g $HOME/cppwfms)

				
	# gzip -d cppwfms-XX.tar.gz
	# tar -x cppwfms-XX.tar
	
Define the environment variable WFMS_HOME to point to the project root directory
				
	# export WFMS_HOME = $HOME/cppwfms/
	
Enter in the project root directory
				
	# cd cppwfms/
	
Compile the source code:
				
	# ./configure --prefix=(the place where the libraries are installed) --with-boost=(the place where boost is installed)
	 (If the libraries are installed in the default location both prefix and with-boost variables should be /usr/ or /usr/local/)
	 
	# make
	

Running the wfms

If everything worked fine you should find the project executable file: $WFMS_HOME/src/wfms.

Environment Variables

Before running the wfms, you need to configure the environment variables LD_LIBRARY_PATH and PYTHONPATH as follows:
		
	# export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:$WFMS_HOME/src/stdsoap2/
	# export PYTHONPATH = $WFMS_HOME/src/python_modules/:$PYTHONPATH
	

DB configuration

You also need to install create a schema in your DB. Use the SQL script file placed in $WFMS_HOME/src/persistence/cppwfms_db.sql
				
	# mysql -u user_name -p < src/persistence/cppwfms_db.sql
	

Configuration file

You also need to edit the configuration file which is located in $WFMS_HOME/src/wfms.cfg
				
	[DBConnection]
	SchemaName = "wfms";
	ConnectionString = "localhost";
	UserName = "cppwfms";
	Password = "cppwfms";

	[WfMS]
	WsdlLocation = "${WFMS_HOME}/wsdl/";
	SubWorkflowLocation = "${WFMS_HOME}/src/sub/";
	ScuflConverter = "${WFMS_HOME}/src/scufl/scufl2gwdl.xsl";
	
P.S.: The name of sections (between []) are case sensitive, do NOT change the names of the sections.

Running

Now, if everything has been configured properly, you are ready to execute your first GWorkflowDL workflow. Inside the directory src/tests/ there are several examples that can be used for test the wfms capabilities. For example the file src/tests/power.xml calculate the power of a number, try to execute it by typing:
				 
	# ./wfms tests/power.xml
	
If you want the cppwfms to listen for incoming requestes via a WebService, you can use the --ws-i option that enable the WebService interface:
				 
	# ./wfms --ws-i
	# INFO	-  [2008-May-07 14:06:15] - Starting the SOAP server
	# INFO	-  [2008-May-07 14:06:15] - 	* Server Socket successfully created on port: 18083
	# INFO	-  [2008-May-07 14:06:15] - 	* Listening for incoming connections...