Как мне спроектировать объект «Источник» для управления различными типами ресурсов (Машина, Человек, Устройство) в произJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как мне спроектировать объект «Источник» для управления различными типами ресурсов (Машина, Человек, Устройство) в произ

Сообщение Anonymous »

Я разрабатываю систему управления производством (ERP/MES) с использованием Spring Boot + JPA, и мне нужен совет относительно правильной модели предметной области для производственных ресурсов.
В моей системе версия плана производства (Imalat Plan Revizyonu) может использовать несколько ресурсов, таких как:
Машины (например, пресс-машина)
Персонал (например, Оператор)
Измерительные устройства (например, штангенциркуль)
Каждое из них уже представлено отдельным объектом в системе:
Машина
Измерительное устройство
Пользователь (для персонала)
Теперь я хочу смоделировать общую концепцию под названием «Источник» (или «Ресурс»), которая может представлять собой любой из этих типов объектов при назначении редакции плана производства.
В настоящее время я рассматриваю два возможных подхода:
Вариант 1. Каждый объект представляет собой собственный тип ресурса.
Каждый объект (Машина, Измерительное устройство и т. д.) имеет поле sourceType (например, «Машина», «Устройство», «Человек»).
При создании редакции плана производства я просто выбираю из этих объектов и сохраняю их идентификаторы в таблице соединений, например. Production_revision_source.

Код: Выделить всё

@Table(name = "production_revision_source")
class ProductionRevisionSource {
@ManyToOne
private ProductionRevision revision;

private UUID referenceId; // e.g., Machine.id or Device.id
@ManyToOne
private SourceType sourceType; // e.g., "Machine", "Person", "Device"
private String description; // specific to this revision
}

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

Код: Выделить всё

    @ManyToOne
private SourceType sourceType; // e.g., Machine, Person, Device
private String description;
private UUID referenceId; // points to the real entity (Machine.id, etc.)
}
```Then the revision only references Source:```

class ProductionRevisionSource {
@ManyToOne
private ProductionRevision revision;
@ManyToOne
private Source source;
private String description; // optional per revision
}
Плюсы:
Централизовано, масштабируемо для новых типов
Упрощенная отчетность («показать все источники, используемые в системе»)
Минусы:
Необходимо синхронизировать описание источника, если исходный объект изменяется
Немного более сложная логика CRUD
Мой вопрос
Какой подход лучше на практике для производства/систем типа ERP с использованием JPA?
Следует ли мне моделировать все «ресурсы» (машины, персонал, устройства) через центральную исходную таблицу
или позволить каждому объекту действовать как отдельный тип ресурса и просто связываться по типу + referenceId?
Я также был бы признателен за любые реальные примеры или лучшие практики из систем ERP/MES с открытым исходным кодом (например, ERPNext, inoERP и т. д.), которые решают эту проблему моделирования.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -types-mac
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»