Declarative business artifact centric modeling of decision and knowledge intensive business processes
design patterns : elements of reusable object - oriented software .