Как реализовать простой бизнес-процесс в Workflow Foundation?

Я начал просматривать WF и не могу понять, как он может заменить функциональность моего объекта домена. Вот простой сценарий объекта домена:

class Order {
    public int Id {get;}

    public OrderStatus Status {get;private set;}

    public void Approve () {
       if (Status >= OrderStatus.Approved)
          throw new InvalidOperationException("It is impossible to approve as order
          Status:" + Status);

       privateMethodCall();
       Status = Status.Approved;
    }

    public void Complete () {
       if (Status >= OrderStatus.Completed)
          throw new InvalidOperationException("It is impossible to Complete as order
          Status:" + Status);

       privateMethodCall1();
       Status = Status.Completed;
    }
}

Я читал, что WF может сделать это лучше, так как код Approve и Complete будет размещен в одном месте, и их нельзя будет вызывать в неправильном порядке. Это правда? и если это правда, можете ли вы показать мне, как это будет выглядеть в WF с использованием объектной модели (не xaml).

Заранее спасибо.


person Danil    schedule 22.02.2011    source источник


Ответы (1)


Есть 2 способа использования рабочего процесса:

  • Как последовательный процесс, в этом случае ваша система будет проходить шаги, определенные в процессе, и поэтому вещи не будут вызываться не по порядку.
  • В качестве конечного автомата он будет отслеживать, в каком состоянии находится ваш заказ и какие переходы разрешены. Это тот, который наиболее точно соответствует вашему коду, см.: http://blogs.msdn.com/b/endpoint/archive/2011/04/20/wf4-state-machine-user-experience.aspx

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

person Shiraz Bhaiji    schedule 29.05.2011