Just like every software component has an interface, every open software architecture has an
Application programming interface (API) which delimits its boundary, keeping it separate from other systems, while making it possible to connect and interact with them.
Process-centric APIs are designed so that processes can flow through them. They are the main entry points for delegating execution, exchanging data, and transferring control back and forth across composable software systems. In this talk we illustrate a small collection of API design patterns derived from assigning the responsibility for determining "who does what when" to different parties, gradually deconstructing what it means to execute a process in a decentralized way.
Olaf Zimmerman, Mirko Stocker, Daniel Lübke, Uwe Zdun, Cesare Pautasso
Patterns for API Design
Simplifying Integration with Loosely Coupled Message Exchanges
December 2022,
ISBN: 978-0-13767010-9
44 Patterns for API Design
Client/Server
Storage vs. Computation
Processing Resource
Information Holder
Process-centric APIs
Who does What When?
Who does WhatWhen?
Who should perform a task?
Who initiates task execution?
Who does WhatWhen?
What has to be done?
Which task(s) can be done?
Who does WhatWhen?
When should a task be started?
When should a task be completed?
Process/Task
Imperative Task Execution
Voluntary Task Execution
Self Paced Task Execution
Deadline-Driven Task Execution
Self Imposed Task Execution
Spontaneous Task Execution
Loosely Coupled Task Execution
Independent Task Execution
Optional Task Execution
Elective Task Execution
Lock-Stepped Task Execution
Autonomous Task Execution
Passive Task Execution
Active Task Execution
Punctual Task Execution
Prioritized Task Execution
Arbitrary Task Execution
Facultative Task Execution
Process/Task APIs
Why?
What is the purpose of a task?
What causes a task to be executed?
Process/Task API
Multi Tasking
Coordination
What to do next?
Coordination
Centralized Coordination
Decentralized Coordination?
Decentralized Coordination
(with Autonomous Task Execution)
Coordination
Collaboration
Decentralized Collaboration
Conclusions
Different Process-centric APIs patterns determine where decisions on task execution (who does what when, and why?) and task coordination (what to do next) are taken.
Classical workflow architectures centralized all these decisions in the engine.
Tom Lichtenstein, Hassan Atwi, Mathias Weske, and Cesare Pautasso, Loose Collaborations on the Blockchain: Survey and Challenges, Proc. 21st International Conference on Business Process Management - Blockchain Forum, Utrecht, the Netherlands, Springer, pp. 21--35, September, 2023.
Cesare Pautasso, and Erik Wilde, Push-Enabling RESTful Business Processes, 9th International Conference on Service-Oriented Computing (ICSOC 2011), vol. 7084, Paphos, Cyprus, Springer, pp. 32-46, December, 2011.
Souhaila Serbout, Cesare Pautasso, Uwe Zdun, Olaf Zimmermann, From OpenAPI Fragments to
API Pattern Primitives and Smells, Proc. of the European Conference on Pattern Languages of
Programs (EuroPLoP 2021), Kloster Irsee, Germany, July 2021
Cesare Pautasso, Ana Ivanchikj, Silvia Schreier, A Pattern Language for RESTful
Conversations, Proc. of the 21st European Conference on Pattern Languages of Programs (EuroPLoP
2016), Kloster Irsee, Germany, July 2016, pp. 4:1-4:22