Мова обробки графів на базі JAVA

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

УДК 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
{
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 divss, 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. MF Kleyn, JC 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.
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Стаття
43.7кб. | скачати


Схожі роботи:
Матриці графів
Метод орієнтованих графів
Основні поняття і визначення теорії графів
Дерева та їх властивості приватний вид графів
Моделі теорії графів для виділення контурів по градиентному зображенню
Система обробки аудіоінформації Підсистема фільтрації і обробки сигналу
JAVA технологія 2
Огляд статті ЧИ Скворцова Мова спілкування і культура екологія і мова
Мова мова слово в духовній літературі роздуми педагога-словесника
© Усі права захищені
написати до нас