49976 (Язык обработки графов на базе JAVA)

2016-08-02СтудИзба

Описание файла

Документ из архива "Язык обработки графов на базе JAVA", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49976"

Текст из документа "49976"

УДК 681.3

М.Ю. КРУКОВСКИЙ

Язык обработки графов на базе JAVA.

Abstract: This paper describes a language for definition of wokflow processes. As a core for the language was used graph model. This language was involved in creation of system for workflow processes developing and execution

Key words: docflow, workflow, graph model, JAVA.

Анотація: У статті розглянута мова, що дає можливість описувати процеси композитного документообігу. Основою для мови була використана графова модель документообігу. Мови використовувалась для створення системи проективання та виконання процесів документообігу.

Ключові слова: електронний документообіг, процесне керування, графова модель, JAVA.

Аннотация: В статье рассмотрен язык, позволяющий описывать процессы композитного документооборота. Основой для языка послужила графовая модель документооборта. Язык использован для создания системы проектирования и исполнения процессов документооборота.

Ключевые слова: электронный документооборот, процессное управление, графовая модель, JAVA.

1.Введение

Формальный синтаксис и неформальная семантика определяют основные свойства существующих языков программирования. Языки и системы программирования подчинены общим законам эволюции [1]. Эволюция языков программирования прошла через парадигмы, которые в момент внедрения считались глубоко продуманными и устойчивыми. Такие парадигмы языков, как: процедурные, модульные, обьектно - ориентированные в свое время считалась едва ли не панацеей для всех задач. На сегодняшний день стало очевидно, что значимым является не только синтаксис или форма отображения грамматик, а прикладное значение языка.

В рамках настоящей статьи будет рассмотрено расширение языка JAVA, которое позволяет оперировать графами на уровне языковых конструкций. Автор пришел к необходимости данной разработки в процессе работы над реализацией системы композитного документооборота [2], основой которой выступает графовая модель [3]. Разработанное расширение распространяется с открытым кодом и может быть использовано для решения прикладных задач, оперирующих аппаратом теории графов.

2. Постановка проблемы

Для решения задачи предполагается расширить язык JAVA таким образом, чтобы с помощью этого расширенного языка можно было описывать и решать задачи документооборота, используя естественные для документооборота понятия и определения. В качестве основной модели предполагается использовать графовую модель, введенную автором настоящей статьи в работе [3]. Таким образом, задача создания языка документооборота сводится к задаче расширения JAVA возможностями работы с графами и наполнения этого языка семантикой документооборота.

Теория графов сегодня является очень важным и полезным аппаратом дискретной математики. Она широко применяется при решении, как теоретических вопросов, так и в практических инженерных задачах. Особенно много применений теория графов нашла при решении таких задач, как автоматизированный контроль, сетевое планирование и проектирование интегральных схем. Кроме этих задач, очень широко графы применяются при создании моделей различного взаимодействия. Интересным является факт, что графы используются не только в перечисленных, достаточно детерминированных задачах, но и в гуманитарных науках, таких как эпидемиология и лингвистика [4].

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

2.1. Состояние проблемы

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

Одним из первых появился язык GEA (Graph Extended Algol), который был разработан в 1970 на базе системы Univac 1108 и использовался в течении десятилетия в университетских вычислительных центрах [5]. Основным достоинством языка являлось то, что при своей простоте реализации, он позволял решать задачи обработки графов, использую базовые навыки программирования. Существенным недостатком этой разработки было непродуманное прикладное применение, что обусловило узкий круг использования. Широко использовался для прикладных задач язык GRASPE, построенный на базе библиотек языка LISP [6]. Название языка LISP (Лисп) происходит от list processing (обработка списков). Он широко используется в задачах символьной обработки, искусственного интеллекта, математической лингвистике и других. Помимо этого язык LISP может быть использован для построения графиков и задания чертежей. Но так как LISP оперирует списочными структурами, то его реализация позволила не только функционального оперировать графами, но и их визуализации [7].

Впоследствии предпринимались попытки создания универсального языка, который бы заложил долгосрочную базу под будущие языки обработки графов. Один из таких языков – GXL (Graph Transformation Languge), построенный на базе существовавшего, на тот момент, математического языка обработки деревьев TXL (Tree transformation language) [8]. Язык был хорошо проработан с математической точки зрения, что безусловно обеспечивало самые широкие возможности для обработки графов. В то же время, недостаточно было проработано его стыковка с языками программирования, что сделало этот язык известным только в кругу узких специалистов. Другое семейство языков, GBL (Graph Based Language), построенно в виде набора семантических определений и правил языковых цепочек с применением аппарата теории формальных языков [9]. Такой подход обеспечил невиданную до этого общность описаний. Но, вследствие недостаточной очевидности практической пользы применения, конкретных программных реализаций, основанных на этом языке, он остался невостребованным.

Таким образом, задача создания расширения языка программирования, оперирующего с графами, имеет достаточно проработанную и апробированную базу. В то же время реализаций такого языка на базе самого распространенного сейчас языка JAVA на данный момент автору неизвестно. Наиболее близкая к рассматриваемой в статье задаче - это разработанный на базе JAVA язык для иерархического моделирования и воспроизведения систем HiMASS-j (Hierarchical Modeling And Simulation System – Java) [10].

2.2. Выбор инструментария

Для решения поставленной выше задачи целесообразно использовать модификацию языка JAVA для реализации сложных приложений распределенных предприятий J2EE (JAVA 2 Enterprise Edition). Следует сказать, что язык J2EE делает упор не на библиотеки, а на набор связанных спецификаций и рекомендаций, которые собраны вместе для построения многоуровневых кроссплатформенных приложений. В данном контексте под спецификациями понимаются стандартизованные данные и методы их обработки, которые включены в платформу. При этом рекомендации представляют собой примеры реализаций по определенным предметным областям в соответствии со спецификой и особенностями применения.

Выбор языка J2EE в качестве исходной базы связан с тем, что именно он и его платформа рассматривается разработчиками JAVA, как наиболее перспективная среда проектирования и разработки распределенных JAVA приложений. Данная среда была специально модернизирована для поддержки современных требований для распределенных приложений.

3. Описание системы

Как уже отмечалось, язык GJE сделан в виде расширения к существующему и широко используемому языку JAVA. Автором предполагается, что сделанные на этом языке приложения можно будет использовать во всех трех существующих реализациях конечных приложений на JAVA, а именно – локальных приложений Application, удаленно исполняемых приложениях Applet и серверно- тиражируемых приложениях Servlet.

Технически язык GJE представляет собой внешнее расширение пакетов JAVA для решения задач документооборота и описан как package javax.workflow. Это дает возможность разработчиками подключать пакет и использовать его для решения задач документооборота.

Язык GJE позволяет строить модели документооборота, которые основаны на аппарате теории графов. Автором настоящей статьи в работе [3] введена графовая модель документооборота. Поэтому, при описании классов будет даваться не только общее назначение методов и данных с точки зрения графа как математического понятия, но и применения содержания классов, введенное в модели документооборота.

3.1. Описание интерфейсов языка GJE

Ниже приведено описание интерфейсов классов, являющихся основой языка GJE. Эти классы имеют тип “public”, поэтому они составляют основу построения конструкций документооборота на языке JAVA. Выбранная открытость реализации внешнего пакета обеспечивает возможность внесения модификаций в язык с учетом особенностей конкретных реализаций документооборота.

3.1.1. Класс Node

Класс Node представляет описание единицы нижнего уровня графа – вершины графа. Вершина графа является начальным элементом построения структуры, поэтому она не содержит методов, а содержит только значение, свойственное именно данной конкретной вершине. Как известно, совокупность вершин и их связи определяют граф.

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

При реализации документооборота, исходя из свойств языка JAVA, класс может быть расширен дополнительными методами обработки или данными. Такими данными может быть информация, которая не была известна на момент проектирования системы, а актуализировалась во время ее внедрения. Это дает возможность наращивать систему, при этом не нарушая основных правил.

Ниже приведен текст интерфейса класса Node.

package javax.workflow;

public interface Node

{

Object getValue();

void setValue(Object value) throws InvalidOperation;

}

3.1.2. Класс Edge

Класс Edge используется для описывания ребер графа. Ребро графа является базовым элементом аппарата теории графов и характеризуется тем, что соединяет одну или более вершин. Ребро может быть ненаправленным, то есть просто выступать элементом связности, упорядочивающим отношения между вершинами. Направленное ребро, кроме установления факта связности, еще и определяет последовательность в иерархии, то есть указывает на причинно- следственную связь между вершинами.

В применении к графовой модели документооборота, введенной автором в работе [3], вершина графа ассоциируется с действием, которое производит участник документооборота над документом. Если говорить более строго в терминах введенной модели, то ребро графа, описывающего модель документооборота является действием, произведение которого вызывает смену состояния документа с начального на промежуточное либо конечное. Соответственно, входящей вершиной графа является входящее для действия состояния документа. После произведения действия, установленного на ребре графа, документ принимает состояние, соответствующие исходящей вершине графовой модели.

Класс Edge содержит методы getInPoint и getOutPoint, которые используются для получения входящих и исходящих вершин соответственно. Метод getDirection получает данные, которые соотвествуют направленности ребра. Метод getDirection имеет тип Object , поскольку направленности ребра могут соответствовать не только собственно значение указания направленности, а и различные весовые характеристики ребра. Метод setDirection используется для принудительного установления свойств направленности.

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

Ниже приведен текст интерфейса класса Edge.

package javax.workflow;

public interface Edge

{

Node getInPoint();

Node getOutPoint();

Object getDirection();

void setDirection(Object direction) throws InvalidOperation;

Object getValue();

void setValue(Object value) throws InvalidOperation;

}

3.1.3. Класс Graph

Класс Graph является классом для классов, который объединяет функциональность классов Node и Edge. В данном классе реализовано классическое представление графа в виде совокупности вершин и ребер, соединяющие некоторые из этих вершин. Класс позволяет хранить произвольное количество вершин, имеющих определенное семантическое значение. Кроме того, класс обеспечивает возможность установления и хранения произвольного количества связей между заданными вершинами.

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

Метод createNode предназначен для создания множества вершин графа. То есть для создания множества состояний документов, используемых в процессе. Метод createEdge используется для создания множества ребер графа документооборота. В применении к модели документооборота это означает множество действий, которые производятся участниками для изменения состояний документов. Методы deleteNode и deleteEdge используются при удалении вершины и ребра соответственно. Методы getNodes и getEdges используются для создания упорядоченных коллекций, являющихся хранилищем для множества вершин и множества ребер.

Методы getName и setName пременен для хранения специфической информации, которая используется для индивидуального обозначения каждого процесса. Этот методы был использован в связи с тем, что в практическом использовании часто возникает ситуация в которой создается много очень похожих процессов по которым движется много похожих документов. В таких случая применяется индивидуальное маркирование процессов, которое свойственно процессу в пределах его жизненного цикла.

Ниже приведен текст интерфейса класса Graph.

package javax.workflow;

public interface Graph

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
437
Средний доход
с одного платного файла
Обучение Подробнее