Similar presentations:
Система управления бизнес процессами
1.
Системауправления
бизнес
процессами
Подготовил: Крико Павел ФИТ-201
Научный руководитель: Шарун Иван Владимирович
2.
Обработка сообщенийДействия
Например, обработка
файла, запись/чтение в
БД и так далее
Потоки
управления
IF-ELSE, SWITCH, WHILE
и так далее
3.
MS Workflow Foundation4.
Пример кодаpublic class WhileActor : IActor{
private bool isExecuting = false;
public void HandleMessage(IActorMessage message){
if (message is ActivityMessage activityMessage){
if (!isExecuting && activityMessage.Status.IsExecuting){
isExecuting = true;
Run(activityMessage);}
else { isExecuting = activityMessage.Status.IsExecuting;}}}
private void Run(ActivityMessage activityMessage){
while(activityMessage.Condition.Evaluate
(activityMessage.Context)){
activityMessage.Activity.Execute(activityMessage.Context);
}
}
}
5.
Тест с Moqvar activityMock = new Mock<IActivity>();
var contextMock = new Mock<IContext>();
var statusMock = new Mock<IStatus>();
var conditionMock = new Mock<IActivityCondition>();
int callCount = 0;
//Setup while condition
conditionMock.Setup(condition=>condition.Evaluate
(It.IsAny<IActivityContext>())).Returns(() => (++callCount) <= 2);
var actor = new WhileActor();
actor.HandleMessage(new ActivityMessage{
Activity = activityMock.Object, Context = contextMock.Object,
Condition = conditionMock.Object, Status = statusMock.Object});
// Assert
activityMock.Verify(activity=>activity.Execute(contextMock.Object),
Times.Exactly(2));
6.
MoveCmd:If CheckFuel
BurnFuel
Explode
Move
Формальное описание
правил игры
(?i)Команда включает: если(?:\s*(?:CheckFuel|CheckAmmo и
так далее))*\s*затем(?:\s*(?:Move|Shoot|Rotate|и так
далее))*\s*иначе(?:\s*(?:Move|Shoot|Rotate|и так далее))*
7.
КС грамматика и ANTRL8.
КС грамматика и ANTRL9.
Пример кода[Fact]
public void Current_string_respond_grammar(){
string pathToTextFile = "../../../ParserTests/TestText.txt";
// Создание входного потока ANTLR из файла XML
string str = File.ReadAllText(pathToTextFile);
// Создание входного потока ANTLR из файла XML
AntlrInputStream input = new AntlrInputStream(str);
// Создание лексера
GameLexer lexer = new GameLexer(input);
// Создание токен-стрима на основе лексера
CommonTokenStream tokens = new CommonTokenStream(lexer);
// Создание парсера
GameParser parser = new GameParser(tokens);
Assert.Equal(0, parser.NumberOfSyntaxErrors);
}
10.
Плюсы использования в ВКР01
Гибкость и
выразительность
02
Проверка на
раннем этапе
03
Удобство
разработки
04
Интеграция
с ЯП
11.
Спасибо завнимание!