У меня есть служба WF4, которая эмулирует воронку продаж. Он работает, начиная с приема вызова «Регистрация». После этого следуют 10 подобных этапов (состоящих из 2 приемов на каждом этапе). Вы не можете продвинуться дальше этапа, пока текущий этап не проверит полученные данные. В чем я не уверен, так это в том, что даже если мое клиентское приложение не позволит этого, как я могу сделать так, чтобы мой рабочий процесс не позволял никому вызывать операции приема не по порядку? В моем тестовом консольном приложении я позволяю пользователю вызывать любую операцию приема (просто потому, что я хотел посмотреть, что произойдет).
Например, если я сначала вызываю Register, а затем получаю «AddQualification» перед получением «AddProspect», тестовое приложение возвращается с таким исключением:
Operation 'AddQualification|{http://tempuri.org/}IZSalesFunnelService' on service instance with identifier '1984c927-402b-4fbb-acd4-edfe4f0d8fa4' cannot be performed at this time. Please ensure that the operations are performed in the correct order and that the binding in use provides ordered delivery guarantees
Из этого вытекают 2 вещи, которые я не знаю, как сделать:
Во-первых, как мне обработать исключение ошибки, чтобы осмысленно уведомить клиента и...
Во-вторых, поскольку я использую постоянство (и продвижение свойств), когда я делаю вызов не по порядку, продвигаемые свойства выгружаются. Они не повышаются снова после того, как клиент получает исключение.
Есть предположения?