Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Create your WardleyMaps as code/data and render it as SVG (onlinewardleymap and wtg language supported)

License

NotificationsYou must be signed in to change notification settings

owulveryck/wardleyToGo

Repository files navigation

Go Referencecodecov

A set of primitives to "code a map". In the context of the package "a map" represents a landscape.The landscape is made of "Components". Each component knows its own location on a map.Components can collaborate, meaning that they may be linked together. Therefore a map is also a graph.The entrypoint of this API is the 'Map' structure

wtg: language

wtg is a high level language to design and render Wardley Maps implemented with this SDK.

Check the online demo (wtg playground) and the doc athttps://owulveryck.github.io/wardleyToGo/

Credits: this demo is heavily inspired byGraphvizOnline. It uses:

Using the library

The wtg DSL

example:

title: sample map // title is optional/***************  value chain ****************/business - cup of teapublic - cup of teacup of tea - cupcup of tea -- teacup of tea --- hot waterhot water - waterhot water -- kettlekettle - power/***************  definitions ****************/// you can inline the evolutionbusiness: |....|....|...x.|.........|public: |....|....|....|.x...|// or create blockscup of tea: {  evolution: |....|....|..x..|........|  color: Green // you can set colors}cup: {  type: buy  evolution: |....|....|....|....x....|}tea: {  type: buy  evolution: |....|....|....|.....x....|}hot water: {  evolution: |....|....|....|....x....|  color: Blue}water: {  type: outsource  evolution: |....|....|....|.....x....|}// you can set the evolution with a >kettle: {  type: build  evolution: |...|...x.|..>.|.......|}power: {  type: outsource  evolution: |...|...|....x|.....>..|}stage1: genesis / conceptstage2: custom / emergingstage3: product / convergingstage4: commodity / accepted

you will find tools to convert the file into SVG or dot format in the examples subdir or compiled version for various platforms in the repository

If you have Go installed, you can generate the map with

cat sample.wtg | go run main.go > wtg.svg

from theexamples/wtg2svg directory

The OWM parser

The library comes with a parser to handle part of the OWM syntax.

Create a map from the owm example (seehttps://onlinewardleymaps.com/#h4hJOoRdO4hHSljIb9 to build one):

title Tea Shopanchor Business [0.95, 0.63]anchor Public [0.95, 0.78]component Cup of Tea [0.79, 0.61] label [19, -4]component Cup [0.73, 0.78] label [19,-4] (dataProduct)component Tea [0.63, 0.81]component Hot Water [0.52, 0.80]component Water [0.38, 0.82]component Kettle [0.43, 0.35] label [-73, 4] (build)evolve Kettle 0.62 label [22, 9] (buy)component Power [0.1, 0.7] label [-29, 30] (outsource)evolve Power 0.89 label [-12, 21]Business->Cup of TeaPublic->Cup of TeaCup of Tea-collaboration>CupCup of Tea-collaboration>TeaCup of Tea-collaboration>Hot WaterHot Water->WaterHot Water-facilitating>Kettle Kettle-xAsAService>Powerbuild Kettleannotation 1 [[0.43,0.49],[0.08,0.79]] Standardising power allows Kettles to evolve fasterannotation 2 [0.48, 0.85] Hot water is obvious and well knownannotations [0.60, 0.02]note +a generic note appeared [0.16, 0.36]style wardleystreamAlignedTeam stream aligned A [0.84, 0.18, 0.76, 0.95]enablingTeam team B [0.9, 0.30, 0.30, 0.40]platformTeam team C [0.18, 0.61, 0.02, 0.94]complicatedSubsystemTeam team D [0.92, 0.73, 0.45, 0.90]

output

Developing with the library

Example

First, create a component type

typedummyComponentstruct {idint64position image.Point}func (d*dummyComponent)GetPosition() image.Point {returnd.position }func (d*dummyComponent)String()string {returnstrconv.FormatInt(d.id,10) }func (d*dummyComponent)ID()int64 {returnd.id }

Then a collaboration structure (an edge)

typedummyCollaborationstruct{ simple.Edge }func (d*dummyCollaboration)GetType() wardleyToGo.EdgeType {return0 }func (d*dummyCollaboration)Draw(dst draw.Image,r image.Rectangle,src image.Image,sp image.Point) {coordsF:=utils.CalcCoords(d.F.(wardleyToGo.Component).GetPosition(),r)coordsT:=utils.CalcCoords(d.T.(wardleyToGo.Component).GetPosition(),r)drawing.Line(dst,coordsF.X,coordsF.Y,coordsT.X,coordsT.Y, color.Gray{Y:128}, [2]int{})}

And finally create the map

m:=wardleyToGo.NewMap(0)c0:=&dummyComponent{id:0,position:image.Pt(25,25)}c1:=&dummyComponent{id:1,position:image.Pt(50,50)}c2:=&dummyComponent{id:2,position:image.Pt(50,75)}c3:=&dummyComponent{id:3,position:image.Pt(75,75)}m.AddComponent(c0)m.AddComponent(c1)m.AddComponent(c2)m.AddComponent(c3)// c0 -> c1// c1 -> c2// c2 -> c3// c1 -> c3m.SetCollaboration(newCollaboration(c0,c1))m.SetCollaboration(newCollaboration(c1,c2))m.SetCollaboration(newCollaboration(c2,c3))m.SetCollaboration(newCollaboration(c1,c3))

Generating image, png and so on.. (WIP)

the map fulfills thedrawer.Drawer interface. If the components fulfills the interface as well, they are displayend on an image.

funcmain() {p:=owm.NewParser(os.Stdin)m,err:=p.Parse()// the mapiferr!=nil {log.Fatal(err)}im:=image.NewRGBA(image.Rect(0,0,1400,1100))canvas:=image.Rect(100,100,1300,1000)createBackground(im,canvas)m.Draw(im,canvas,im, image.Point{})png.Encode(os.Stdout,im)}

see theexamples/pngoutput directory

png output

About

Create your WardleyMaps as code/data and render it as SVG (onlinewardleymap and wtg language supported)

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp