Skip to content

judarical/Commands-pattern-example

Repository files navigation

Commands-pattern-example

This is axample for Stackoverflow Topic http://stackoverflow.com/a/37631844/2357405

The question is:

5 down vote favorite 3 I've created a rollback/retry mechanism using the Command Pattern and a custom retry mechanism with the RetryCount and timeout threshold properties as input (As described here Which is the best way to add a retry/rollback mechanism for sync/async tasks in C#?). I also tried the Polly framework instead and it is great!

Now, I want to wrap them in an abstraction. I could describe it as commands plan mechanism or command based decision mechanism.

So, Based on the different combinations of command results I have to decide which of the accomplished commands will be reverted and which of them not (I want to offer the ability to press a ReTry button and some off the commands shouldn't be reverted).

These commands are grouped in some categories and I have to take different rollback strategy for the different groups and commands (based on the result). Some kind of different policies would take place here!

IMPORTANT: I want to avoid IF/ELSE etc.Maybe the Chain-of-responsibility pattern would help me but I DON'T know and I really want help:

//Pseudo-code...

CommandHandler actionManager1 = new Action1Manager(); CommandHandler actionManager2 = new Action2Manager(); CommandHandler actionManager2 = new Action3Manager();

actionManager1.SetNextObjManager(Action2Manager); actionManager2.SetNextObjManager(Action3Manager);

actionManager1.ProcessAction(){...} actionManager1.ProcessAction(){...} ... Another idea could be observables or event handlers but the question is how to use them (?). Or just by using a list/stack/queue of Commands and check that list to take the next-step decision (?):

private List rollbackCommandsOfAllGroups; private List rollbackCommandsOfGroup1; private List rollbackCommandsOfGroup2; ... SCENARIOS

Finally, You can think of twenty (20) commands grouped in four (4) categories.

Scenario 1

Group 1 Commands (5) were successful Group 2 Commands 1 and 2 were successful but Command 3 was FAILED.Command 4 and 5 not executed Group 3 not executed Group 4 not executed Decision 1

Rollback Commands 1 and 2 from Group 2 BUT not the whole Group 1 Commands Scenario 2

Group 1 Commands (5) were successful Group 2 Commands (5) were successful Group 3 Commands (5) were successful Group 4 Commands 1 - 4 were successful BUT Command 5 was FAILED Decision 2

Rollback All Commands from all Groups I want to guide me and help me with CODE examples in C#.

About

This is axample for Stackoverflow Topic http://stackoverflow.com/a/37631844/2357405

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages