Я не уверен, является ли это принципиальным вопросом дизайна или нет, но я не смог найти решение.
Я работаю в команде разработчиков фреймворка, которая отвечает за предоставление фреймворка элементов пользовательского интерфейса для всех остальных групп разработчиков программного обеспечения в нашей компании. У нас есть одностраничное веб-приложение, в котором каждая команда может разработать свой собственный модуль. Таким образом, после входа в систему, если пользователь хочет найти клиента, он видит страницы из приложения crm. Тогда, скажем, она хочет проверить остатки на счетах этого клиента, а затем ответит приложение Controllers in teller. Все проекты построены в Spring mvc, и мы создаем теги jsp, такие как переключатели, флажки со всеми необходимыми атрибутами и готовые к использованию методы Javascript. Однако, так как многие команды присоединяются, им нужно создавать свои собственные теги, особенно бизнес-теги, которые будут созданы путем объединения простых тегов, которые мы предлагаем. У нас есть общий Java-проект, в котором все теги определены в tld-файле, и они (все другие команды разработчиков) добавляют jar-файл этого проекта как maven-зависимость к своим собственным веб-проектам. Кстати, у каждой команды есть свой весенний проект MVC. Например, у казначейской команды есть свой собственный проект Java, который добавляет наш общий проект в качестве зависимости. Таким образом, они могут использовать теги, которые мы разрабатываем, в своих файлах jsp. Поскольку существует файл tld, атрибуты четко определены ниже:
<mycompany:photoTag id=“photoTag” photoSource=“{urlComingFromServer}” />
Но что нам делать, если самой казначейской команде необходимо разработать собственный тег с собственными бизнес-процессами и услугами?
Мы подумали, что есть некоторые альтернативы, но мы абсолютно не уверены.
Во-первых, у каждой команды может быть свой общий проект. Разрабатывая собственные страницы в своем веб-проекте, они могут перемещать бизнес-теги в общий проект. Но это создаст сложные зависимости, такие как команда crm зависит от команды кассира для своего тега, и, возможно, кассир будет зависеть от другой команды.
Другая проблема заключается в том, что при разработке проекта мне не нужно загружать все источники, связанные с тегом выбора учетной записи, в мое рабочее пространство, если я использую тег выбора учетной записи из модуля Teller.
Как мы можем создать среду, в которой каждый командный / бизнес-модуль может независимо создавать свой собственный тег jsp, который может легко использоваться любой другой командой в компании?
Спасибо.