Document Centric Design?
This is from an old blogpost I made in 2007. The concept I was playing with was that if ReST is modeled on HTTP and WebDAV is a way to do document collaboration on top of HTTP. Could you create a distributed system built on the concepts of WebDAV (document management) that was for other purposes.
The YAML centric API of Kubernetes I think validates some of these underlying impressions but clearly the idea was half-baked. What Kubernetes does is take this document centric API design idea I was promoting at VMware in 2013 and evolves it into something far better. The desired state paradigm broken down by Kelsey Hightower as a natural realization of contractual interfaces like the postage stamp on an addressed letter. The intention and implementation are separated allowing a freedom in architecture that is very human in its realization.
The Idea is that documents represent a single common data format for all processes. All processes produce or consume documents. A process that consumes no documents is called an originating process. A process that only consumes documents is called a terminating process.
Key Concepts:
Business Processes shall produce documents
- documents can never be changed
- documents record answers & decisions
- not necessarily real documents (like *.xml, *.pdf, *.doc) but perhaps table structure
Business Processes consume documents
- documents from other processes may feed this process
- processes may develop natural dependencies based on the documents they need
- processes may raise alerts based on the documents they need
- some processes may not require any documents, these are originating processes
Originating Processes begin a new workflow
- they originate a new workflow
- they have no prerequisite documents
Business Processes are versioned and concurrent
- clients default to starting the newest defined process under a given name
- documents in process will finish in the version they started in (this is not to say you couldn’t terminate processes to force people to use a new version )
Interviews are Processes concerned with asking questions
- Interviewees are the people taking an interview
- An Interviewer is a person filling in an interview form for a person
- A Self-Directed Interview is an online interview with no human interviewer (the computer is conducting the interview)
- answers are unique to an interviewee
- answers relate to facts that we can assert about an interviewee.
In addition consider that all updates should themselves be a new process and document.
Originally published at http://hartsock.blogspot.com.