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

При реализации документооборота, исходя из свойств языка 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

{

Collection getNodes();

Collection getEdges();

Node createNode(Object value);

Edge createEdge(Node in, Node out, Object direction, Object value);

void deleteNode(Node node) throws InvalidOperation;

void deleteEdge(Edge edge) throws InvalidOperation;

String getName();

void setName(String name);

}

3.1.4. Класс HyperGraph

Класс HyperGraph является высшим из классов в иерархии языка GJE. Этот класс обьединяет в себе все вышеописанные классы и действия над ними. Действия над классами реализованы в соответствии с алгеброй документооборота, предложенной автором в работе [10]. Кроме алгебры документооборота, в методах этого класса реализованы методы, которые обеспечивают создание и управление коллекцией графов. Коллекция графов используется для депозитария, в котором хранятся графы.

Гиперграфы - это совокупность графов, объединенных по определенным свойствам. Гиперграфы используют для представления совокупности графов в виде единого целого без потери свойств и характеристик, присущих графам, входящим в гиперграф.

В графовой модели документооборота, гиперграфом описывается совокупность процессов, составляющих документооборот предприятия либо обособленного подразделения. Гиперграф является хранилищем процессов, в котором объединены графы процессов, которые используются, использовались или могут быть использованы на предприятии.

Метод getGraphs используется для создания и управления депозитарием процессов, реализованных в виде коллекции графов. Тип Collection является стандартным типом языка JAVA, который используется для создания и управления большими массивами разнородных данных. Методы addGraph и deleteGraph используются для добавления и удаления графов из депозитария. Для реализации этих задач используются стандартные средства языка JAVA по управлению коллекциями данных. В то же время в реализации языка GJE предусмотрена возможность усиления стандартных возможностей, то есть добавления собственных методов управления данными депозитария.

В классе реализована алгебра документооборота, оперирующая на графах. Реализации методов основаны на описании операций на графах, представленные автором в работе [10]. В настоящую реализацию языка GJE входят следующие операции: объединение, пересечение, разности множеств и декартово произведение множеств.

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

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

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

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

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

package javax.workflow;

import java.util.Collection;

public interface HyperGraph

{

Collection getGraphs();

void addGraph(Graph graph) throws InvalidOperation;

void deleteGraph(Graph graph) throws InvalidOperation;

Graph unionGraph(Graph graph1, Graph graph2);

Graph intersectionGraph(Graph graph1, Graph graph2);

Graph differenceGraph(Graph graph1, Graph graph2);

Graph cartesianGraph(Graph graph1, Graph graph2);

Graph createGraph(Collection nodes, Collection edges);

}

3.1.5. InvalidOperation

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

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

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

package javax.workflow;

public class InvalidOperation

extends Exception

{

public InvalidOperation(String message)

{

super(message);

}

}

4. Выводы

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

Благодаря построения языка GJE как расширения языка JAVA имеется возможность обеспечить как локальное, так и сетевое взаимодействие между процессами электронного документооборота и адаптации систем к внутренним и внешним условиям использования.

ЛИТЕРАТУРА

1. Теслер Г.С. Новая кибернетика.- Киев: Логос, 2004. - 401с.

2. Круковский М.Ю. Концепция построения моделей композитного документооборота// Математичні машини і системи. - 2004. - № 2. - С. 149с - 163с.

9. Круковский М.Ю. Графовая модель композитного документооборота// Математичні машини і системи. - 2005. - № 3. - С. 149с - 163с.

4. Duncan J. Watts. Small worlds: the dynamics of networks between order and randomness.- Princeton: Princeton university press, 1999. - 262p.

5. S. Crespi-Reghizzi, R. Morpurgo. A language for treating graphs. - Communications of the ACM, May 1970 , Volume 13 Issue 5. 319-323

6. Хювенен Э., Сеппянен Й. Мир Лиспа. В 2-х томах. Т.1: Введение в язык Лисп и функциональное программирование.-М: Мир, 1990.- 447с.; Т.2.: Методы и системы программирования., 1990.-319с.

7. Terrence W. Pratt, Daniel P. Friedman. A language extension for graph processing and its formal semantics. Communications of the ACM, July 1971, Volume 14 Issue 7. 460-467.

8. Medha Shukla Sarkar. GXL: a new graph transformation language Proceedings of the 42nd annual southeast regional conference. 2004. 336-340.

9. M. F. Kleyn, J. C. Browne. A high level language for specifying graph based languages and their programming environments. Proceedings of the 15th international conference on Software Engineering . 1993. 324-335.

10. Thorsten Daum, Robert G. Sargent. A Java based system for specifying hierarchical control flow graph models. Proceedings of the 29th conference on Winter simulation. 1997 . 150-157.

Страницы: 1, 2



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.