Наша ситуация такова, что нам нужно импортировать параметрические фигуры из файлов конкурентов. Расположение их экрана и полей данных схожи, но достаточно различны, так что происходит процесс преобразования. Кроме того, у нас более полудюжины конкурентов, и обслуживание будет кошмаром, если будет осуществляться только с помощью кода. Поскольку большинство из них используют таблицы для хранения своих параметров для своих фигур, мы написали коллекцию объектов общего назначения для преобразования X в Y.
В моем приложении CAD / CAM импорт файла является командой. Однако волшебство преобразования выполняется набором правил посредством следующих шагов.
- Импорт данных в таблицу. Имена полей также вводятся в зависимости от формата.
- Передаем таблицу в RuleSet. Я объясню структуру набора правил через минуту.
- Набор правил преобразует данные в новый набор объектов (или таблиц), который мы извлекаем
- Мы передаем результат остальной части программного обеспечения.
Набор правил состоит из набора правил. Правило может содержать другое правило. У правила есть СОСТОЯНИЕ, которое оно проверяет, и ТАБЛИЦА КАРТ.
MAP TABLE отображает входящее поле с полем (или свойством) в результате. Может быть одно отображение или множество. Отображение не должно включать в себя просто вставку входного значения в поле вывода. У нас также есть синтаксис для вычисления и конкатенации строк.
Этот синтаксис также используется в условии и может включать несколько файлов, таких как ([INFIELD1] & "-" & [INFIELD2]) = "AB" или [DIM1] + [DIM2]> 10. Все, что находится в скобках, заменяется входящим полем.
Правила могут содержать другие правила. Это работает так, что для сопоставления подчиненного правила и его условия, и условия его родителя (или родителей) должны быть истинными. Если у subRule есть сопоставление, которое конфликтует с сопоставлением родителя, тогда применяется сопоставление subRule.
Если два правила на одном и том же уровне имеют условие, которое является истинным и имеют конфликтующее отображение, то правило с более высоким индексом (или более низким в списке, если вы смотрите на древовидное представление) будет применять свое отображение.
Вложенные правила эквивалентны AND, а правила того же уровня эквивалентны OR.
Результатом является таблица сопоставления, которая применяется к входящим данным для преобразования их в нужный вывод.
Дружественное отображение в пользовательском интерфейсе. А именно, древовидная структура, отображающая иерархию правил, и боковая панель, отображающая таблицу сопоставления и условия правила. Не менее важно то, что вы можете создавать мастеров, которые автоматизируют общие структуры правил.