In the Big Denominator ecosystem, models (nodes on the directed graph) are defined by their input and output data. This data, wrapped in a single structure – which we refer to as the model’s schematic, is the model’s API. Schematics are the edges of the directed graph. In order to use the model, I put the inputs in the schematic and let the model fill in the outputs. That’s it.
Schematics have two important characteristics.
- Type ID: Each schematic is defined by a unique identification number, essentially its SKU. The ID allows the schematic to be efficiently routed and tracked through the system.
- SPUD: Schematics are capable of Serializing themselves into text representation, Packing themselves into compact binary data, Unpacking themselves from compact binary data, and Deserializing themselves from text representation. These capabilities, which we term SPUD, allows models to communicate across a network and data to be passed to other technologies (e.g., written to files).
Defining a schematic is simple; it boils down to a single line of code. Consider an encryption model that can either encrypt a plaintext string into a ciphertext string or vice versa. The following code defines the schematic:
SCHEMATIC➀(EncryptPkt➁, 999➂, (string sPlain; string sCipher; bool bEncrypt)➃, (sPlain, sCipher, bEncrypt)➄)
- SCHEMATIC keyword identifies that a schematic is being defined.
- EncryptPkt is the name assigned to this schematic type.
- 999 is the unique type ID assigned to this schematic type.
- Enclosed within parentheses, a semicolon-delimited list of the data in the schematic.
- Enclosed within parentheses, a comma-separated list of the data to be included in SPUD. All such data must itself be SPUD-able.
Using this schematic, my model could…
- If the bEncrypt flag is set to true, populate the sCipher text string by encrypting the sPlain text string; or
- If the bEncrypt flag is set to false, populate the sPlain text string by decrypting the sCipher text string.
Anyone with this schematic definition can order data from my model. They don’t have to know anything else about my model – what library it’s in or what server it’s running on. The Big Denominator DGE will take care of everything.
Think about this… The complexity of developing large applications just disappeared. Individual teams working on the various components need not meet or coordinate to any great extent – the project manager simply maintains a master dictionary of these schematic definitions on the project SharePoint site!
Don’t waste time in endless meetings coordinating teams and models; instead, focus on your models and core competencies.