Есть ли у этого "слишком общего" типа программирования имя?

Любой, кто имеет опыт работы с платформой Salesforce, знает, что она может быть использована в качестве бэкэнда для многих веб-приложений. Они позволяют конечному пользователю определять пользовательские объекты и поля этих объектов. Так, например, вместо того, чтобы иметь какую-либо сущность как строго типизированный класс в коде, у них есть общий "пользовательский объект", поведение и данные которого определяются полями, которые вы выбираете, а также триггерами и правилами, которые вы применяете к нему. Таким образом, им не нужно обновлять код, перекомпилировать и повторно развертывать каждый раз, когда пользователь добавляет его (что, учитывая, что он является веб-службой, будет непрактичным и приведет к серьезным простоям).

Я думал, как это можно реализовать, и я думаю, что Salesforce может сделать это очень сложным способом, но я специально думаю, как я могу это реализовать. До сих пор я придумал это:

  • "Определение объекта", которое содержит все метаданные для определенного типа записи. Эквивалентно жестко заданному определению класса.
  • Универсальная "запись", вероятно, со своего рода словарем / сопоставлением значений с идентификаторами полей, которые существуют в определении объекта.
  • При работе с пользовательскими данными запись и определение объекта должны находиться в памяти, чтобы можно было проверить целостность данных. Поведение, обычно предоставляемое методами, может применяться с использованием некоторой системы триггеров (опять же, я использую пример Salesforce, потому что это лучший пример, который я знаю) с определенными действиями / событиями.

Вся эта система кажется очень неуклюжей, медленной (без серьезной оптимизации), и, как будто она будет подвержена проблемам, которые не будут мешать 99% программных проектов, поэтому я хотел бы узнать больше об этом, но я понятия не имею, где начать искать.

Является ли идея, которую я изложил выше, уже существующей парадигмой, и если да, то как она называется?

1 ответ

Вы столкнулись с пользовательскими полями. Проект состоит в том, чтобы включить специфичные для арендатора поля для фиксированной сущности. Поскольку многопользовательская работа на высшем уровне требует, чтобы для всех арендаторов использовалась единая база кода / база данных с возможностью полной настройки. Этот дизайн - лучший подход. Приведенная ниже ссылка указывает на патент, который был выдан для управления пользовательскими полями для каждого арендатора.

https://www.google.com/patents/US7779039

Другие вопросы по тегам