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 | +-------------------------------------+ | | Последнее правило было завершающим? | Нет >------+ +-------------------------------------+ Да (если правило не является завершающим, | его вывод служит новым ключом | для поиска следующего правила) +-----------------------------------+ | Вывод последнего правила является | | результатом для приложения | +-----------------------------------+