Почему делают формальную презентацию?
Принятие размера команды является по крайней мере двумя, сделайте реальный пример: Позвольте два (или больше, больше лучше), люди получают код, вносят их изменения и показывают то, что он берет для интеграции всех тех изменений с помощью любого не управление исходным кодом средства, которые Вы используете.
Затем делают тот же сценарий с помощью управления исходным кодом.
количество времени и усилия, которые Вы экономите при помощи управления исходным кодом, выступят за себя.
В конечном итоге вам, вероятно, понадобится обновленный механизм WF в .NET. 4.0 , так как он намного быстрее и обеспечивает действие блок-схемы (не совсем конечный автомат, но работает для большинства сценариев) и приятный интерфейс дизайнера. Но поскольку он еще не выпущен, это, вероятно, пока не лучший ответ.
В качестве альтернативы вы можете попробовать stateless , библиотеку, специально предназначенную для создания программ конечного автомата в .NET. Похоже, что он не предоставляет пользовательский интерфейс, но выглядит хорошо подходящим для достижения других ваших целей.
Да, Microsoft, возможно, опередила свое время с State Machine WF. Последовательные рабочие процессы воспринимаются намного лучше.
Когда мы решили использовать конечный автомат, мы свернули свой собственный. потому что мы не смогли найти приемлемую структуру с пользовательским интерфейсом. Вот наши шаги. Надеюсь, они вам помогут.
Создайте интерфейс состояния:
открытый интерфейс IApplicationState
{
void ClickOnAddFindings ();
void ClickOnViewReport ();
//И так далее
}
Создайте состояния и попросите их реализовать интерфейс:
открытый класс AddFindingsState: IApplicationState
{
frmMain _mForm;
общедоступный AddFindingsState (frmMain mForm)
{
this._mForm = mForm;
}
public void ClickOnAddFindings ()
{
}
public void ClickOnViewReport ()
{
// Устанавливаем состояние
_mForm.SetState (_mForm.GetViewTheReportState ());
}
}
Создайте экземпляры состояний в главном класс.
IApplicationState _addFindingsState;
IApplicationState _viewTheReportState;
_addFindingsState = новый AddFindingsState (это);
_viewTheReportState = новый ViewTheReportState (это);
Когда пользователь делает что-то, требующее изменения состояния, вызовите методы для установки состояния:
_state.ClickOnAFinding ();
Конечно, действия будут жить в конкретном экземпляре IApplicationState.