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. |
Project Engine
Enterprise Server
|
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. |
|
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 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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Project
Engine Server should be set-up to run every time the server computer boots
up. This can be done in two ways:
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. |
|
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:
|
|
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. |
|
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. |
|
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:
|
|
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! |