Here we use Sofi model to outline the requirements for a thriving future Federated Wiki Foundation.
# Sofi Influence Map **Enterprise:** Future Federated Wiki Foundation **Name:** Marc Pierson **Date:** Mon-Mar-24-21 **Time Frame:** One year - two years **Focal Point:** Equip the Federated Wiki enterprise so it can flourish for the next 10-20 years. *Copyright Phillip Cousins, Diane Downs, Sofi Executive Systems LLC All rights reserved. Used with permission www.asksofi.com*
.
See ** Questions for Eric**
.
We have confirmed that a parameterized observable notebook can be thoroughly configured via wiki code items.
In the frame below we can view the results. Configurations are below the pagefold.
//wiki.dbbs.co/assets/pages/js-snippet-template/importjs.html HEIGHT 700 SOURCE sofi
See FWF Model JMP by Marc.
* [ ] Sys 1 Customer Interaction FWF JMP * [ ] Sys 2 Staffing FWF JMP * [ ] Sys 3 Organizing Infrastructure FWF JMP * [ ] Sys 4 Marketing Sales FWF JMP * [ ] Sys 5 Learning Design Improvement FWF JMP * [ ] Sys 6 Operating FWF JMP * [ ] Sys 7 Resource Allocation FWF JMP * [ ] Sys 8 Strategy FWF JMP * [ ] Sys 9 Market Comm FWF JMP * [ ] Sys 10 Leading FWF JMP * [ ] Sys 11 Culture FWF JMP
.
We can improve on the definitions for each sphere. I took these from an introductory presentation I gave to the Washington State Health Care Authority, Department of Social and Health Services, and Department of Health about seven years ago. See Sofi & Cynefin
Once you have made your assessments on the eleven spheres of influence (above) you can turn your attention the Link Question Index and begin rating the quality of connections between these eleven spheres of influence. These are the processes (really the categories of processes) that make the enterprise go. Change the quality of the links and you change the status of the spheres of influence.
.
import {Runtime, Inspector} from "https://cdn.skypack.dev/@observablehq/runtime@4" import define from "https://wiki.dbbs.co/assets/pages/observable-svg/index.js" let module = new Runtime().module( define, Inspector.into(output))
Here we configure example node status. Status values include: unsure, go, caution, and stop. You can also specify and empty string to defer setting a status.
configure("nodeStatus", { "S-8": "unsure", "S-6": "caution", "S-3": "caution", "S-10": "go", "S-11": "go", "S-5": "go", "S-2": "stop", "S-1": "caution", "S-9": "unsure", "S-7": "unsure", "S-4": "stop" })
Here we configure example edge status. Edge status values include: unknown, agree, and disagree, or empty string to defer.
configure("edgeStatus", { "1->2": "", "2->1": "", "10->11": "agree", "11->10": "disagree" })
Here we configure node labels.
configure("nodeLabels", { "S-8": "Sys 8 Strategy FWF JMP", "S-6": "Sys 6 Operating FWF JMP", "S-3": "Sys 3 Organizing Infrastructure FWF JMP", "S-10": "Sys 10 Leading FWF JMP", "S-11": "Sys 11 Culture FWF JMP", "S-5": "Sys 5 Learning Design Improvement FWF JMP", "S-2": "Sys 2 Staffing FWF JMP", "S-1": "Sys 1 Customer Interaction FWF JMP", "S-9": "Sys 9 Market Comm FWF JMP", "S-7": "Sys 7 Resource Allocation FWF JMP", "S-4": "Sys 4 Marketing Sales FWF JMP" })
Here we clear (do you mean declare?) the example edge labels.
configure("edgeDescription", { "3->1": "", "1->2": "", "2->1": "", "10->11":"Some long statement to agree or disagree with" })
Here we create the function for modifying configurations.
function configure(name, newvalues) { module.value(name).then(old => module.redefine( name, _ => Object.assign({}, old, newvalues) )) } window.configure = configure window.module = module
Here we create a click handler which opens a ghost page with details of what was clicked.
output.addEventListener("click", event => { let {target} = event let {id, description, type} = target.closest("[data-id]").dataset let title = type == "edge" || !description ? id : description let story = (type == "edge" && description) ? [{ type: "paragraph", text: description, id: Math.abs(Math.random()*1e20|0) .toString(16) }] : [] window.parent.postMessage({ action:"doInternalLink", title, keepLineup: event.shiftKey }, "*") })
We also found a way to use CSS to hide the extra fields from display. It took some experimenting to discover that the SVG we care about is in the 3rd child element.
export default `<style> #output .observablehq { display: none; } #output .observablehq:nth-child(3) { display: block; } </style>`
.