This repository has been archived by the owner on Sep 2, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathhowtomigratebbvcommon.html
96 lines (76 loc) · 2.76 KB
/
howtomigratebbvcommon.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
---
layout: documentation
title: How to migrate from bbv.Common
teaser:
navigation:
- name: How to Migrate
link: howtomigrate.html
---
<h2>How to migrate from bbv.Common</h2>
<p>
This page explains the changes we made when we renamed the project and cleaned-up its structure.
</p>
<h3>Event Broker</h3>
<h4>Renaming of subscription handlers</h4>
<p>
The built-in subscription handler were renamed because they were confusing:
<ul>
<li>Publisher is now OnPublisher</li>
<li>Background is now OnBackground</li>
<li>Interface is now OnInterface</li>
<li>InterfaceAsync is now OnInterfaceAsync</li>
</ul>
</p>
<h3>State Machine</h3>
<h4>Changed syntax to build hierarchies</h4>
<p>
Old: <code>machine.DefineHierarchyOn(SuperState, InitialLeafState, HistoryType, InitialLeafState, AnotherLeafState, YetAnotherLeafState)</code>
New: <code>machine.DefineHierarchyOn(SuperState).WithHistoryType(HistoryType).WithInitialSubState(InitialLeafState).WithSubState(AnotherLeafState).WithSubState(YetAnotherLeafState)</code>
</p>
<h4>Changed how multiple actions are defined to allow mixing of actions with and without access to the event argument</h4>
<p>
Old: <code>machine.In(SomeState).On(SomeEvent).Execute(Action1, Action2)</code>
New: <code>machine.In(SomeState).On(SomeEvent).Execute(Action1).Execute(Action2)</code>
</p>
<h4>Entry and Exit actions can now have access to the event argument</h4>
<p>
Now it is possible to access the event argument in entry and exit actions:
<code>machine.In(SomeState).ExecuteOnEntry<int>(argument => { ... }).ExecuteOnExit<int>(argument => { ... })</code>
</p>
<h4>ExceptionThrown event was removed</h4>
<p>
All exceptions are now passed to the event <code>TransitionExceptionThrown</code>.
Therefore, you only need to listen to a single event now.
</p>
<h3>Evaluation Engine</h3>
<h4>Introduced interface IAnswerer to be compliant with Interface Segregation Principle</h4>
<p>
This new interface allows to inject an evaluation engine with just access to the <code>Answer</code> methods.
</p>
<h3>IO</h3>
<h4>IIOAccessFactory</h4>
<p>
<ul>
<li>Renamed IIOAccessFactory to IAccessFactory</li>
<li>Changed registering of extensions</li>
<li>New IDrive and IEnvironment</li>
<li>Removed 'Access' from every method name and interface name (except IAccessFactory of course)</li>
<ul>
</p>
<h3>Logging</h3>
<p>
All log4net loggers were removed from the binaries and moved to a source code nuget package: Appccelerate.SourceCodeTemplates.
This simplifies modifying logging to your needs.
</p>
<h3>Csv Parser / Writeer</h3>
<p>
Moved to Appccelerate.IO package.
</p>
<h3>UserInterfaceThreadSynchronizer</h3>
<p>
Moved to Appccelerate.Async package.
</p>
<h3>bbv.Common package</h3>
<p>
Package was replaced with Appccelerate.Fundamentals package.
</p>