3. Алгоритм
Алгоритм DDDS основан на концепции Правил перезаписи (Rewrite Rule). Эти правила собираются в базу DDDS Rule Database, и доступ к ним обеспечивается по уникальным ключам. Конкретное Правило, будучи примененным к Application Unique String, преобразует эту строку в новый Ключ, который может использоваться для отыскания нового Правила в Базе. Это новое правило применяется к исходной строке Application Unique String и цикл повторяется, пока не будет выполнено условие завершения. Приложению недопустимо применять правило для вывода предыдущего правила. Все Правила перезаписи для всех Приложений должны всегда применяться точно к той же строке Application Unique String, с которой алгоритм начал работу.
Фундаментальны допущением является то, что строка Application Unique String представляет собой некий тип регулярной лексической структуры, к которой применяются правила. DDDS предполагает, что лексический элемент, используемый для принятия решения о передаче полномочий, содержится в самой строке Application Unique String. DDDS не решает задачи, когда для принятия решения о делегировании требуется информация, содержащаяся за пределами строки AUS и Правила (время сутом, финансовые транзакции и т.п..).
Схема работы алгоритма показана на рисунке.
+--------- Application Unique String
| +----+
| |ввод|
| +-------+ +----------+
| | First Well Known Rule |
| +-------+ +---------+
| |вывод|
| +-----+
| Первый ключ
| |
| +----<--------------<--------------+
| | |
| ключ (База данных DDDS всегда |
| +----+ принимает ключ и |
| |ввод| возвращает правило) ^
| +---------+ +--------+ |
| | Поиск в DDDS Database | |
| +---------+ +-------+ |
| |вывод| |
| +-----+ |
| Набор правил |
| | |
| | (вводом для правила служит |
| Набор правил правило и AUS. ^
| +----+ Выводом всегда служит |
+---------------->|ввод| ключ или результат) |
+---------------+ +-------------------+ |
| Правила применяются к AUS, | |
| пока не будет получен результат, | |
| удовлетворяющий требованиям приложения | |
+---------------+ +------------------+ |
|вывод| |
+-----+ ^
ключ |
| |
v |
+-------------------------------------+ |
| Последнее правило было завершающим? | Нет >------+
+-------------------------------------+
Да (если правило не является завершающим,
| его вывод служит новым ключом
| для поиска следующего правила)
+-----------------------------------+
| Вывод последнего правила является |
| результатом для приложения |
+-----------------------------------+