2012-05-22 3 views
0

Мы планируем разработать легкое приложение CRM (клиенты, заказы, ресурсы и т. Д.) В WPF с Prism.v4. Мы уже создали пользовательский контроль, похожий на внешний вид, и используем ленты microsoft. Существуют дополнительные области, но они являются существенными для этого сценария.Призмы CRM методы

Кроме того, существует DLL инфраструктуры со всеми моделями, репозиториев, интерфейсы и т.д. и т.п.

После долгих размышлений мы пришли к следующему факту:

customermodule не нужно ничего знать о ordersmodule (ordermodule знает модели клиентов). Но мы хотим, чтобы пользовательский пакет загружал все заказы, принадлежащие конкретному клиенту. Таким образом, в режиме customer-detail-mode (клиентские элементы ribbontab и customer outlookbar вводятся), мы хотим, чтобы ленточная кнопка переходила от «детали клиента» к «этим заказам клиентов».

Вопрос в том, как достичь этого, не нарушая ослабление сцепления?

Наш подход: предоставление клиенту-ribbontab региона для взаимодействия других модулей с клиентами. Потому что модуль заказа defenitively знает о клиенте (основанный на соотношении 1: n от нашего datamodel).

Спасибо заранее

+0

Возможно, я немного устал сегодня, и я не знаю, нужна ли вам это, но вы можете захотеть прочитать [PRISM Navigation] (http://msdn.microsoft.com/en-us /library/gg430861%28v=pandp.40%29.aspx), если вы еще этого не сделали :) –

+0

Это не совсем то, что я ищу. Моя навигация работает нормально. То, что я хочу достичь, - это взаимодействие внутри контактного модуля с порядковым модулем, в то время как контактный модуль ничего не знает о заказах. – csteinmueller

+0

Точка вашей свободной связи - это то, что вы можете ее протестировать. Это не тот случай, когда у вас есть ссылка с помощью OrderModule.dll. Таким образом, вы можете просто добавить дополнительное свойство 'List Orders' и использовать его для своих заказов этого конкретного клиента. Если ваш заказ когда-либо существует в ordermodule, то вы делаете это неправильно. Поскольку он является частью вашего «уровня домена», он должен быть широким, чтобы вы могли его повторно использовать. Таким образом, вы помещаете эти модели/объекты в отдельную dll, например ApplicationName.Domain –

ответ

0

Я думаю, что нормально, кнопка заказы Открытого клиента должна исходить из модуля клиента, а не модуль заказа. При нажатии этой кнопки может либо ...

  • Raise запрос навигации с URI типа/ShowCustomerOrders? CustID = 1234, что модуль Приказы бы понять и подобрать
  • Открыть вид, содержащий область с именем например «CustomerOrders», а затем вставить идентификатор клиента в контекст региона. Модуль «Заказы» зарегистрирует представление своих заказов клиентов с открытием.

Ни один из этих вариантов не требует добавления ссылки на OrderModule.dll, поэтому это не добавляет связи. Однако, если модуль Orders отсутствует, тогда навигация ничего не сделает, или представление будет пустым.

Если вы хотите, чтобы кнопка не появлялась, если модуль ордеров отсутствует, вы можете вместо этого получить модуль «Заказы», ​​чтобы добавить кнопку на ленту клиента через обнаружение открытий. Затем он должен будет забрать идентификатор клиента для текущего клиента из контекста региона, что даст ему достаточно информации, чтобы можно было открыть правильное представление заказов клиентов при нажатии.

Смежные вопросы