Skip to content

Instantly share code, notes, and snippets.

@kenwebb
Last active July 18, 2019 19:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kenwebb/5bd738c3b32db7911fc9d1e83286f5ad to your computer and use it in GitHub Desktop.
Save kenwebb/5bd738c3b32db7911fc9d1e83286f5ad to your computer and use it in GitHub Desktop.
Bigraphs 2019 03 - Topology-Aware Access Control Model for Cyber-Physical Space
<?xml version="1.0" encoding="UTF-8"?>
<!--Xholon Workbook http://www.primordion.com/Xholon/gwt/ MIT License, Copyright (C) Ken Webb, Thu Jul 18 2019 15:51:51 GMT-0400 (Eastern Daylight Time)-->
<XholonWorkbook>
<Notes><![CDATA[
Xholon
------
Title: Bigraphs 2019 03 - Topology-Aware Access Control Model for Cyber-Physical Space
Description:
Url: http://www.primordion.com/Xholon/gwt/
InternalName: 5bd738c3b32db7911fc9d1e83286f5ad
Keywords:
My Notes
--------
July 10, 2019
http://127.0.0.1:8888/Xholon.html?app=Bigraphs+2019+03+-+Topology-Aware+Access+Control+Model+for+Cyber-Physical+Space&src=lstr&gui=clsc&jslib=BigraphParser
the three types of Object
=========================
type shape instances
-------------- -------- ---------------------
Cyberobject triangle the three File objcts
Physicalobject hexagon Safe, Box
Hybridobject ellipse Server, Cloudlet
also:
Role circle
Location rectangle
User roundedrectangle
ports, links, edges
-------------------
- Bigraph edges are hyperedges, and are not inherently directional
- but this physical model has doors which are inherently bi-directional
- "The topology configuration model only describes the static characteristics of the operational environment." [1, page 502]
- the security (TA-CPAC) model specifies permissions and constraints on the possibilities inherent in the topology configuration model
- so my basic Bigraph and Xholon model has doors that are implemented by ports in pairs of Lloc objects (rooms)
- "topology constraints"
- so there are three levels:
(1) bigraph ports, and non-directional hyperedges between ports
(2) the bank branch model depicted in Fig. 1 [1]
(3) security permissions and constraints as defined in [1]
To repeat this Xholon export:
----------------------------
$wnd.xh.xport("Graphviz", $wnd.xh.root().parent().xpath("Chameleon/TheSystem/Bigraph"), '{"gvFileExt":".gv","gvGraph":"digraph","layout":"dot","edgeOp":"->","gvCluster":"cluster","shouldShowStateMachineEntities":false,"filter":"--Behavior,Script","nameTemplateNodeId":"^^^^i^","nameTemplateNodeLabel":"R^^^^^","shouldQuoteLabels":true,"shouldShowLinks":true,"shouldShowLinkLabels":false,"shouldSpecifyLayout":false,"maxLabelLen":-1,"shouldColor":true,"defaultNodeColor":"#f0f8ff","bgGraphColor":"white","shouldSpecifyShape":true,"shape":"box","shouldSpecifySize":true,"size":"16","shouldSpecifyFontname":true,"fontname":"\"Courier New\"","shouldSpecifyArrowhead":false,"arrowhead":"vee","shouldSpecifyStylesheet":true,"stylesheet":"Xholon.css","shouldSpecifyRankdir":false,"rankdir":"LR","shouldDisplayGraph":true,"outputFormat":"svg"}');
References
----------
(1) https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8698208
Specification and Verification of a Topology-Aware Access ControlModel for Cyber-Physical Space
Yan Cao, Zhiqiu Huang, Shuanglong Kan, Dajuan Fan, and Yang Yang
2019
]]></Notes>
<_-.XholonClass>
<TheSystem/>
<BigraphParser superClass="script"/>
</_-.XholonClass>
<xholonClassDetails>
<BigraphParser><DefaultContent>@BigraphParser</DefaultContent></BigraphParser>
<Avatar><Color>rgba(255,0,0,1.0)</Color></Avatar>
</xholonClassDetails>
<TheSystem>
<Bigraph roleName="0" savedata="true"><Attribute_String><![CDATA[
B=(VB,EB,PB,ctrlB,prntB,linkB):〈m,X〉→〈n,Y〉,
m=0,X=∅,n=1,Y={q},
Σ=({User,Role,Lloc,Object,Hybridobject,Physicalobject,Cyberobject},{(User,1),(Role,1),(Lloc,6),(Object,0),(Hybridobject,1),(Physicalobject,1),(Cyberobject,0)}),
# User
VB={Alice, Bob, Tom, Jone, Clark},
# Role (note that "Role" is already a Xholon class name but should be OK to use here)
VB={president, lobbymanager, accountant, teller, clientmanager},
# Cyberobject
VB={file1, file2, file3},
# Physicalobject
VB={box, safe},
# Hybridobject
VB={server, cloudlet},
# other Object
VB={Alicephone, Bobphone, Tomphone, Jonephone, Clarkphone},
# Lloc
VB={saferoom, accountantoffice, serverroom, presidentoffice, clientmanageroffice, telleroffice, mainarea, corridor},
# Loco
VB=∅,
# edges
EB=∅,
# ports
PB={p(mainarea,1),p(corridor,1),p(corridor,2),p(corridor,3),p(corridor,4),p(corridor,5),p(presidentoffice,1)},
ctrlB={(Alice,User),(Bob,User),(Tom,User),(Jone,User),(Clark,User)},
ctrlB={(president,Role),(lobbymanager,Role),(accountant,Role),(teller,Role),(clientmanager,Role)},
ctrlB={(server,Hybridobject),(cloudlet,Hybridobject),(box,Physicalobject),(safe,Physicalobject),(file1,Cyberobject),(file2,Cyberobject),(file3,Cyberobject),(Alicephone,Object),(Bobphone,Object),(Tomphone,Object),(Jonephone,Object),(Clarkphone,Object)},
ctrlB={(saferoom,Lloc),(accountantoffice,Lloc),(serverroom,Lloc),(presidentoffice,Lloc),(clientmanageroffice,Lloc),(telleroffice,Lloc),(mainarea,Lloc),(corridor,Lloc)},
# UserLocation
prntB={(Alice,presidentoffice),(Bob,mainarea),(Clark,accountantoffice),(Tom,telleroffice),(Jone,corridor)},
# RoleLocation
prntB={(president,presidentoffice),(lobbymanager,mainarea),(accountant,accountantoffice),(teller,telleroffice),(clientmanager,corridor)},
# ObjectLocation
prntB={(server,serverroom),(cloudlet,serverroom),(box,telleroffice),(safe,saferoom),(file1,server),(file2,server),(file3,cloudlet),(Alicephone,presidentoffice),(Bobphone,mainarea),(Clarkphone,accountantoffice),(Tomphone,telleroffice),(Jonephone,corridor)},
# links (port bindings) these are doors between rooms; doors are inherently two-directional
linkB={(p(mainarea,1),corridor),(p(corridor,1),serverroom),(p(corridor,2),telleroffice),(p(corridor,3),presidentoffice),(p(corridor,4),clientmanageroffice),(p(corridor,5),accountantoffice),(p(presidentoffice,1),saferoom)},
# links (reverse port bindings)
linkB={(p(corridor,6),mainarea),(p(serverroom,1),corridor),(p(telleroffice,1),corridor),(p(presidentoffice,2),corridor),(p(clientmanageroffice,1),corridor),(p(accountantoffice,1),corridor),(p(saferoom,1),presidentoffice)},
# Xholon IDecoration: _Color, Symbol
_Color=({red,orange,yellow,green,blue,purple,indigo},{(User,red),(Role,orange),(Lloc,yellow),(Object,green),(Hybridobject,blue),(Physicalobject,purple),(Cyberobject,indigo)}),
_Symbol=({circle,triangle,hexagon,ellipse,rectangle,roundedrectangle},{(User,roundedrectangle),(Role,circle),(Lloc,rectangle),(Hybridobject,ellipse),(Physicalobject,hexagon),(Cyberobject,triangle)}),
_Font=({Arial-BOLD-14},{(User,Arial-BOLD-14)}),
_Anno=({This is an annotation.},{(User,This is an annotation.)})
]]></Attribute_String>
<BigraphParser/>
</Bigraph>
<Bigraph roleName="1"><Attribute_String><![CDATA[
prntB={(corridor,mainarea),(accountantoffice,corridor),(serverroom,corridor),(presidentoffice,corridor),(clientmanageroffice,corridor),(telleroffice,corridor),(saferoom,presidentoffice)},
prntB={(Alice,presidentoffice),(Bob,mainarea),(Clark,accountantoffice),(Tom,telleroffice),(Jone,corridor)},
prntB={(president,Alice),(lobbymanager,Bob),(accountant,Clark),(teller,Tom),(clientmanager,Jone)},
prntB={(server,serverroom),(cloudlet,serverroom),(box,telleroffice),(safe,saferoom),(file1,server),(file2,server),(file3,cloudlet)}
]]></Attribute_String>
<script><![CDATA[
$wnd.console.log("Starting Bigraph1 script ...");
var bigraph1 = this.parent();
this.remove();
var bigraph0 = bigraph1.prev();
bigraph1.println(bigraph0.name());
bigraph1.println(bigraph1.name());
var starr = bigraph0.subtreeAsArray();
bigraph1.println(starr.length);
var xmlstr = '<_-.st>';
xmlstr += '<Chameleon multiplicity = "' + starr.length + '"/>';
xmlstr += '</_-.st>';
bigraph1.append(xmlstr);
bigraph1["nodeDict"] = {};
var node = bigraph1.first();
for (var ix = 0; ix < starr.length; ix++) {
node["arrow"] = starr[ix];
node.xhc(starr[ix].xhc().name());
node.role(starr[ix].role());
bigraph1["nodeDict"][node.role()] = node;
node = node.next();
}
$wnd.console.log(bigraph1["nodeDict"]);
bigraph1.append("<BigraphParser/>");
//# sourceURL=Bigraph1Initializer.js
]]></script>
<!--<BigraphParser/>NO instead, the script creates BigraphParser dynamically, to ensure the correct sequence of initializations -->
</Bigraph>
<Bigraph roleName="2"><Attribute_String><![CDATA[
prntB={(corridor,mainarea),(accountantoffice,corridor),(serverroom,corridor),(presidentoffice,corridor),(clientmanageroffice,corridor),(telleroffice,corridor),(saferoom,presidentoffice)},
prntB={(president,presidentoffice),(lobbymanager,mainarea),(accountant,accountantoffice),(teller,telleroffice),(clientmanager,corridor)},
prntB={(server,serverroom),(cloudlet,serverroom),(box,telleroffice),(safe,saferoom),(file1,server),(file2,server),(file3,cloudlet)}
]]></Attribute_String>
<script><![CDATA[
$wnd.console.log("Starting Bigraph2 script ...");
var bigraph2 = this.parent();
this.remove();
var bigraph0 = bigraph2.prev().prev();
bigraph2.println(bigraph0.name());
bigraph2.println(bigraph2.name());
var starr = bigraph0.subtreeAsArray();
bigraph2.println(starr.length);
var xmlstr = '<_-.st>';
xmlstr += '<Chameleon multiplicity = "' + starr.length + '"/>';
xmlstr += '</_-.st>';
bigraph2.append(xmlstr);
bigraph2["nodeDict"] = {};
var node = bigraph2.first();
for (var ix = 0; ix < starr.length; ix++) {
node["arrow"] = starr[ix];
node.xhc(starr[ix].xhc().name());
node.role(starr[ix].role());
bigraph2["nodeDict"][node.role()] = node;
node = node.next();
}
$wnd.console.log(bigraph2["nodeDict"]);
bigraph2.append("<BigraphParser/>");
//# sourceURL=Bigraph2Initializer.js
]]></script>
<!--<BigraphParser/>NO instead, the script creates BigraphParser dynamically, to ensure the correct sequence of initializations -->
</Bigraph>
<Animate duration="1" selection="#xhanim" xpath="./TheSystem" cssStyle=".d3cpnode circle {stroke-width: 0.5px;}" efParams="{&quot;selection&quot;:&quot;#xhanim&quot;,&quot;sort&quot;:&quot;disable&quot;,&quot;width&quot;:700,&quot;height&quot;:700,&quot;mode&quot;:&quot;tween&quot;,&quot;labelContainers&quot;:true,&quot;includeClass&quot;:true,&quot;includeId&quot;:true,&quot;shape&quot;:&quot;circle&quot;}"/>
</TheSystem>
<SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml,
<svg width="1152pt" height="88pt"
viewBox="0.00 0.00 1152.00 87.57" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="Bigraph" class="graph" transform="scale(0.531365 0.531365) rotate(0) translate(4 160.8)">
<title>46</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-160.8 2164,-160.8 2164,4 -4,4"/>
<text text-anchor="middle" x="1080" y="-8.2" font-family="Courier New" font-size="14.00">0</text>
<g id="Bigraph/Lloc[@roleName=&#39;saferoom&#39;]" class="cluster"><title>cluster96</title>
<polygon fill="white" stroke="black" points="8,-40.8 8,-116.8 91,-116.8 91,-40.8 8,-40.8"/>
<text text-anchor="middle" x="49.5" y="-100.2" font-family="Courier New" font-size="14.00">saferoom</text>
</g>
<g id="Bigraph/Lloc[@roleName=&#39;accountantoffice&#39;]" class="cluster"><title>cluster98</title>
<polygon fill="white" stroke="black" points="99,-40.8 99,-116.8 409,-116.8 409,-40.8 99,-40.8"/>
<text text-anchor="middle" x="254" y="-100.2" font-family="Courier New" font-size="14.00">accountantoffice</text>
</g>
<g id="Bigraph/Lloc[@roleName=&#39;serverroom&#39;]" class="cluster"><title>cluster100</title>
<polygon fill="white" stroke="black" points="417,-32.8 417,-148.8 674,-148.8 674,-32.8 417,-32.8"/>
<text text-anchor="middle" x="545.5" y="-132.2" font-family="Courier New" font-size="14.00">serverroom</text>
</g>
<g id="Bigraph/Lloc[@roleName=&#39;serverroom&#39;]/Hybridobject[@roleName=&#39;server&#39;]" class="cluster"><title>cluster72</title>
<polygon fill="white" stroke="black" points="516,-40.8 516,-116.8 666,-116.8 666,-40.8 516,-40.8"/>
<text text-anchor="middle" x="591" y="-100.2" font-family="Courier New" font-size="14.00">server</text>
</g>
<g id="Bigraph/Lloc[@roleName=&#39;serverroom&#39;]/Hybridobject[@roleName=&#39;cloudlet&#39;]" class="cluster"><title>cluster74</title>
<polygon fill="white" stroke="black" points="425,-40.8 425,-116.8 508,-116.8 508,-40.8 425,-40.8"/>
<text text-anchor="middle" x="466.5" y="-100.2" font-family="Courier New" font-size="14.00">cloudlet</text>
</g>
<g id="Bigraph/Lloc[@roleName=&#39;presidentoffice&#39;]" class="cluster"><title>cluster102</title>
<polygon fill="white" stroke="black" points="682,-40.8 682,-116.8 984,-116.8 984,-40.8 682,-40.8"/>
<text text-anchor="middle" x="833" y="-100.2" font-family="Courier New" font-size="14.00">presidentoffice</text>
</g>
<g id="Bigraph/Lloc[@roleName=&#39;telleroffice&#39;]" class="cluster"><title>cluster106</title>
<polygon fill="white" stroke="black" points="1179,-40.8 1179,-116.8 1507,-116.8 1507,-40.8 1179,-40.8"/>
<text text-anchor="middle" x="1343" y="-100.2" font-family="Courier New" font-size="14.00">telleroffice</text>
</g>
<g id="Bigraph/Lloc[@roleName=&#39;mainarea&#39;]" class="cluster"><title>cluster108</title>
<polygon fill="white" stroke="black" points="1515,-40.8 1515,-116.8 1821,-116.8 1821,-40.8 1515,-40.8"/>
<text text-anchor="middle" x="1668" y="-100.2" font-family="Courier New" font-size="14.00">mainarea</text>
</g>
<g id="Bigraph/Lloc[@roleName=&#39;corridor&#39;]" class="cluster"><title>cluster110</title>
<polygon fill="white" stroke="black" points="1829,-40.8 1829,-116.8 2152,-116.8 2152,-40.8 1829,-40.8"/>
<text text-anchor="middle" x="1990.5" y="-100.2" font-family="Courier New" font-size="14.00">corridor</text>
</g>
<!-- 78 -->
<g id="Bigraph/Lloc[@roleName=&#39;saferoom&#39;]/Physicalobject" class="node"><title>78</title>
<polygon fill="purple" stroke="black" points="76,-84.8 22,-84.8 22,-48.8 76,-48.8 76,-84.8"/>
<text text-anchor="middle" x="49" y="-62.6" font-family="Courier New" font-size="14.00">safe</text>
</g>
<!-- 60 -->
<g id="Bigraph/Lloc[@roleName=&#39;accountantoffice&#39;]/User" class="node"><title>60</title>
<polygon fill="red" stroke="black" points="400.495,-84.8 343.505,-84.8 343.505,-48.8 400.495,-48.8 400.495,-84.8"/>
<text text-anchor="middle" x="372" y="-62.6" font-family="Courier New" font-size="14.00">Clark</text>
</g>
<!-- 66 -->
<g id="Bigraph/Lloc[@roleName=&#39;accountantoffice&#39;]/Role" class="node"><title>66</title>
<polygon fill="orange" stroke="black" points="324.49,-84.8 225.51,-84.8 225.51,-48.8 324.49,-48.8 324.49,-84.8"/>
<text text-anchor="middle" x="275" y="-62.6" font-family="Courier New" font-size="14.00">accountant</text>
</g>
<!-- 94 -->
<g id="Bigraph/Lloc[@roleName=&#39;accountantoffice&#39;]/Object" class="node"><title>94</title>
<polygon fill="green" stroke="black" points="206.49,-84.8 107.51,-84.8 107.51,-48.8 206.49,-48.8 206.49,-84.8"/>
<text text-anchor="middle" x="157" y="-62.6" font-family="Courier New" font-size="14.00">Clarkphone</text>
</g>
<!-- 80 -->
<g id="Bigraph/Lloc[@roleName=&#39;serverroom&#39;]/Hybridobject[@roleName=&#39;server&#39;]/Cyberobject[@roleName=&#39;file1&#39;]" class="node"><title>80</title>
<polygon fill="indigo" stroke="black" points="657.495,-84.8 600.505,-84.8 600.505,-48.8 657.495,-48.8 657.495,-84.8"/>
<text text-anchor="middle" x="629" y="-62.6" font-family="Courier New" font-size="14.00">file1</text>
</g>
<!-- 82 -->
<g id="Bigraph/Lloc[@roleName=&#39;serverroom&#39;]/Hybridobject[@roleName=&#39;server&#39;]/Cyberobject[@roleName=&#39;file2&#39;]" class="node"><title>82</title>
<polygon fill="indigo" stroke="black" points="581.495,-84.8 524.505,-84.8 524.505,-48.8 581.495,-48.8 581.495,-84.8"/>
<text text-anchor="middle" x="553" y="-62.6" font-family="Courier New" font-size="14.00">file2</text>
</g>
<!-- 84 -->
<g id="Bigraph/Lloc[@roleName=&#39;serverroom&#39;]/Hybridobject[@roleName=&#39;cloudlet&#39;]/Cyberobject" class="node"><title>84</title>
<polygon fill="indigo" stroke="black" points="494.495,-84.8 437.505,-84.8 437.505,-48.8 494.495,-48.8 494.495,-84.8"/>
<text text-anchor="middle" x="466" y="-62.6" font-family="Courier New" font-size="14.00">file3</text>
</g>
<!-- 52 -->
<g id="Bigraph/Lloc[@roleName=&#39;presidentoffice&#39;]/User" class="node"><title>52</title>
<polygon fill="red" stroke="black" points="975.495,-84.8 918.505,-84.8 918.505,-48.8 975.495,-48.8 975.495,-84.8"/>
<text text-anchor="middle" x="947" y="-62.6" font-family="Courier New" font-size="14.00">Alice</text>
</g>
<!-- 62 -->
<g id="Bigraph/Lloc[@roleName=&#39;presidentoffice&#39;]/Role" class="node"><title>62</title>
<polygon fill="orange" stroke="black" points="899.193,-84.8 808.807,-84.8 808.807,-48.8 899.193,-48.8 899.193,-84.8"/>
<text text-anchor="middle" x="854" y="-62.6" font-family="Courier New" font-size="14.00">president</text>
</g>
<!-- 86 -->
<g id="Bigraph/Lloc[@roleName=&#39;presidentoffice&#39;]/Object" class="node"><title>86</title>
<polygon fill="green" stroke="black" points="789.49,-84.8 690.51,-84.8 690.51,-48.8 789.49,-48.8 789.49,-84.8"/>
<text text-anchor="middle" x="740" y="-62.6" font-family="Courier New" font-size="14.00">Alicephone</text>
</g>
<!-- 104 -->
<g id="Bigraph/Lloc[@roleName=&#39;clientmanageroffice&#39;]" class="node"><title>104</title>
<polygon fill="yellow" stroke="black" points="1169.18,-84.8 994.818,-84.8 994.818,-48.8 1169.18,-48.8 1169.18,-84.8"/>
<text text-anchor="middle" x="1082" y="-62.6" font-family="Courier New" font-size="14.00">clientmanageroffice</text>
</g>
<!-- 56 -->
<g id="Bigraph/Lloc[@roleName=&#39;telleroffice&#39;]/User" class="node"><title>56</title>
<polygon fill="red" stroke="black" points="1499,-84.8 1445,-84.8 1445,-48.8 1499,-48.8 1499,-84.8"/>
<text text-anchor="middle" x="1472" y="-62.6" font-family="Courier New" font-size="14.00">Tom</text>
</g>
<!-- 68 -->
<g id="Bigraph/Lloc[@roleName=&#39;telleroffice&#39;]/Role" class="node"><title>68</title>
<polygon fill="orange" stroke="black" points="1427.29,-84.8 1360.71,-84.8 1360.71,-48.8 1427.29,-48.8 1427.29,-84.8"/>
<text text-anchor="middle" x="1394" y="-62.6" font-family="Courier New" font-size="14.00">teller</text>
</g>
<!-- 76 -->
<g id="Bigraph/Lloc[@roleName=&#39;telleroffice&#39;]/Physicalobject" class="node"><title>76</title>
<polygon fill="purple" stroke="black" points="1343,-84.8 1289,-84.8 1289,-48.8 1343,-48.8 1343,-84.8"/>
<text text-anchor="middle" x="1316" y="-62.6" font-family="Courier New" font-size="14.00">box</text>
</g>
<!-- 90 -->
<g id="Bigraph/Lloc[@roleName=&#39;telleroffice&#39;]/Object" class="node"><title>90</title>
<polygon fill="green" stroke="black" points="1270.39,-84.8 1187.61,-84.8 1187.61,-48.8 1270.39,-48.8 1270.39,-84.8"/>
<text text-anchor="middle" x="1229" y="-62.6" font-family="Courier New" font-size="14.00">Tomphone</text>
</g>
<!-- 54 -->
<g id="Bigraph/Lloc[@roleName=&#39;mainarea&#39;]/User" class="node"><title>54</title>
<polygon fill="red" stroke="black" points="1813,-84.8 1759,-84.8 1759,-48.8 1813,-48.8 1813,-84.8"/>
<text text-anchor="middle" x="1786" y="-62.6" font-family="Courier New" font-size="14.00">Bob</text>
</g>
<!-- 64 -->
<g id="Bigraph/Lloc[@roleName=&#39;mainarea&#39;]/Role" class="node"><title>64</title>
<polygon fill="orange" stroke="black" points="1741.09,-84.8 1624.91,-84.8 1624.91,-48.8 1741.09,-48.8 1741.09,-84.8"/>
<text text-anchor="middle" x="1683" y="-62.6" font-family="Courier New" font-size="14.00">lobbymanager</text>
</g>
<!-- 88 -->
<g id="Bigraph/Lloc[@roleName=&#39;mainarea&#39;]/Object" class="node"><title>88</title>
<polygon fill="green" stroke="black" points="1606.39,-84.8 1523.61,-84.8 1523.61,-48.8 1606.39,-48.8 1606.39,-84.8"/>
<text text-anchor="middle" x="1565" y="-62.6" font-family="Courier New" font-size="14.00">Bobphone</text>
</g>
<!-- 58 -->
<g id="Bigraph/Lloc[@roleName=&#39;corridor&#39;]/User" class="node"><title>58</title>
<polygon fill="red" stroke="black" points="2144,-84.8 2090,-84.8 2090,-48.8 2144,-48.8 2144,-84.8"/>
<text text-anchor="middle" x="2117" y="-62.6" font-family="Courier New" font-size="14.00">Jone</text>
</g>
<!-- 70 -->
<g id="Bigraph/Lloc[@roleName=&#39;corridor&#39;]/Role" class="node"><title>70</title>
<polygon fill="orange" stroke="black" points="2071.39,-84.8 1946.61,-84.8 1946.61,-48.8 2071.39,-48.8 2071.39,-84.8"/>
<text text-anchor="middle" x="2009" y="-62.6" font-family="Courier New" font-size="14.00">clientmanager</text>
</g>
<!-- 92 -->
<g id="Bigraph/Lloc[@roleName=&#39;corridor&#39;]/Object" class="node"><title>92</title>
<polygon fill="green" stroke="black" points="1928.19,-84.8 1837.81,-84.8 1837.81,-48.8 1928.19,-48.8 1928.19,-84.8"/>
<text text-anchor="middle" x="1883" y="-62.6" font-family="Courier New" font-size="14.00">Jonephone</text>
</g>
</g>
</svg>
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient>
</XholonWorkbook>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment