Действия
Действие - это базовая операция, выполняемая приложением над реплицированными данными. Оно хранится в журнале и становится доступным для анализа сразу после записи или реконструкции журнала. Мы будем рассматривать действие как структуру, состоящую из шести элементов:
- целевой объект, идентифицирующий элемент (или элементы) данных, на которое направлено действие; если язык информационного моделирования допускает конструкции запросов, то целевой объект также может быть выражен в терминах запросов;
- статус, определяющий метод для динамической проверки, применено ли уже действие или нет; методы статуса не имеют побочных эффектов и возвращают логическое значение;
- предусловие, определяющее аналогичный метод для проверки, можно ли выполнить данное действие при текущем состоянии данных;
- операция - метод доступа или модификации элемента (элементов) данных, определяемого целевым объектом; предполагается, что операция не оказывает побочного эффекта на данные, не определенные явно как объект действия, но может нарушить их семантическую корректность в контексте наложенных ограничений и вносимых сторонних изменений; операция возвращает логическое значение, указывающее на успешное или неуспешное выполнение действия;
- тег, хранящий всю информацию, относящуюся к параметрам операции; этот элемент необходим для воспроизведения журналов и реконструкции данных;
- инверсия - метод инвертирования действия, позволяющий отменить принятые ранее изменения и вернуть данные в первоначальное состояние; реализация метода может быть связана как с изменением соответствующего признака в существующем экземпляре действия, так и с конструированием нового экземпляра действия с инвертированными свойствами.
В рамках рассматриваемой объектно-ориентированной метамодели целевым объектом действия может быть прикладной объект, группа прикладных объектов или целая популяция, определяемая некоторым объектным запросом. Объектом действия может быть также атрибут прикладного объекта или его отдельный элемент, если атрибут сложно структурирован, например, являясь некоторой коллекцией. В большинстве случае это прикладные объекты и их атрибуты.
Стандартный набор действий включает в себя операции создания, удаления, перемещения прикладного объекта, модификации атрибута или его элементов. Семантика операций может быть уточнена в зависимости от специфики рассматриваемого класса приложений. Например, в ряде случаев изменение атрибута целого типа может интерпретироваться как его увеличение или уменьшение на некоторое значение. Изменение атрибута, являющегося множеством элементов некоторого типа, может быть одновременно представлено как включение и/или исключение соответствующих элементов. Подобная детализация имеет смысл только в тех случаях, когда нарушения семантических ограничений проявляются на подобном уровне. Мы рассчитываем, что языки объектно-ориентированного моделирования позволяют конкретизировать репертуар и детальную семантику действий независимо от особенностей конкретного приложения и конкретной модели данных.