Общие сведения

Web2project (далее w2p) это открытое веб ориентированное приложение, предназначенное для управления проектами, распространяемое по лицензии GPL v2. Текущая, на дату 03.03.2012, стабильная версия приложения 2.4, сайт разработчиков http://web2project.net/.

Как оказалось в версии 2.4 на дату 17.05.2012 имеется баг, приводящий к тому, что зависимые задачи не сдвигаются автоматически при изменении даты завершения предшествующей задачи. Но в версии 2.3 такой проблемы нет. Эту версию также можно получить через сайт разработчиков, а всё ниже описанное актуально и для версии 2.3

Несмотря на недостатки web-интерфейса и некоторую функциональную неполноту w2p с успехом может применяться для управления проектами коммерческой фирмы, в частности w2p позволяет решать следующие задачи:

  • практическая реализация принципов проектного управления, путем составления, исполнения, анализа и актуализации плана каждого проекта;
  • составление отчетности по отдельному проекту и всем проектам в целом, в том числе отчетности о ходе выполнения работ по проекту -там;
  • выдачу заданий исполнителям работ
  • накопление и хранение истории выданных и исполненных заданий по проектам
  • решение конфликта ресурсов.

«Хитрости» позволяют до некоторой степени использовать w2p как систему управления договорами, в том числе:

  • учитывать действующие, исполненные, просроченные и проч. договора компании;
  • учитывать, планировать, отслеживать движение денежных средств по договорам;
  • учитывать отчётно-финансовые документы по договорам (Акты, счета и пр.)
В моей родной конторе запуск w2p осуществлён на ubuntu-server-10.04.3, управление сервером осуществляется с локальной машины под ubuntu-desktop-10.04.1 (gnome). В текущее время в w2p «забито» 34 проекта, всего более 1800 задач, пользователей в системе более 20

Получение w2p

Наиболее актуальный релиз web2project можно скачать с сайта проекта по адресу: http://sourceforge.net/projects/web2project/files/ По нажатии ссылки на скачивание Вы сможете получить архив с примерно таким названием web2project-2.4.tar.gz объемом около 3,5 Мб.

Зачем оно мне стало надо?
Эта сноска добавлена сюда для изложения собственного опыта том, как можно «прийти» или «дойти» до такой жизни, т.е. поднимать сервер и ставить на него w2p 1)

Установка web2project

Установка сервера

Вообще для установки w2p нужно сначала установить сервер включающий в себя, помимо прочего, следующие пакеты: apache2, ldap, php5, mysql. В качестве сервера можно использовать собственную настольную ubuntu машину, но для «боевого» применения лучше использовать отдельно выделенное оборудование. Последовательность действий в данном случае следующая:

  1. «Выбить» (как-то: уболтать сисадмина, поставить условие перед тех. директором и пр.) компьютер, который будет использоваться в качестве сервера w2p;
  2. Поставить на него ubuntu-server (его можно взять тут http://www.ubuntu.com/download/ubuntu/download); По поводу установки можно воспользоваться руководством: установка_сервера
  3. Присвоить серверу статический IP, для этого нужно выполнить соответствующие настройки в роутере локальной сети и отредактировать файл /etc/network/interfaces, например как описано в Статический_IP
  4. Для дальнейшего администрирования как w2p так и сервера рекомендуется организовать между локальной машиной и сервером ssh соединение (для этого нужно установить на сервер и на локальную машину ssh сервер, так же см. Установка_ssh-сервера , после чего можно будет ввести в терминале локальной машины
    ssh suser@192.168.32.100 

    где suser - имя пользователя которое есть в системе сервера (это может быть имя которое указано при установке сервера), 192.168.32.100 - это IP сервера. Терминал должен запросить пароль пользователя suser, после ввода оного, станет возможным управлять сервером из терминала локальной машины

  5. Для упрощения обмена файлами между сервером и локальном машиной рекомендуется установить и настроить nfs сервер, например как описано тут http://help.ubuntu.ru/wiki/централизованное_управление_linux . После настройки можно будет запросто от сервера получить доступ к разрешенным каталогам локальной машины и обратно, например, выполнив в терминале сервера:

    sudo mount 192.168.32.113:/home/user/Загрузки /home/server/mountf 

    где, 192.168.32.113 - IP локальной машины, он скорее всего динамический, и текущее его значение можно посмотреть в «Свойствах соединения» менеджера сети, /home/server/mountf - специально созданная папка в домашнем каталоге сервера;

  6. Установить пакеты делающие жизнь удобнее, в их числе редактор nano

    sudo aptitude install nano

    файловый менеджер midnight commander

    sudo aptitude install mc

    экранная утилита screen

    sudo aptitude install screen

  7. Установить пакеты, необходимые для w2p

    sudo aptitude install apach2 php5 php5-adodb php5-gd mysql-server libapache2-mod-auth-mysql php5-mysql ldap-server
если Вы не специалист, то указанные пакеты лучше устанавливать «по одному», записывать на бумагу дополнительные настройки и пароли (mysql в частности) запрашиваемые при установке

Собственно установка web2project

Исходное состояние: допустим у нас имеется сервер с установленной ubuntu-server-10.04 и архив web2project-2.4.tar.gz «лежащий» в папке /home/user/Загрузки локальной машины, работающей под управлением ubuntu-10.04 c gnome. Первоначальной задачей является перенос содержимого архива web2project-2.4.tar.gz в директорию /var/www на сервере. Это можно сделать несколькими способами:

  1. Распаковать архив на локальной машине, например графической утилитой; записать распакованную из архива папку web2project-2.4 на CD; отнести CD в серверную; вставить диск в дисковод; затем на сервере выполнить:
     sudo cp -r /cdrom/web2project-2.4 /var/www 

  2. Сделать всё это посредством ssh и nfs (если они настроены), например так:
    открываем терминал на локальной машине, в терминале прописываем:

     ssh suser@192.168.32.100 

    после ввода пароля пользователя suser станет доступным терминал сервера, там вводим:

     sudo mount 192.168.32.113:/home/user/Загрузки /home/suser/mountf 

    тут 192.168.32.113 - текущий IP вашей локальной машины, /home/user/mountf - предварительно созданная папка в домашней директории на сервере, создать её можно выполнив команду:

     mkdir mountf 

    Чтобы убедиться что каталог «Загрузки» вашей локальной машины примонтирован к папке mountf на сервере можно ввести в терминале

     ls /home/suser/mountf 

    должен появиться список того, что лежит в папке «Загрузки», в том числе архив web2project-2.4.tar.gz. Теперь перейдем в каталог назначения

     cd /var/www 

    распакуем архив:

    tar -xvvf /home/suser/mountf/web2project-2.4.tar.gz 

Теперь на локальной машине можно открыть браузер, например firefox, и в строке адреса написать: 192.168.32.100/web2project-2.4/index.php 2) должно открыться окно такого вот вида: как видно, для продолжения установки нужно присвоить соответствующие права на некоторые подкаталоги, сделаем это. В терминале сервера выполним:

sudo chmod -R 777 web2project-2.4/includes 
sudo chmod -R 777 web2project-2.4/files 
sudo chmod -R 777 web2project-2.4/locales 

теперь нажимаем кнопку Set System Credentials» внизу страницы и должно открыться следующая страница установки 3): Эта страница предназначена для указания w2p настроек базы данных, если Вы не создали её раньше, то самое время сделать это. Обратимся к терминалу сервера и введём:

 mysql -u root -p 

затем нужно будет ввести пароль пользователя root, который вы сообщили при установке mysql сервера, должен открыться терминал mysql c приглашением «mysql>». Создадим базу данных для w2p:

 mysql> CREATE DATABASE w2p_db; 

где, w2p_db имя базы данных для w2p. Далее, создадим пользователя для базы данных w2p_db и наделим его соответствующими правами:

mysql> CREATE USER  'w2p_a'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON w2p_db.* TO  'w2p_a'@'localhost';
\q 

теперь снова обратимся к браузеру с открытой 2-й страницей установки w2p.
В поле «Database Server Type» выберем MySQL
В поле «Database Host Name» запишем localhost
В поле «Database Name» запишем имя созданной базы данных, в нашем случае это w2p_db
В поле «Database User Name» запишем пользователя базы w2p_db, в нашем случае это w2p_a
В поле «Database User Password» нужно указать пароль пользователя базы данных, указанный при создании пользователя (мы указали его как password, но Вы, должно быть, придумаете что-нибудь получше).
В поле «Specify a password for the Admin account» укажите (в смысле придумайте) пароль администратора w2p.
Если всё верно, то осталось только выбрать часовые пояса и нажать кнопку Install db & write cfg» . Должна открыться такая страничка: По большому счету установка w2p c этого момента завершена, и если перейти по ссылке Login and Check the web2project System Environment, то откроется окно входя в систему.

В данном руководстве не описан процесс установки и настройки MTA (mail transfire agent), так как настроить его для работы с w2p, установленном на сервере мне не удалось. Как вариант, в качестве сервера можно использовать дистрибутив с графическим интерфейсом, и предустановленным почтовым клиентом evolution, например. Если дополнительно установить пакеты libphp-phpmailer и sendmail, то w2p приобретёт возможность автоматически рассылать электронные письма. Такая возможность пока не представляется мне необходимой, тем не менее проблема остаётся и вопрос «Как подружить w2p и MTA на сервере без GUI?» пока остаётся без ответа.

Настройка автоматического резервного копирования базы данных

После того, как системой web2project начнут пользоваться база данных заполнится крайне важной для компании информацией о сроках выполнения работ, назначенных исполнителях работ и ответственных лицах, размере платежей и поступлений по проектам и пр. Для гарантированной возможности восстановления в случае какого-либо сбоя этих данных необходимо регулярно производить копирование базы на сторонние носители, делать это можно вручную, но лучше организовать автоматическое сохранение и копирование, например так(взято осюда http://sitear.ru/material/mysql-backups):

  1. На сервере в директории /var/www создаем паку, куда будут записываться копии базы данных
     sudo mkdir /var/www/dbbackup 

    В созданной директории посредством nano создаём файл с именем backup.php

     sudo nano /var/www/dbbackup/backup.php 

    вставляем в файл следующий код:

     <?php
    backup_database_tables('localhost','w2p_a','password','w2p_db', '*');
    // backup the db function
    function backup_database_tables($host,$user,$pass,$name,$tables)
    {
            $link = mysql_connect($host,$user,$pass);
            mysql_select_db($name,$link);
            //get all of the tables
            if($tables == '*')
            {
                    $tables = array();
                    $result = mysql_query('SHOW TABLES');
                    while($row = mysql_fetch_row($result))
                    {
                            $tables[] = $row[0];
                    }
            }
            else
            {
                    $tables = is_array($tables) ? $tables : explode(',',$tables);
            }
            //cycle through each table and format the data
            foreach($tables as $table)
            {
                    $result = mysql_query('SELECT * FROM '.$table);
                    $num_fields = mysql_num_fields($result);
                    $return.= 'DROP TABLE '.$table.';';
                    $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
                    $return.= "\n\n".$row2[1].";\n\n";
                    for ($i = 0; $i < $num_fields; $i++)
                    {
                            while($row = mysql_fetch_row($result))
                            {
                                    $return.= 'INSERT INTO '.$table.' VALUES(';
                                    for($j=0; $j<$num_fields; $j++)
                                    {
                                            $row[$j] = addslashes($row[$j]);
                                            $row[$j] = ereg_replace("\n","\\n",$row[$j]);
                                            if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
                                            if ($j<($num_fields-1)) { $return.= ','; }
                                    }
                                    $return.= ");\n";
                            }
                    }
                    $return.="\n\n\n";
            }
            //save the file
            $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
            fwrite($handle,$return);
            fclose($handle);
    }
    ?>
     

    обратите внимание на строчку

    backup_database_tables('localhost','w2p_a','password','w2p_db', '*'); 

    тут должны быть прописаны имя вашей базы данных, имя пользователя базы данный и пароль пользователя. Для создания резервной копии базы данных достаточно прописать в строке адреса браузера 192.168.32.100/dbbackup/backup.php и нажать «ввод», после этого резервная копия БД окажется в паке /var/www/dbbackup. Для создания резервных копий по расписанию необходимо настроить планировщик заданий CRON.

Обязательно ознакомьтесь с описанием CRON http://help.ubuntu.ru/wiki/cron .

Наберём в терминале

 EDITOR=/bin/nano crontab -e 

и в строчке предназначенной для задания пропишем такую строчку

 0 19 * * thu wget -O /dev/null http://localhost/dbbackup/backup.php 

Таким образом настраиваться автоматическое резервирования в 19.00 еженедельно по четвергам.

Первичная настройка w2p

Первичный вход в систему w2p может быть осуществлён с именем admin и паролем, который Вы указали в поле «Specify a password for the Admin account» на 2-й странице установки. По входу в систему Вам откроется страница под названием «System configuration», на которой представлены глобальные настройки w2p. Править особо здесь пока нечего, разве что установить значение вашего часового пояса в поле «system_timezone_title» и прописать ru в поле «Host Locale». Интерфейс системы будет англоязычным, но в составе w2p имеется русская локаль. Для её активации выполним следующие действия:

  • Нажмем на кнопку System Admin, это откроет соответствующую страницу:
  • На открывшейся странице нажмем на ссылку «Default User Preferences»
  • На открывшейся странице в поле «Locale:» выберем из выпадающего списка Russian (ru), так же, сразу можно в поле «Short Date Format:» выбрать предпочитаемый формат отображения даты, мне больше нравится такой: 01.01.2012
  • Нажать кнопку Submit в правом нижнем углу страницы.

Теперь для всех вновь созданных пользователей w2p всё (ну или почти всё) будет по русски. Для активации русской локали для администратора, нужно открыть страницу «User Admin», затем кликнуть по имени «admin» в столбце «Login Name», в открывшемся окне нажать кнопку Edit prefereces. На странице свойств пользователя admin нужно выполнить действия, описанные в предыдущем абзаце, а так же, возможно, выйти из системы нажав кнопку Logout в правом верхнем углу и снова войти.

Еще рекомендуется сразу создать еще одного пользователя системы с правами администратора и дальнейшую настройку системы осуществлять из под его записи, а запись admin «держать» на всякий непредвиденный случай 4). Для создания нового пользователя нужно открыть окно «Пользователи» (или «User Admin» если русская локаль еще не активирована) и нажать кнопку
Добавить пользователя, находящуюся справа. В открывшемся окне нужно заполнить все поля отмеченные звёздочкой, в том числе в поле «Пользовательская Роль:» выбрать Администратор

Определение ролей и создание пользователей

Определение ролей

Перед тем как, внедрять w2p для применения в Вашей компании, необходимо задуматься о ролевых нагрузках реальных людей: руководителей, исполнителей и специалистов участвующих в проектных процессах Вашей компании. По большому счету, такие системы как web2project должны накладываться на существующую или проектируемую систему управления в компании. В соответствии с такой системой должны быть определены роли должностных лиц, и на основании определённых «реальных» ролей должны быть определены роли пользователей в системе w2p. Это можно сделать перейдя по ссылке «Роли пользователя» страницы «Управление системой»5). Нажимая указателем мыши по символам слева можно получить доступ к редактированию названия роли, редактированию разрешений и запретов роли или к удалению роли. Определение новой роли доступно в нижней строке таблицы ролей. На примере нашей компании определены следующие роли в системе w2p:

  • Администратор - эта роль определена в системе в комплекте поставки и её лучше оставить без изменений.
  • Руководитель проекта - эта роль предназначена для «реальных» руководителей проектов, лиц ответственных за своевременное и качественное выполнение организационных мероприятий и работ по проекту. Таблица разрешений для этой роли 6) выглядит следующим образом:
Элемент Тип Статус
App: Calendar Доступ Просмотр Добавить Править Удалить разрешить
App: EventsДоступ Просмотр Добавить Править Удалить разрешить
App: Companies Доступ Просмотр Добавить Править Удалить разрешить
App: Tasks Доступ Просмотр Добавить Править Удалить разрешить
App: Project Importer Доступ Просмотр Добавить Править Удалить разрешить
App: Contacts Доступ Просмотр разрешить
App: Forums Доступ Просмотр Добавить Править разрешить
App: Resources Доступ Просмотр Добавить Править разрешить
App: ProjectDesigner Доступ Просмотр Добавить Править Удалитьразрешить
App: History Доступ Просмотр разрешить
App: Task Logs Доступ Просмотр Добавить Править Удалить разрешить
App: Help Доступ Просмотр разрешить
App: Projects Удалить запретить
App: Projects Доступ Просмотр Добавить Править разрешить
App: Files Доступ Просмотр Добавить Править Удалить разрешить
App: Reports Доступ Просмотр разрешить
App: User Administration Доступ Просмотр разрешить
  • Главный инженер проекта (ГИП) - эта роль предназназначена, собственно для ГИПов, а так же для руководителей пакетов работ по этапам проекта, а так же для начальников отделов и групп внутри компании, эти лица как и руководители проектов могут выдавать задания на производство работ. Таблица разрешений для этой роли выглядит следующим образом (нужно иметь ввиду, что эта роль назначается дополнительно к роли «Инженер», поэтому в таблице разрешений мало позиций):
ЭлементТипСтатус
App: Files Добавить Править Удалить разрешить
App: Forums Доступ Просмотр Добавить Править разрешить
App: Tasks Просмотр Добавить Править разрешить
  • Инженер - это роль исполнителя работ, такая роль назначается, в том числе инженерам разработчикам, инженерам - наладчикам, техникам по монтажу и т.д., так же она назначается ГИПам, руководителям групп (совместно с ролью «ГИП»). Таблица разрешений выглядит следующим образом:
ЭлементТип Статус
App: Companies Доступ Просмотр разрешить
App: Tasks Доступ Просмотр разрешить
App: Calendar Доступ Просмотр Добавить Править Удалить разрешить
App: Events Доступ Просмотр Добавить Править Удалить разрешить
App: Contacts Доступ Просмотр Добавить Править разрешить
App: Projects Доступ Просмотр разрешить
App: Task Logs Доступ Просмотр Добавить Править Удалить разрешить
App: Files Доступ Просмотр разрешить
App: Forums Доступ Просмотр Править разрешить

Управление пользователями

Управление пользователями w2p доступно при открытии соответствующей страницы 7): По нажатию кнопки Добавить пользователя откроется соответствующая форма, где нужно будет заполнить все поля отмеченные звёздочкой, в том числе выбрать роль пользователя. Добавление ролей станет возможно уже после создания пользователя на странице редактирования свойств пользователя во вкладке «Роли».

Определение проекта и планирование задач

Определение компании

Для определения какого-либо проекта сначала нужно определить компанию, в отношении которой будет осуществляться проект. Для определения компании нужно перейти по ссылке Компании и нажать кнопку новая компания, расположенную справа. Откроется форма где необходимо как минимум прописать имя компании и нажать кнопку подтвердить

Определение проекта

Определение проекта становиться доступным если нажать кнопку новый проект на странице проекты В открывшейся форме нужно заполнить все поля отмеченные звёздочкой, в том числе:

  • Имя проекта;
  • краткое наименование проекта - w2p принимает комбинацию из четырёх символов;
  • установить дату начала - по умолчанию это текущая дата, но если Вы импортируете задачи из уже существующего проекта (например какого-либо шаблона) то необходимо иметь ввиду, что все импортируемые задачи будут смещены во времени с учётом даты начала вновь создаваемого проекта;
  • статус проекта - в нашей компании для тех проектов по которым проводятся работы необходимо выбирать статус «в работе», некоторые отчёты формируемые напрямую из базы mysql учитывают только проекты с этим статусом;
  • флаг Active? - этот флажок устанавливает параметр активный проект или нет, если флажок установлен, то задачи проекта и пр. будут отображаться в других формах системы w2p, например «каледарь» или список «к исполнению», а так же задачи активных проектов будут участвовать в решении конфликта ресурсов; если флажок не установлен, то такой проект будет интерпретироваться системой как архивный

Из числа необязательных полей можно отметить поле «Описание», в нашей компании в это поле в заносятся реквизиты договора, на основании которого осуществляется проект.

По нажатию на кнопку подтвердить внизу формы проект добавиться в систему и можно будет приступать к определению задач проекта.

Определение задач

Модификация отображения диаграммы Гантта

Для наглядности диаграммы Гантта в части отображения сумм денежных средств платежей или поступлений по проектам можно сделать так, что-бы суммы прописанные в описании задач вех (см. соответствующий раздел) отображались в столбце Dur. Для этого нужно немного изменить файл gantt.php, расположенный в директории /var/www/web2project-2.4/modules/tasks следующим образом: нужно добавить имя столбца task_description таблицы tasks базы данных в аргументах mysql запроса, в указанном файле это блок отмеченный комментарием pull tasks, соответственно код в этом блоке должен выглядеть примерно так:

 $q->addQuery('t.task_id, task_parent, task_name, task_start_date, task_end_date,'.
		' task_duration, task_duration_type, task_priority, task_percent_complete,'.
		' task_description, task_order, task_project, task_milestone, task_access, task_owner, '. // тут так же прописано task_description
                ' project_name, project_color_identifier, task_dynamic'); 

так же, необходимо определить переменную, которой будут присваиваться значения task_description, на 350 строке файла, сразу за определением переменных $name и $pname нужно вставить такой код:

  
        $td = $a['task_description'];
        $td = ((mb_strlen($td) > 35) ? (mb_substr($td, 0, 30) . '...') : $td);
        $td = str_repeat(' ', $level) . $td;

и заменить одинарные кавычки на $td в массиве $fieldArray , сообщающем переменные для отображения задач вех, т.е. заменить элемент предназначенный для отображения длительности задачи вехи (а у вехи нулевая длительность, поэтому этот элемент обозначен как «пустое место»); за комментарием honour the choice to show task names only, где-то около 371 строки:

  if ($showTaskNameOnly == '1') {
                    $fieldArray = array($name);
                } else {
                    if ($caller == 'todo') {
                        $fieldArray = array($name, $pname, '', $s, $s);
                    } else {
                        $fieldArray = array($name, $td, $s, $s); // в этой строке, второй элемент '' заменён на $td
                    }
                } 
Может случиться, что после некорректных правок, диаграмма Гантта перестанет отображаться, для восстановления достаточно будет отменить все сделанные правки файла, или попросту заменить «испорченный» файл на исходный, взяв его из архива поставки приложения.

Расширение функционала w2p

Хитрости и немного о mysql

В w2p есть возможность добавлять в различные формы «пользовательские поля». Также, для различных целей можно использовать «стандартные поля», главное определить принцип, на основании которого то, или иное поле будет использоваться. Например, при создании задачи в поле «Комментарий» можно указать цифрами сумму денежных средств, которая предполагается к платежу (например по субподрядным работам) или поступлению (например, как оплата за выполненные работы). Заблаговременно можно создать пользователя системы с именем «платежи-поступления», и этого пользователя назначать на задачи, в которых имеются в поле «Комментарий» с цифрой, означающей платёж или поступление денежных средств. Лучше если такая задача будет задачей-вехой. Теперь: если подключиться непосредственно к базе данных и сделать запрос в базу по этому пользователю, то можно вытащить из всех проектов, все задачи, в которых исполнителем будет пользователь с именем «платежи-поступления». Остаётся хоть чуть-чуть освоить mysql, а выгрузку запроса обрабатывать в OpenOffice, так как в реально работающей фирме, таких задач будет очень много, и их нужно приводить к «общему знаменателю».

Учет платежей поступлений

1)
тут будет текст
2)
если вы устанавливаете w2p на локальную машину, то адрес должен выглядеть так: localhost/web2project-2.4/index.php
3)
разумеется, все остальные проверки для продолжения установки должны быть выполнены
4)
Например, бывало что через какое-то время не удавалось войти в систему из под какого-либо браузера, и так до тех пор пока все браузеры «не заканчивались». Лечилось это либо перезаписью пароля пользователя из под резервной администраторской записи, либо, что выяснилось позже, удалением cookie web2project на локальном компьютере
5)
После установки системы, в системе определено некоторое количество ролей, на их примерах можно потренироваться, определив так же, несколько пользователей с разными ролями
6)
доступна, если нажать символ «замочек»
7)
перейти по ссылки «Пользователи» на верхней панели