Project Engine Server Instructions

 

The Project Engine Server is the heart of the system. All the intelligence and processing of data is performed here. The server works in a similar way to a web/application-server where a HTTP command, with some parameters, gives a response in XML/HTML back to the client. The Project Engine Server does not store any information about the status of its clients it just processes one request after another. In other words the server does not ever send anything to the clients except as a response to a request. The fact that the server is stateless, except from the XML database, also has the benefit that is becomes extremely reliable and since it is designed for running day after day without interruption that is an important feature.

 

 

 

Table of Contents

 

Reliability. 1

Built for Performance. 2

One Project Team per Server 2

Web Services 2

Maintaining the Server 2

Log File. 3

Email Notification. 3

Security. 3

Templates 3

Server Properties 4

Backups 5

Setting up the Server 5

Installing as a Service. 6

Upgrading the Server 6

Running the Server 6

Web Browser Interface. 7

Performance. 7

Project Engine Enterprise Server 7

 

 

Reliability

 

Without question the most important feature of the Project Engine Server is stability. It is designed for running around the clock without failures or maintenance. This is important since the clients have to rely on the server for performing virtually any task, such as producing the current task tree, task list, history list or reports.

To give the administrator the ability to monitor every single request, Project Engine Server produces a log file that receives everything the server does. The administrator of the system might sometimes need to view this file if something unexpected has occurred.

 

 

Built for Performance

 

Previous versions of the Project Engine Server were based on using any standard relational database. The traditional database was completely removed for version 2.0 of Project Engine Server and replaced by a much more efficient way of storing data. The server now caches all data in memory and only uses the file system as a secondary storage. All data is stored in XML format on the server hardware and is read upon startup and written before shutting down the server. To prevent accidental loss of data, due to power failure, Project Engine Server also periodically stores its cached data to the hard drive.

 

 

One Project Team per Server

 

One project team should use one installation of the Project Engine Server. Nothing prevents you from having more than one project on the same server if you are still using the same team of users. You may however install any number of servers on the same machine or distribute them on several machines as long as you use a different port for each of the servers running on the same computer.

 

 

Web Services

 

All Web Services in the Project Engine Server container are accessed through HTTP (GET or POST). Depending on the type of service the response will be XML or HTTP. A Web Service Tester is supplied with the PE Server and can be used for testing all Web Services in PE Server. Use for example the call “hello” to determine if the server is available.

All services that return XML also have two optional style sheet parameters to be able to modify the XML response into HTML.

 

A couple of example forms are provided in the “form templates” directory to give a hint of how to call PE Server directly from an HTML page. A list of services and their parameters can be found in the “Web Services.htm” document. Note that the full documentation of how to call PE Services and their parameters are not covered in this documentation and we refer to support@projectengine.nu for further information about tailoring such HTML pages.

 

 

Maintaining the Server

 

All data is stored in XML format in the xml directory. The server reads the data upon startup and writes the data back in XML files when closing.

It is possible to manually edit the data in the XML files but make sure the server is not running otherwise your changes might be overwritten! All elements in the XML file have an id tag. It is important to know that each element in one level must have a unique tag. Please be careful when editing the XML files by hand since you otherwise might get unsatisfying results.

 

The priorities.xml and task_types.xml should be altered before the start of a new project. It is possible to change these settings during a project but not recommended to remove any elements since some tasks might already be using them. Adding a new element as the last element should be ok though.

 

The following XML files are stored in the xml directory:

 

File

Explanation

task_tree.xml

This file contains all the tasks in a tree structure.

users.xml

Contains all users, workers and groups in a tree structure.

priorities.xml

Names of task priorities. May be any number of priorities. Cannot be changed from the client.

task_types.xml

Contains all task types. Cannot be changed from the client.

history_list.xml

The history of changes. You might view this file to retrieve a task that was removed by mistake or to replace with the current one but do not edit this file. Can be completely removed at any time. Project Engine will automatically add a new empty file.

 

 

Log File

 

All requests and replies to/from the server is logged to a file (flowlogX.txt where X is the weekday number) if the logging property is set to “on” in the server.properties file. One log file is saved per weekday overwriting the one-week-old file. Turn the logging on if you suspect that something is not working correctly or if you like to study how the team works with the system. You need to restart the server after changing the logging property. The default setting is not to write to the log file.

 

 

Email Notification

 

Project Engine Server can be setup to send an email when a task has been delivered to a users task list. The email will be sent to the user/worker assigned to the task. The user must have an email specified in the user properties dialog.

 

The mail server to use must be specified in the mail_server_address property and the email address to use as the sender should be specified in the mail_server_email property. Use a blank mail server address to disable mail notifications. The send_email_interval property specifies the interval PE Server checks for any newly delivered tasks. The server_address property is used to produce the link back to the delivered task. Specify an internal or external IP address or domain name.

 

 

Security

 

Project Engine has two security levels (0-1). Both the client and the server must be set to the same level to be able to communicate. The table below shows the details of the two modes:

 

Security Mode

Description

0 – No security

This mode sends data unencrypted in a readable text format between the client and server. This option provides the fastest communication and is recommended when all clients are behind a firewall. This is the default setting.

1 - SSL

Secure Sockets Layer. This option provides the safest protection of the data communicated between the client and server but is also the slowest. SSL requires a certificate to be installed on the client and a corresponding key at the server.

Project Engine Server installs with a sample keystore - “testkeys” and the client installs with a certificate file - “cacerts”. To set up a SSL connection you need to change the security_mode property to “1” on both the client and server. On the client side the sample certification file “cacerts” must be moved to replace the original “cacerts” file located at the “javahome\lib\security” directory.

Read more about how to create and setup a certificate on java.sun.com.

 

 

Templates

 

Project Engine Server installs with four useful templates that are aimed for use in XP (Extreme Programming), RUP (Rational Unified Process), a traditional type of project and a test process.

 

We recommend using one of these as a start and then modifying them to best match the requirements of the process used in the project. The file task_types.xml comes in four different versions since it is not possible to alter this list from the client. Simply copy the version of preference from the xml_templates directory to the xml directory. Make sure the server is not running when copying the xml files. The desired template module can also be selected from the setup program.

 

 

Server Properties

 

 

The server.properties file located in the directory where Project Engine Server was installed contains the properties for the server. This file is created during installation but you might want to make changes to it after installation or during the time of the project. Remember that you need to restart the server before the changes will take effect. The properties can also be changed from the server user interface if visible_gui=”yes”.

 

In the table below all settings are described:

 

Property

Description

server_address

Only used to produce the link back to the delivered task from an automatic email notification. Specify an internal or external IP address or domain name. Set to blank for not including a link from email notifications.

port_number

The port number used by the server. It is important that all clients to the server use the same port. If you have more than one Project Engine Server on a single machine they must use different port numbers.

logging

Set to “on” if you want the server to write all requests to the flowlog.txt file or “off” if not. The logging is set to “off” by default.

save_interval

The time in seconds between a complete backup of all tasks to the XML files. Don’t set this value too low since it degrades performance but not to high either since you otherwise might lose a lot of data in case of a power failure.

max_nr_history_tasks

The maximum number of history tasks that Project Engine Server will keep in memory.

security_mode

Specifies the security of the communication between the client and the server.

Note that all clients must have the same setup as the server to be able to communicate!

0 = No security, communication between client and server is in readable text.

1 = Use Secure Sockets Layer (SSL).

license_key

The license key received from registering the product. The license key specifies the expiration date of the product and the maximum number of allowed users.

keystore

The filename of the keystore that contains the key for SSL.

Only used for security mode 1!

keystore_password

The password for the keystore above.

Only used for security mode 1!

create_backup

Project Engine Server can be configured to automatically backup xml data in a one-week cycle.

yes = Create a backup each save interval.

no = Do not create automatic backups.

remote_connection

Turns the remote connection to another server on or off. This property only has affect with PE Cluster Server. When set to on the remove_server_properties file is read to establish the remote connection.

on = Try to connect to a remote server (only if cluster server).

off = Do not connect to a remote server (default).

mail_server_address

The address to a mail server or blank if none present.

mail_server_email

Email address to use when sending a mail from mail server.

send_email_interval

Specifies the interval PE Server checks for any newly delivered tasks to send an email notification for. Default is 180 seconds.

 

 

Backups

 

It is strongly recommended to make backups of the data periodically. For a smaller project perhaps once a week will be enough but in larger projects once a day would be preferable. The data to backup can be found in the xml directory located in the directory where Project Engine Server was installed. The server does not have to be shut down before performing this action.

 

Project Engine Server can also be configured to automatically backup xml data in a one-week cycle. If the Create Backup property is set to yes Project Engine will also save the xml data to the backup folder under the current day (1-7) at each Save Interval.

 

 

Setting up the Server

 

After installation of Project Engine Server there are a few settings that might need to be changed.

Open up the server.properties file located in the directory where Project Engine Server was installed. Use a normal text editor, like Notepad, to edit the file. The properties can also be changed from the server user interface if visible_gui=”yes”.

 

The server.properties file might look like this after installation:

 

port_number=1234

logging=on

max_nr_history_tasks=2000

save_interval=600

security_mode=0

license_key=607612036274110568

keystore=testkeys

keystore_password=passphrase

connect_message=You are connected to Project Engine Server.

 

The license key provided at installation is a trial license and has an expiration date and a limited number of users. When receiving a new license key after purchasing the product make sure to replace the trial key at the license_key property.

 

Project Engine uses port 1234 as default but it is possible to use any port, even port 80 (HTTP) if necessary. If port 1234 is unavailable please select another port and enter that value in the port_number property. Make sure you use the same port and security mode on the client side.

In other words Project Engine Server will act as if it was a normal web server to be able to pass through firewalls that otherwise prevents any other traffic.

 

 

Installing as a Service

 

Project Engine Server should be set-up to run every time the server computer boots up. This can be done in two ways:

 

  1. Place a shortcut to the ProjectEngineServer.jar file in the Autostart directory of the Start menu in Windows.
  2. Install Project Engine Server as a Windows Service.

 

The advantage of installing the server as a service is that it will run regardless of anyone logging in on the server computer or not.

 

The server installation software has the ability to install Project Engine Server as a shortcut in the Autostart folder or as a Windows Service. The server can also be installed or uninstalled as a service from shortcuts in the Start menu. Remember to restart your computer for the changes to take affect.

 

Project Engine can also be setup to run as a service manually by following the instructions below:

 

Use a third party product, for example JavaService from Alexandria Software Consulting (http://www.alexandriasc.com/software/JavaService), to install Project Engine Server as a service. For details we refer to the JavaService documentation.

The command below gives an example of how to install ProjectEngineServer .jar as a service using JavaService:

 

JavaService.exe -install "Project Engine Server" c:\j2sdk1.4.0_01\jre\bin\client\jvm.dll -Djava.class.path=c:\Program\ProjectEngineServer\ProjectEngineServer.jar -start ProjectEngineServer -current c:\Program\ProjectEngineServer

 

Make sure to give the correct path to the jvm.dll file, the ProjectEngineServer.jar file and sets the current directory to be the directory you selected for installation of Project Engine Server.

 

 

Upgrading the Server

 

New versions of both the server and the client are available on the Project Engine home page at all times.  It is recommended to upgrade both the server and client at the same time. Using different versions of client and server might result in unexpected results, usually that some functionality is unavailable.

 

To upgrade an existing server installation with a new version, follow the steps below:

 

  1. Make sure the server is not running. If the server is installed as a service it should first be stopped from the Control Panel of Windows. On version 2004 and newer the server can be stopped from the Start menu. The computer needs to be restarted after stopping the service.
  2. Make a backup of the xml directory (that contains the data). The xml directory can be found under the installation directory of Project Engine Server. This step is optional but recommended.
  3. Start the installation program of the new server version.
  4. On the “Select Destination Directory” screen, make sure the path points to the directory where the old Project Engine Server installation was installed. This directory should be selected by default.
  5. Accept the default settings on all other screens.

 

 

Running the Server

 

Start the Project Engine Server by selecting it from the start menu or double clicking on the ProjectEngineServer.jar file.

 

It is important to have the Java Runtime Environment (JRE) from Sun installed. Any Java 2 JRE is adequate for Project Engine but in the case of problems, first try to upgrade the JRE on your system. The latest JRE can be found at: http://java.sun.com/j2se/1.4.1/download.html.

 

The user interface displays the latest operation performed by the server. This merely indicates that the server is alive. Examine the flowlog.txt file to view all details about the communication between client and server.

To stop the server, just press the Stop Server button.

 

 

 

Web Browser Interface

 

Project Engine Server has the ability to act as a web server providing common task operations from a web browser.

Navigate to the address: http://server_address:port_number to get the login screen. Port number only needs to be specified if any other number than the default (80) is used.

 

To access the browser interface using secure sockets (SSL) use the address: https://server_address:port_number. Note that Project Engine Server needs to be set to use security mode 2 (SSL). The default port for secure sockets is 443, therefore we recommend setting the port_number to 443, but any port can be used.

 

The directories webicons, stylesheets and server_languages all contain files used by the PE web interface.

 

 

Performance

 

A server connected to many clients may run into performance problems resulting in slow client responses. There are numerous ways of optimizing performance; some of them are given below:

 

  1. Set create_backup to off in server properties and perform backups manually.
  2. Turn logging off in server properties (important, drains a lot of performance!).
  3. Make the project team use the web interface when possible since it is less demanding.
  4. Increase the save interval of the server (save_interval property).
  5. Increase the Update interval value of each client. The higher the less frequent updates with the server.
  6. Reduce the number of history tasks stored (the max_nr_history_tasks property).
  7. Close non-used views in the client. Each open view uses calls to the server to remain updated.
  8. Use non-encrypted communication if possible.
  9. Split the project load on more servers using Project Engine Cluster Server.

 

 

Project Engine Enterprise Server

 

 

Several Project Engine servers can be connected to relieve traffic from a single server. There could, for example, be one server per office and a central server for connecting all offices. In that way all offices can share the same tasks but the load is distributed on several server machines. Each cluster server can access exactly one other server.

 

Information is synchronized between servers at a predefined interval specified by the update_interval property.

 

Note that the remote_connection property in the server.properties file needs to be set to on to enable the remote connection.

 

The remote_server.properties file contains the information required for connecting to a remote server:

 

Property

Description

server_address

The Internet address to where the remote Project Engine Server is located.

port_number

The port number used by the remote server.

update_interval

The time in seconds between synchronization of servers. Don’t set this value too low since it degrades performance! Should be less frequent than the update rate between servers and clients.

Set to 0 to deactivate synchronization.

security_mode

Specifies the security of the communication between the server and the remote server.

0 = No security, communication is in readable text.

1 = Use Secure Sockets Layer (SSL).

encryption_key

A secret encryption key that both servers need to communicate.

Can be any text but must be the same on both the server and the remote server.

Only used for security mode 1!

user_id

User id to use for synchronizing data. Select a user with access to all tasks, for example the Administrator.

password

Password for the user above. A password is required for retrieving data from the remote server.

proxy_server_address

Enter the address of the proxy server. Provide this address when accessing the Internet through a proxy and therefore need to tunnel through using SSL. Remove (or set to blank) this property if not behind a proxy.

Only used for security mode 1!

proxy_port_number

The port number of the proxy server. Only used when tunneling through a proxy server.

Only used for security mode 1!