Веб приложение объединяющее функционал мессенджера, создания и ведения задач, с возможностью автоматизации процессов.
На компьютере должны быть установлены
- скачать исходники
git clone https://github.com/a-polyakov/com.zemrow.messenger.git
- запустить сервер
mvn TODO
Клиентская часть реализована на jQuery. За получение и обработку запросов отвечает Undertow. Взаимодействие осуществляется по протоколу rest и websocket. Данные хранятся в БД PostgreSQL
- Пользователь взаимодействует с клиентским приложением (это может быть ПК, телефон или другое устройство с WEB браузером) у одного пользователя может быть несколько одновременно используемых подключений.
- Клиентское приложение отправляет запрос на сервер (WebSocket).
- Сервер получает запрос, анализирует и отправляет на соответствеющий контролер.
- Контролер конвертирует данные и передает их в сервис.
- Сервис выполняет необходимые ему действия (часть из которых может выполнить вне транзакции).
- Внутри транзакции сервис вызывать один или больше логических блоков.
- Логический блок служат для повторного использования кода (без управления транзакциями, за это отвечает сервис).
- Логический блок использует DAO для взаимодействия с хранилищем.
- Передача ответа.
- Передача ответа.
- Передача ответа.
- Контролеру может понадобится несколько манипуляций с хранилищем.
- Запрос.
- Запрос.
- Ответ.
- Ответ.
- Логическому блоку тоже может понадобиться несколько манипуляций с хранилищем.
- Запрос.
- Ответ.
- Ответ.
- Ответ.
- Сервис получает ответ и закрывает транзакцию, дополняет ответ областью видимости.
- Контролер анализирует область видимости и определяет сервера которым необходимо отправить ответ.
- Сервер который должен отправить ответ может быть не один.
- Сервер по имеющемуся соединению уведомляем пользовательское приложение.
- Пользовательских приложений может быть много.
Работа мессенджера схожа с работой распространенных аналогов, поэтому остановимся на ключевых особенностях:
Задание это такой же чат с отображением ключевых элементов в шапке чата. Управление чатами/заданиями производится отправкой служебных сообщений такое сообщение содержит команды которые начинаются с !(восклицательный знак)
- !добавить_собеседника
- !удалить_собеседника
- !покинуть_чат
- !добавить_собеседника_с_историей
- !удалить_собеседника_с_историей
- !переименовать
- !задание
- !исполнитель
- !срок_выполнения
- !работа_начата
- !работа_приостановлена
- !работа_окончена
- !приватный_чат
- !статус
- !оценка_времени
- !описание
- !дата_проведения
- !место_проведения
- !ожидаемый_результат
- !фактический_результат
служебное сообщение может содержать параметры, которые могут быть обязательными тогда при их отсутствии система сообщит вам об этом
одно сообщение может содержать несколько команд
используя этот механизм можно расширять функциональность системы не меняя при этом клиентскую часть
Разобьем интерфейс на роли:
- Руководитель проекта
- создание задач
- оценку задач по приоритету
- осуществляет планирование
- следит за прогрессом выполнения задач и скорость работы.
- Руководитель команды
- детализация задач, разбиение на подзадачи
- оценку задач по времени
- распределяет имеющиеся задачи между исполнителями ориентируясь на загрузку
- следит за качеством выполнения задач
- Исполнитель
- должен видеть задачи которые ему необходимо сделать, в простейшем случае задачник отсортированный по приоритету, исполнитель берет задачу с наивысшим приоритетом и выполняет ее.
При этом пользователь может выполнять любую из ролей ну и конечно же совмещать
Для отслеживания прогресса задач хорошо себя зарекомендовала доска Kanban
таблица, где столбцы отображают статусы задач, колонки задачи отсортированные по приоритету (важные вверху) с возможностью группировки по исполнителям.
Для планирования используется диаграмма Ганта
Система должна предоставлять набор готовых и настраиваемых ботов, которые являются такими же пользователями мессенджера и имеют те же возможности, задача их следить да происходящим в чате/задании и реагировать:
- уведомлять о нарушении бизнес процесса при смене статуса
- уведомлять о приближении срока
- интеграция со сторонними системами
- при наступлении события в сторонней системе сообщать об этом в чате
- при определенных сообщениях в чате выполнять действие в сторонней системе
в общем случае анализировать текущее состояние и возможно предпринимать какие-то действия