Рабочий процесс как система для изменения потока кода - PullRequest
3 голосов
/ 09 декабря 2010

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

Например:

string response = new Assembly1.Class1().DoStuff();
if (response == "OK")
{
  new Assembly1.Class2().DoStuff();
}
else if (response == "NOTOK")
{
  new Assembly2.Class1().DoStuff();
}

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

Ответы [ 3 ]

2 голосов
/ 09 декабря 2010

По сути, вы должны решить, что вы пытаетесь достичь.

Код C # содержит определенную сложность, но вся эта сложность есть, потому что код C # очень гибок.

Вы должны решить, какую гибкость вы хотите дать своим нетехническим пользователям. Если вы хотите дать им ту же гибкость, что и в C #, вы можете просто настроить их на C #.

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

Следующим шагом, определив предметно-ориентированный язык, является его анализ и интерпретация. Это относительно сложно и обычно является предметом одного семестрового курса в колледже под названием «Компиляторы». Если вы еще не прошли курс компиляторов, есть книги, которые вы можете прочитать. Вы можете пропустить много шагов, используя язык разметки, такой как XML, и стандартную библиотеку синтаксического анализа XML.

0 голосов
/ 09 декабря 2010

Шаблон фабричного дизайна может быть вам полезен. С фабричным шаблоном вы можете назначать объекты во время выполнения и позволять этим объектам определять ход процесса ...

Вы должны создавать разные классы с помощью метода, скажем, WorkFlow () (на который ссылается интерфейс). Метод должен иметь возможность вызывать другие методы в зависимости от необходимости.

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

0 голосов
/ 09 декабря 2010

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

...