Какой шаблон дизайна C # подойдет для написания собственного рабочего процесса в asp.net - PullRequest
2 голосов
/ 27 февраля 2009

Пытаюсь найти несколько примеров на промежутках. Я думаю о модели государства или стратегии, но если у кого-нибудь есть какие-либо военные истории, примеры или ресурсы, на которые они могли бы мне указать, это будет оценено.

Я не / не могу использовать рабочий процесс Windows.

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

Например:

  • Отменено
  • Запрошено пользователем
  • Запрос менеджера
  • Подтверждено
  • Рефери
  • Администратор получил
  • Администратор подтвержден
  • Администратор отменен

Приветствие John

Ответы [ 3 ]

6 голосов
/ 27 февраля 2009

Как насчет шаблона State ( ссылка на википедию )?

public abstract class State
{
    /// <summary>
    /// Holds the current state we're in.
    /// </summary>
    public State CurrentState
    { 
        get; 
        set; 
    }

    public virtual string Cancelled(State context)
    {
        return "";
    }

    public virtual string RequestedByUser(State context)
    {
        return "";
    }

    public virtual string RequestedByManager(State context)
    {
        return "";
    }
}

public class CancelledState : State
{
    public override string Cancelled(State context)
    {
        context.CurrentState = new SittingState();
        return "Cancelled.";
    }

    public override string RequestedByUser(State context)
    {
        context.CurrentState = new RequestedByUserState();
        return "Requested by User.";
    }

    public override string RequestedByManager(State context)
    {
        return "You can't do this before it's been requested by the User";
    }
}

// (RequestedByUserState and RequestedByManagerState classes have been cut out)

Как видите, шаблон точно соответствует.

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

0 голосов
/ 26 января 2012

«Цепочка ответственности» более или менее похожа на стиль рабочего процесса. Это удивительный шаблон для работы с огромными возможностями гибкости. Я настоятельно рекомендую вам попробовать это.

0 голосов
/ 27 февраля 2009

Шаблоны проектирования не относятся к какому-либо языку (шаблон проектирования C #?).

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

Недавно прочитал статью в Javaworld об использовании шаблона Dispatcher для реализации рабочего процесса.

См. http://www.javaworld.com/javaworld/jw-10-2001/jw-1019-dispatcher.html

Вы могли бы также рассмотреть возможность оценки альтернативных существующих структур рабочего процесса с открытым исходным кодом в C #, таких как NetBPM http://www.netbpm.org/

...