Студия SoftTime  

нижний новгород

IT-студия SoftTime

Портфолио / система \"Sv-Workflow\" (г. Дзержинск)


Система автоматизированного управления бизнес-процессами предприятия класса Workflow "Sv-Workflow"

Система автоматизированного управления бизнес-процессами предприятия класса Workflow - программное обеспечение, упорядочивающее и управляющее задачами, ресурсами и правилами, необходимыми для выполнения бизнес-процесса.

Нами разработан один из вариантов АСУП класса Workflow на основе технологии Java 2 Enterprise Edition (J2EE).

Разработанная система представляет собой группу пользователей (ролей), между которыми реализован обмен сообщениями. Обмен сообщениями происходит через маршрутизатор, который рассылает сообщения между клиентами в соответствии с заданными условиями. Клиенты представляют собой отдельные роли Workflow и реализованы по технологии “тонкий клиент”. Основу маршрутизатора составляет служба сообщений Java Message Service (JMS). Сам маршрутизатор реализован в виде отдельного компонента Enterprise Java Bean (EJB), расположенного в контейнере сервера, который принимает запросы от клиентов и отвечает на них, взаимодействия с компонентом EJB. Полученные маршрутизатором JMS-сообщения от клиента или компонента сервера является событием Workflow-системы. Задача маршрутизатора состоит в приеме, документировании и расшифровке JMS-сообщения. Обработка управляющих сообщений происходит по программе, составляемой Workflow-программистом, посредством специально разработанной данной системы внутреннего макроязыка. В частном случае управляющие сообщения могут посылаться маршрутизатору пользователями. Временная последовательность выполнения заданий определяет последовательность операторов в программе на макроязыке. Программу можно исправлять и дополнять непосредственно во время работы системы на предприятии. Маршрутизатор возвращает клиентам карту Workflow-процесса, которая является графическим отражением управляющей программы, заданной маршрутизатору.

Наличие внутреннего макроязыка является одним из достоинств разработанной системы, поскольку большинство аналогичных систем не представляет гибких средств для внешнего программирования бизнес-процессов. В лучшем случае имеется программный API, не предоставляющий достаточного уровня абстракции, необходимого для ясного моделирования сложных бизнес-процессов.

Пример

Примеры возможных операторов макроязыка

В начале работы программируется структура отделов данного предприятия, т.е. определяется сколько и каких потенциальных ролей находиться в отделе, какие action-ы или их элементы закреплены за отделом и т.д. На этом этапе возможно не только моделирование структуры отделов, но предоставление сервисов по динамическому добавлению ролей, предоставлению справочной информации и др.

DEPARTMENT FIRST              
// объявляем первый отдел

DEPARTMENT SECOND             
// объявляем второй отдел

ROLE ENGINEER                 
// вводим роль инженера

ENGINEER PETROV, SIDOROV      
// создаём экземпляры ролей инженера

FIRST.ADD (PETROV, SIDOROV)   
// добавляем экземпляры в первый отдел

SECOND.ADD (PETROV)           
// экземпляры могут совмещать обязанности

FIRST.INFO                    
// предоставляем информацию по первому отделу

Написание программы динамики бизнес-процесса сводиться к обработке событий в системе Workflow. Событие происходит в момент получения JMS-сообщения.

При активизации action об этом извещаются все участники (роли) путем рассылки им уведомления о начале работы и сроках исполнения.

INIT_ACTION (ROLE1, ROLE2, ROLE3,...) 
// Извещаем роли о начале работы над action 
APPOINT (ROLE1, TASK345, DATE) 
// Назначить роли 1 задание номер 345 до срока DATE.  

В случае если роль предоставила отчёт о выполнении своей части работы - происходит событие, сигнализирующее о том, что первая роль выполнила своё задание и можно начинать работать второй роли. Это реализуется посредством следующей конструкции:

IF (DONE (ROLE1)) THEN BEGIN (ROLE2) ELSE WARN (ROLE1)

Если роль 1 закончила задание разрешить начало работы роли 2, в противном случае роли 1 выносится предупреждение. Здесь обрабатывается событие успешного завершения работы первой роли, генерация данного события происходит после того как ROLE1 присылает JMS-сообщение с готовым проектом, подтверждая, что он закончил над ним работать.

Если же роль 1 так и не справилась с выполнением задания, происходит переназначение задания другой роли:

IF (NOTDONE (ROLE1)) THEN APPOINT (ROLE3)

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

NOTIFICATION (ROLE3, DONE (ROLE2)) 

Оповещаем роль 3, что роль 2 закончила задание.

В начале каждой Workflow-программы требуются стандартные действия, например, по определению структуру предприятия. Эти операторы можно объединить в подпрограмму и вызывать одной строкой.

CALL SETSTRUCTURE()

Пример программы на макроязыке

Пусть надо реализовать следующую простейшую цепочку работ.
Роль А, находящаяся в первом отделе, посылает задание роли В, находящейся во втором отделе. После выполнения задания ролью В, оно пересылается роли С из третьего отдела. Когда роль С выполняет задание она сообщает роли А, инициировавшей задание об его успешном выполнении. Если одна из ролей не справляется с заданием происходит переназначение этого задания роли D, при этом роль А начинает выполнение задание по подготовке документов о наказании роли, не справившейся с заданием.

SUBROUTINE SETSTRUCTURE
… 
END SUBROUTINE SETSTRUCTURE

PROGRAM EXAMPLE
BEGIN PROCESS EXAMPLE  
CALL SETSTRUCTURE();
DEPARTMENT FIRST;
DEPARTMENT SECOND;
DEPARTMENT THIRD;
ROLE ACCOUNTABLE;
ROLE ENGINEER;
ACCOUNTABLE A;
ENGINEER B,C,D;
FIRST.ADD (A);
SECOND.ADD (B);
THIRD.ADD (C);
INIT_ACTION (A, B, C);
APPOINT (B, TASK345, 14);
APPOINT (С, TASK346, B.DATE + 14);
BEGIN (B);
IF ((B.TASKTIME > B.DATE) AND ((B.TASKTIME - B.DATE) < 3)) THEN
{
WHILE ((B.NOTDONE) OR ((B.TASKTIME - B.DATE)!=3))
{	
EVERY DAY WARN (B);
	}
}	
ELSE IF ((B.TASKTIME - B.DATE)>=3) THEN
{
APPOINT (D, TASK 345, 10);
	BEGIN (D);
	APPOINT (A,TASK347,2);
	BEGIN (A);
}		
ELSE IF (DONE (B) OR (DONE (D))) THEN 
{
IF (DONE(B)) THEN
{
NOTIFICATION (C,DONE(B));
NOTIFICATION (A,DONE(B));
}
	ELSE IF (DONE(D)) THEN
	{
NOTIFICATION (C,DONE(D));
NOTIFICATION (A,DONE(D));
	}
BEGIN (C);
}
IF (DONE(C)) THEN
{
	NOTIFICATION(A,DONE(B));
	END PROCESS EXAMPLE;
}
ELSE
{
	APPOINT (D, TASK346, 5);
	BEGIN (D);
	IF (DONE(D))
	{
		NOTIFICATION(A,DONE(D));
		END PROCESS EXAMPLE;
	}
	ELSE
	{
		END PROCESS EXAMPLE;
		RETURN -1;
	}
}
END PROGRAM EXAMPLE    
Наверх  
 
 

IT-студия "SoftTime" создана группой профессионалов в IT-области: Кузнецовым М.В., Голышевым С.В., Симдяновым И.В., которым есть чем гордиться и чем доказать свой профессионализм: большое количество выполненных работ, многочисленные достижения и награды, полученные в результате профессиональной деятельности, авторство большого количества книг по программированию и разработке сайтов. Все это служит гарантией надежности Web-студии "SoftTime" и залогом будущего успешного взаимодействия.

Записки реаниматолога. Автор: Кузнецов М.В. PHP на примерах (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (третье издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Головоломки на PHP для хакера (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Народные советы. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Головоломки на PHP для хакера. Авторы: Кузнецов М.В., Симдянов И.В.
Программирование: ступени карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Security & Cracking Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP5 на примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP5. Практика создания web-сайтов. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP5. Авторы: Кузнецов М.В., Симдянов И.В.