Document Centric Design?

Shawn R. Hartsock
2 min readMar 10, 2021

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.

--

--