|
14.12.2012, 12:30 | #1 |
Участник
|
Как разделить объект предметной области на несколько "видов"?
Добрый день!
А как обычно делают вот такое?: Есть сложное оборудование, видов которого много (десятки), и у каждого вида куча своих параметров настройки, и в отношении этого оборудования может быть куча других действий, рабочих процессов и т.п. (т.е. в одну сущность пихать - не вариант). Нужно, чтобы пользователю в одном списке было видно всё оборудование, и чтобы при нажатии кнопки "создать", в этом списке, вываливался выбор видов оборудования, для уточнения, экземпляр какого вида нужно создать. После выбора вида оборудования открывается форма создания соответствующей сущности. Это похоже на то, как сделаны "Действия" - есть ActivityPointer и есть возможность "отнаследовать" от него сущность, установив галочку "Это действие". Первые мысли это сделать сущность "СсылкаНаОборудование", и плагинами при создании/изменении/удалении сущностей, скажем, "ОборудованиеПервогоВида", "ОборудованиеВтороговида" (и т.д.) автоматически создавать/изменять/удалять экземпляр сущности "СсылкаНаОборудование". Посоветуйте, пожалуйста. Может есть какой то best practice? |
|
14.12.2012, 16:02 | #2 |
Moderator
|
В свое время я тоже подумывал сделать нечто подобное. К сожалению, отношения 1:1 в системе нет и даже не предвидится в грядущих версиях.
Варианта решения ровно два! Первый - так как вы сказали. Пишется плагин, который пихает все общие поля в сущность-родитель при создании-обновлении дочерних записей. Пишется скрипт для формы родителя, чтобы в момент загрузки форма редиректидась на форму дочерней записи. Переделывается лента, с тем чтобы отображать выпадающий список дочерних объектов... Словом, есть чем заняться, хотя все это возможно. Самая жесть начинается со связями объектов! Все ссылки, я так понимаю, будут на родительскую сущность. Поэтому надо будет извернуться, чтобы сделать гриды связанных записей. Как это сделать вы можете почитать у меня в блоге. Это то с чем я гарантированно сталкивался. Второй вариант - это монстр-объект и примитивный скрипт на форме загрузки. Поле на форме можно размещать несколько раз, так что вы просто дублируете все общие поля по скрытым разделам и делаете видимым только один, в зависимости от типа записи. Минус в том, что при загрузке формы будут вчитываться все поля монстр объекта, но даже это будет происходить быстрее, чем загрузка двух форм в первом варианте реализации.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional Последний раз редактировалось Артем Enot Грунин; 14.12.2012 в 16:04. |
|
|
За это сообщение автора поблагодарили: Алексей Калистратов (1). |