Как реализовать простой бизнес-процесс в Workflow Foundation? - PullRequest
0 голосов
/ 22 февраля 2011

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

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).

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

1 Ответ

1 голос
/ 30 мая 2011

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

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

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

...