2009-05-05 5 views
0

Возможно, это глупый вопрос, но я разработчик новичка.Дизайн - как я обрабатываю события на сохраненных объектах по мере их изменения?

Позволяет сказать, в CRM'ish приложения по обработке данных, у меня есть тип клиента, который может пройти через нескольких этапов - т.е. фаза 1 - 5.

Как клиент изменяет фазы - события должны вызывать , Пример: когда клиент переходит на фазу 3 с этапа 2, отправляется электронное письмо, некоторые списки обновляются и выполняются некоторые вычисления.

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

Так что я задаюсь вопросом - должен ли я справиться с этим, утверждая, что есть только один способ обновить состояние фазы клиента, а затем заверить, что всякий раз, когда это действие завершается, выполняется список действий?

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

Любые мысли вообще к этому? Я действительно просто ищу любой вход - предположим, что я совершенно не знаю.

ответ

0

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

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

0

Во многих случаях лучше иметь явную функцию в вашей бизнес-логике для изменения фазы. Это должен быть единственный способ изменить фазу, и это явное. Как и «ChangeCustomerPhase» (клиент Customer, Phase newPhase), это упрощает обработку, чтобы отслеживать изменения, если все можно свободно менять.

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

  • Нет связанных вопросов^_^