officefloor / OfficeFloor

OfficeFloor - inversion of coupling control
http://www.officefloor.net
Apache License 2.0
62 stars 5 forks source link
continuation-injection dependency-injection inversion-of-control inversion-of-coupling-control thread-injection

Website

Continuous Integration Codacy Badge codecov

Maven Central GitHub

OfficeFloor

OfficeFloor - inversion of coupling control

Inversion of Control = Dependency Injection + Continuation Injection + Thread Injection

More information available at http://officefloor.net

Inversion of Coupling Control

OfficeFloor completes inversion of control by adding two new paradigms:

In doing this, OfficeFloor is capable of running different threading models (e.g. both asynchronous single threaded and synchronous multi-threaded). In actual fact, OfficeFloor opens up mixing the threading models within the application and even introduces ability for taking advantage of thread affinity to CPUs.

This follows OfficeFloor modeling people in an office environment. As per the paper OfficeFloor: using office patterns to improve software design ( free download here ), OfficeFloor follows:

This allows OfficeFloor to better align to how business processes actually work:

In other words, people think/behave synchronously but organise asynchronously. Hence, both thread models are in play in modelling business processes. Furthermore, OfficeFloor makes development of asynchronous applications easier. This is achieved by allowing the developer to avoid asynchronous coding by having synchronous functions co-ordinated asynchronously (just like workers above).

Further to this, graphical configuration is used. An example configuration is as follows:

Graphical Configuration