Здесь происходит несколько проблем. Во-первых, когда вы используете постоянство SQL, уведомление рабочего процесса о событиях и наличие событий публикации рабочего процесса является постоянным и асинхронным, а базовый процесс рабочего процесса является транзакционным ... но не так, как вы думаете.
Если где-то в последовательности событий произойдет что-то ужасное, что в конечном итоге приведет к переходу вашего рабочего процесса в новое состояние, то рабочий процесс вернется в состояние, в котором он находился, прежде чем предпринимать какие-либо действия - это поддерживает рабочий процесс в согласованном состоянии. поскольку быть «между государствами» - плохая идея.
Использование области транзакции, как вы делали выше, хорошо, но вы должны помнить, что единственные области действия транзакции действительно работают, когда классы в блоке using знают область транзакции.
То, что вы можете сделать, это сделать так, чтобы ваш вызов MyMethod обернул вещи в блок try / catch. Когда что-то идет не так, вы можете проголосовать за откат ... но это все равно не отменяет вызов метода в EDES.
Если вы можете дать некоторые подробности о том, что вы пытаетесь выполнить на более высоком уровне, могут быть некоторые вещи, присущие WF, которые могут вам лучше подойти, чем попытка включить область действия транзакции в смесь.
Редактировать
Я немного покопался и нашел пару разных мест, где нам говорят, что нет API для управления очередью работы планировщика . К сожалению, для нас это означает, что любое поведение отката, которое мы хотим, нам придется выполнять самостоятельно.
Если бы я знал больше о том, почему вы пытались откатить работу, поставленную в очередь через EDES, я мог бы предложить некоторые потенциальные архитектуры для выполнения вашей задачи без повторного изобретения колеса (транзакций).
9 раз из 10, когда я сталкиваюсь с подобными проблемами, когда кажется, что WF просто не поддерживает то, что я пытаюсь сделать, проблема в том, что я либо оставил слишком много кода снаружи рабочий процесс или попытка поместить слишком много кода в его и рефакторинг, где моя работа выполнена, часто решает мою проблему, не требуя от меня писать новые вещи.