Какой шаблон дизайна C # подойдет для написания собственного рабочего процесса в asp.net

2

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

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

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

Например:

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

Приветствия Джон

  • 0
    Я не уверен, что очень ясно, о чем вы спрашиваете, в частности ... возможно, квалифицироваться?
  • 0
    хорошая точка зрения. я плохо знаю английский только что обновил, чтобы объяснить немного лучше
Теги:
design-patterns
workflow

3 ответа

6
Лучший ответ

Как насчет State pattern (ссылка wikipedia)?

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 been requested by the User";
    }
}

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

Как вы можете видеть, шаблон действительно подходит точно.

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

0

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

0

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

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню