The fourth chapter of Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp on the General Problem Solver.
The chapter starts with a quote by Herbert Simon, a Nobel Prize winner and one of the inventors of the General Problem Solver (GPS):
This is the chapter of Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp (PAIP) that dives into Common Lisp syntax.
The chapter starts with a quote by Guy L. Steele, Jr.:
After some vacation and working on other things I finally got round to Chapter 2 of Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp (PAIP).
The chapter starts with a quote by the Italian royal historiographer Giovanni Battista Vico (1668-1744):
From my parents I received the book Paradigms of Artificial Intelligence Programming by Peter Norvig for my 28th birthday.
PAIP is a classic with high standard Common Lisp code to solve problems in artificial intelligence. The coming year I will study this book.
There are 25 chapters and there are 52 weeks till 13 July 2017. This means I have to finish a chapter roughly every two weeks.
In enterprise organizations it is bound to occur that different teams are building similar software independently of each other. For example, multiple teams write code which interacts with various services and performs some business logic in a similar manner. The complexity of creating software is usually not in creating components which interacts with external software itself (e.g., connecting with a RESTful API via a service client class). The complexity resides in the means of combination of these various components. I.e. the modeling of the business process (the flow of work through an organization).
A Petri net is a mathematical modeling language which is particularly suited to model business processes. In the foreword of Modeling Business Processes: A Petri Net-Oriented Approach by Aalst & Stahl (2011) it is stated that:
Petri nets provide the foundation of the graphical notation and the basic primitives for modeling concurrency, communication, and synchronization. The extension of these basic primitives with data (color) ... makes it possible to model and analyze complex artifacts. (p. iv).
To facilitate flexibility in the face of changing requirements, to encapsulate the business rules in one central place, and to possibly tackle the problem of re-usability described above, a Petri net can be used to model a business process. Below I will show an example of using a Petri net using a domain specific language (DSL) which we have started creating at work. From this DSL which describes a business process an event-driven Petri net representation can be generated. All that is left of complex business logic in an application is the need to send the right events (with data) to the Petri net representation.