2011-01-21 4 views
0

Например, система обрабатывает заказ клиента на check identification ->validate order context ->make order. Но системный администратор может изменить поток во время выполнения, администратор может пропустить «validate order context».Как изменить рабочий процесс?

Мой вопрос в том, что система обрабатывает запросы на одновременный заказ, , когда система должна применять изменение потока?

  • a): Применить изменения до следующего нового запроса заказа.

  • b): Внесите изменения немедленно, независимо от того, обрабатывается какой-либо запрос. Звучит слишком жестко.

  • c): Применить изменение до определенного времени, например, любые изменения будут применены в 00:00:00. Я не думаю, что это хорошая стратегия.

Что лучше всего подходит для сложившейся ситуации? Если я использую фреймворк jBMP для управления потоком работы, какую стратегию можно использовать в таком случае? Спасибо!

ответ

1

Все три варианта действительны. Правильный выбор будет зависеть от проблемы, которую вы решаете. Вот несколько примеров:

  1. Применить изменения, начиная со следующего нового заказа. Это хороший вариант, если вы хотите перейти в новый рабочий поток. Вы можете описать это как «завершить текущую работу с текущим рабочим потоком, но вся новая работа будет использовать новый рабочий процесс».
  2. Внесите изменения немедленно. Это хороший вариант, если более важно, чтобы currect workflow (тем самым, я имею в виду новый рабочий процесс) использовался для всей работы (как текущей, так и новой). Одним из примеров этого может быть «Мы удалили ненужный шаг из рабочего процесса».
  3. Применить изменения, начинающиеся со времени сертификации. Это хороший вариант в ситуациях, которые могут быть описаны следующим образом: «Сегодня мы используем старый рабочий процесс, но завтра мы начнем использовать новый рабочий процесс».
1

Ваш первый вариант применения со следующим рабочим процессом (то есть заказ) является самым безопасным с точки зрения параллелизма. Это то, что я сделал бы, потому что вы не вмешиваетесь в объекты с сохранением состояния, и тогда очень ясно, что наблюдалось, что произошло.

Второй вариант требует блокировки существующих рабочих процессов, чтобы гарантировать отсутствие в состоянии validate order context. И, если таковые имеются, следует написать алгоритм, позволяющий правильно вывести его из этого состояния.

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

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