Planning and designing the session API
This commit is contained in:
parent
fac29f44f6
commit
cbf71e46da
3 changed files with 735 additions and 7 deletions
704
doc/devel/draw/Session.Facade-1.svg
Normal file
704
doc/devel/draw/Session.Facade-1.svg
Normal file
|
|
@ -0,0 +1,704 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="800"
|
||||
height="600"
|
||||
id="svg2"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:docbase="/home/hiv/devel/lumi/doc/devel/draw"
|
||||
sodipodi:docname="Session.Facade-1.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
version="1.0"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/ScopeStructure1.png"
|
||||
inkscape:export-xdpi="72.970001"
|
||||
inkscape:export-ydpi="72.970001">
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4142136"
|
||||
inkscape:cx="221.88942"
|
||||
inkscape:cy="440.99547"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="svg2"
|
||||
inkscape:window-width="1668"
|
||||
inkscape:window-height="1016"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
width="800px"
|
||||
height="600px"
|
||||
showgrid="false"
|
||||
gridanglex="30px"
|
||||
gridanglez="30px"
|
||||
grid_units="px"
|
||||
inkscape:grid-points="true"
|
||||
inkscape:grid-bbox="false"
|
||||
showguides="true"
|
||||
inkscape:object-paths="false"
|
||||
inkscape:object-nodes="true"
|
||||
gridtolerance="10000"
|
||||
inkscape:guide-points="true"
|
||||
guidetolerance="5">
|
||||
<inkscape:grid
|
||||
empspacing="5"
|
||||
empopacity="0.4"
|
||||
opacity="0.09019608"
|
||||
empcolor="#0000ff"
|
||||
color="#4b4bf4"
|
||||
spacingy="2px"
|
||||
spacingx="2px"
|
||||
originy="0px"
|
||||
originx="0px"
|
||||
type="xygrid"
|
||||
id="GridFromPre046Settings"
|
||||
visible="true"
|
||||
enabled="true" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="globals">
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="Arrow1Mend"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Mend">
|
||||
<path
|
||||
transform="scale(0.4) rotate(180) translate(10,0)"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path3482" />
|
||||
</marker>
|
||||
<inkscape:perspective
|
||||
id="perspective2619"
|
||||
inkscape:persp3d-origin="400 : 200 : 1"
|
||||
inkscape:vp_z="800 : 300 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 300 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
height="1.1096916"
|
||||
x="-0.19868796"
|
||||
y="-0.054845817"
|
||||
width="1.3973759"
|
||||
id="filter4688">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
id="feGaussianBlur4690"
|
||||
stdDeviation="3.3181169" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
id="linearGrad_In1">
|
||||
<stop
|
||||
id="stop8557"
|
||||
style="stop-color:#3e3e3e;stop-opacity:0.72941178;"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop9540"
|
||||
style="stop-color:#7e7e7e;stop-opacity:0.58854169;"
|
||||
offset="0.18208332" />
|
||||
<stop
|
||||
id="stop8563"
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="0.44109029" />
|
||||
<stop
|
||||
id="stop8553"
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<marker
|
||||
refX="0"
|
||||
inkscape:stockid="Arrow2Send"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
id="Arrow2Send"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
transform="matrix(-0.3,0,0,-0.3,0.69,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
id="path5285"
|
||||
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
|
||||
</marker>
|
||||
<linearGradient
|
||||
id="linearGradient3548">
|
||||
<stop
|
||||
id="stop3550"
|
||||
style="stop-color:#ececec;stop-opacity:0.86666667;"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop3556"
|
||||
style="stop-color:#f2f2f2;stop-opacity:0.87058824;"
|
||||
offset="0.64166665" />
|
||||
<stop
|
||||
id="stop3552"
|
||||
style="stop-color:#ffffff;stop-opacity:0.96078432;"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4901">
|
||||
<stop
|
||||
id="stop4903"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0.44999999"
|
||||
id="stop4913" />
|
||||
<stop
|
||||
id="stop4905"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="871.85999"
|
||||
x2="500.39999"
|
||||
y1="871.85999"
|
||||
x1="324.60001"
|
||||
gradientTransform="matrix(1.3221205,0,0,0.9882635,29.856748,-400.71027)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient5166"
|
||||
xlink:href="#linearGradient4901"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
id="linearGrad_RoundHigh1">
|
||||
<stop
|
||||
id="stop5572"
|
||||
style="stop-color:#d9eadb;stop-opacity:1;"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop5578"
|
||||
style="stop-color:#bad8cd;stop-opacity:1;"
|
||||
offset="0.75833333" />
|
||||
<stop
|
||||
id="stop5574"
|
||||
style="stop-color:#8cc0ac;stop-opacity:0.78431374;"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
height="1.250896"
|
||||
x="-0.094086036"
|
||||
y="-0.125448"
|
||||
width="1.1881721"
|
||||
id="filter4817">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
id="feGaussianBlur4819"
|
||||
stdDeviation="0.78404989" />
|
||||
</filter>
|
||||
<marker
|
||||
refX="0"
|
||||
inkscape:stockid="ArrowHIV1end"
|
||||
refY="0"
|
||||
id="ArrowHIV1end"
|
||||
orient="auto"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="pathPfeil1"
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
d="M -8,0 L -10,1.2 L -2,1.2 L 5,0 L -2,-1.2 L -10,-1.2 L -8,0 z "
|
||||
style="fill:#40c0ab;stroke:#01ffff;stroke-width:0.1;stroke-linecap:butt;stroke-miterlimit:6.5" />
|
||||
</marker>
|
||||
<radialGradient
|
||||
r="10.15"
|
||||
fy="227.36218"
|
||||
fx="200"
|
||||
cy="227.36218"
|
||||
cx="200"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient5444"
|
||||
xlink:href="#linearGrad_RoundHigh1"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="10.15"
|
||||
fy="227.36218"
|
||||
fx="200"
|
||||
cy="227.36218"
|
||||
cx="200"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient5492"
|
||||
xlink:href="#linearGrad_RoundHigh1"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="10.15"
|
||||
fy="227.36218"
|
||||
fx="200"
|
||||
cy="227.36218"
|
||||
cx="200"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient5516"
|
||||
xlink:href="#linearGrad_RoundHigh1"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="10.15"
|
||||
fy="227.36218"
|
||||
fx="200"
|
||||
cy="227.36218"
|
||||
cx="200"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient5564"
|
||||
xlink:href="#linearGrad_RoundHigh1"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="10.15"
|
||||
fy="227.36218"
|
||||
fx="200"
|
||||
cy="227.36218"
|
||||
cx="200"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient5636"
|
||||
xlink:href="#linearGrad_RoundHigh1"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="10.15"
|
||||
fy="227.36218"
|
||||
fx="200"
|
||||
cy="227.36218"
|
||||
cx="200"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient5660"
|
||||
xlink:href="#linearGrad_RoundHigh1"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="94.861481"
|
||||
x2="605.48975"
|
||||
y1="94.861481"
|
||||
x1="574.5"
|
||||
gradientTransform="matrix(1,0,0,0.7952199,-681.9777,684.57714)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient6148"
|
||||
xlink:href="#linearGradient3548"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="94.861481"
|
||||
x2="605.48975"
|
||||
y1="94.861481"
|
||||
x1="574.5"
|
||||
gradientTransform="matrix(1,0,0,0.7952199,-681.9777,684.57714)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient6150"
|
||||
xlink:href="#linearGrad_In1"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="94.861481"
|
||||
x2="605.48975"
|
||||
y1="94.861481"
|
||||
x1="574.5"
|
||||
gradientTransform="matrix(1,0,0,0.7952199,-681.9777,684.57714)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient6208"
|
||||
xlink:href="#linearGradient3548"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="94.861481"
|
||||
x2="605.48975"
|
||||
y1="94.861481"
|
||||
x1="574.5"
|
||||
gradientTransform="matrix(1,0,0,0.7952199,-681.9777,684.57714)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient6210"
|
||||
xlink:href="#linearGrad_In1"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="94.861481"
|
||||
x2="605.48975"
|
||||
y1="94.861481"
|
||||
x1="574.5"
|
||||
gradientTransform="matrix(1,0,0,0.7952199,-681.9777,684.57714)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient6264"
|
||||
xlink:href="#linearGradient3548"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="94.861481"
|
||||
x2="605.48975"
|
||||
y1="94.861481"
|
||||
x1="574.5"
|
||||
gradientTransform="matrix(1,0,0,0.7952199,-681.9777,684.57714)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient6266"
|
||||
xlink:href="#linearGrad_In1"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="94.861481"
|
||||
x2="605.48975"
|
||||
y1="94.861481"
|
||||
x1="574.5"
|
||||
gradientTransform="matrix(1,0,0,0.7952199,-681.9777,684.57714)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient6268"
|
||||
xlink:href="#linearGradient3548"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="94.861481"
|
||||
x2="605.48975"
|
||||
y1="94.861481"
|
||||
x1="574.5"
|
||||
gradientTransform="matrix(1,0,0,0.7952199,-681.9777,684.57714)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient6270"
|
||||
xlink:href="#linearGrad_In1"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="94.861481"
|
||||
x2="605.48975"
|
||||
y1="94.861481"
|
||||
x1="574.5"
|
||||
gradientTransform="matrix(1,0,0,0.7952199,-681.9777,684.57714)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient6298"
|
||||
xlink:href="#linearGradient3548"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="94.861481"
|
||||
x2="605.48975"
|
||||
y1="94.861481"
|
||||
x1="574.5"
|
||||
gradientTransform="matrix(1,0,0,0.7952199,-681.9777,684.57714)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient6300"
|
||||
xlink:href="#linearGrad_In1"
|
||||
inkscape:collect="always" />
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="Arrow1MendY"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1MendY">
|
||||
<path
|
||||
transform="scale(0.4) rotate(180) translate(10,0)"
|
||||
style="marker-start:none;stroke:#26155c;stroke-width:1.0pt;fill:#26155c;fill-rule:evenodd"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path4310" />
|
||||
</marker>
|
||||
</defs>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" />
|
||||
<dc:title>Structure of Placement Scopes</dc:title>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Ichthyostega</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:description>design sketch: Relation of the nested Placement Scopes within the Lumiera session</dc:description>
|
||||
<dc:date>2009</dc:date>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" />
|
||||
<cc:prohibits
|
||||
rdf:resource="http://creativecommons.org/ns#CommercialUse" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="lay1"
|
||||
inkscape:label="Drawing" />
|
||||
<rect
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png"
|
||||
y="70"
|
||||
x="40"
|
||||
height="460"
|
||||
width="740"
|
||||
id="rect_Canvas"
|
||||
style="opacity:1;color:#000000;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<text
|
||||
inkscape:export-ydpi="89.75"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
xml:space="preserve"
|
||||
style="font-size:14px;font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans"
|
||||
x="29.917969"
|
||||
y="41.449715"
|
||||
id="text3868"
|
||||
sodipodi:linespacing="100%"><tspan
|
||||
id="tspan2641"
|
||||
y="41.449715"
|
||||
x="29.917969"
|
||||
sodipodi:role="line">Session</tspan></text>
|
||||
<path
|
||||
sodipodi:nodetypes="ccc"
|
||||
id="rect3872"
|
||||
d="M 20,128.68986 L 20,20.27864 L 248.88373,20"
|
||||
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#6c6c6c;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-ydpi="89.75" />
|
||||
<text
|
||||
inkscape:export-ydpi="89.75"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
sodipodi:linespacing="100%"
|
||||
id="text5680"
|
||||
y="63.136086"
|
||||
x="65.713936"
|
||||
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
sodipodi:role="line"
|
||||
x="65.713936"
|
||||
y="63.136086"
|
||||
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
id="tspan5682">Timeline(s)</tspan></text>
|
||||
<use
|
||||
transform="translate(-407.1889,-251.23988)"
|
||||
height="1052.36"
|
||||
x="0"
|
||||
xlink:href="#path4523Sha"
|
||||
y="0"
|
||||
width="744.09448"
|
||||
id="use5871" />
|
||||
<use
|
||||
transform="translate(-407.1889,-251.23988)"
|
||||
height="1052.36"
|
||||
x="0"
|
||||
xlink:href="#rect4525Bod"
|
||||
y="0"
|
||||
width="744.09448"
|
||||
id="use5873" />
|
||||
<use
|
||||
transform="translate(-407.1889,-251.23988)"
|
||||
height="1052.36"
|
||||
x="0"
|
||||
xlink:href="#rect4589Top"
|
||||
y="0"
|
||||
width="744.09448"
|
||||
id="use5893" />
|
||||
<use
|
||||
transform="translate(-22.188904,83.760119)"
|
||||
height="1052.36"
|
||||
width="744.09448"
|
||||
id="use5895"
|
||||
xlink:href="#g_port"
|
||||
y="0"
|
||||
x="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="65.025459"
|
||||
y="86.084885"
|
||||
id="text2664"
|
||||
sodipodi:linespacing="100%"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-ydpi="89.75"><tspan
|
||||
id="tspan2666"
|
||||
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
y="86.084885"
|
||||
x="65.025459"
|
||||
sodipodi:role="line">Sequence(s)</tspan></text>
|
||||
<text
|
||||
inkscape:export-ydpi="89.75"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
sodipodi:linespacing="100%"
|
||||
id="text2668"
|
||||
y="109.80515"
|
||||
x="65.084053"
|
||||
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
sodipodi:role="line"
|
||||
x="65.084053"
|
||||
y="109.80515"
|
||||
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
id="tspan2670">all()</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
x="65.132881"
|
||||
y="133.13965"
|
||||
id="text2676"
|
||||
sodipodi:linespacing="100%"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-ydpi="89.75"><tspan
|
||||
id="tspan2678"
|
||||
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
y="133.13965"
|
||||
x="65.132881"
|
||||
sodipodi:role="line">default()</tspan></text>
|
||||
<text
|
||||
inkscape:export-ydpi="89.75"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
sodipodi:linespacing="100%"
|
||||
id="text2680"
|
||||
y="121.4724"
|
||||
x="114.50432"
|
||||
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
sodipodi:role="line"
|
||||
x="114.50432"
|
||||
y="121.4724"
|
||||
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
id="tspan2682">focus()</tspan></text>
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="fill:#6c6c6c;fill-opacity:1;fill-rule:evenodd;stroke:#26155c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1MendY);stroke-opacity:1"
|
||||
d="M 30,106.6655 L 58.284271,106.6655"
|
||||
id="path4757"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-ydpi="89.75" />
|
||||
<path
|
||||
id="path4759"
|
||||
d="M 30,130 L 58.284271,130"
|
||||
style="fill:#6c6c6c;fill-opacity:1;fill-rule:evenodd;stroke:#26155c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1MendY);stroke-opacity:1"
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-ydpi="89.75" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="fill:#6c6c6c;fill-opacity:1;fill-rule:evenodd;stroke:#26155c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1MendY);stroke-opacity:1"
|
||||
d="M 30,59.996439 L 58.284271,59.996439"
|
||||
id="path4761"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-ydpi="89.75" />
|
||||
<path
|
||||
id="path4763"
|
||||
d="M 30,83.33098 L 58.284271,83.33098"
|
||||
style="fill:#6c6c6c;fill-opacity:1;fill-rule:evenodd;stroke:#26155c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1MendY);stroke-opacity:1"
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-ydpi="89.75" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="fill:#6c6c6c;fill-opacity:1;fill-rule:evenodd;stroke:#26155c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1MendY);stroke-opacity:1"
|
||||
d="M 30,118.33275 L 108.48885,118.33275"
|
||||
id="path4765"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-ydpi="89.75" />
|
||||
<g
|
||||
id="g4779"
|
||||
transform="translate(-4.7266918,-5.8288174)"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-ydpi="89.75">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:14px;font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans"
|
||||
x="151.60211"
|
||||
y="57.90715"
|
||||
id="text4767"
|
||||
sodipodi:linespacing="100%"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90"><tspan
|
||||
id="tspan4769"
|
||||
style="font-size:8px;font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"
|
||||
y="57.90715"
|
||||
x="151.60211"
|
||||
sodipodi:role="line">Axis</tspan></text>
|
||||
<text
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png"
|
||||
sodipodi:linespacing="100%"
|
||||
id="text4771"
|
||||
y="67.796928"
|
||||
x="150.96149"
|
||||
style="font-size:14px;font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans"
|
||||
xml:space="preserve"><tspan
|
||||
sodipodi:role="line"
|
||||
x="150.96149"
|
||||
y="67.796928"
|
||||
style="font-size:8px;font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"
|
||||
id="tspan4773">Pipes</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:14px;font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans"
|
||||
x="150.69586"
|
||||
y="78.7668"
|
||||
id="text4775"
|
||||
sodipodi:linespacing="100%"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90"><tspan
|
||||
id="tspan4777"
|
||||
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
|
||||
y="78.7668"
|
||||
x="150.69586"
|
||||
sodipodi:role="line">all()</tspan></text>
|
||||
</g>
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="fill:#6c6c6c;fill-opacity:1;fill-rule:evenodd;stroke:#26155c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1MendY);stroke-opacity:1"
|
||||
d="M 123.69165,59.996439 L 143.49064,59.996439"
|
||||
id="path4787"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-ydpi="89.75" />
|
||||
<path
|
||||
id="path4789"
|
||||
d="M 123.69165,59.348959 L 143.49064,49.095911"
|
||||
style="fill:#6c6c6c;fill-opacity:1;fill-rule:evenodd;stroke:#26155c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1MendY);stroke-opacity:1"
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-ydpi="89.75" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="fill:#6c6c6c;fill-opacity:1;fill-rule:evenodd;stroke:#26155c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1MendY);stroke-opacity:1"
|
||||
d="M 123.69165,60.173216 L 143.49064,70.426264"
|
||||
id="path4792"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-ydpi="89.75" />
|
||||
<path
|
||||
id="path4794"
|
||||
d="M 70.658639,66.3604 L 80.558134,76.259895"
|
||||
style="fill:#6c6c6c;fill-opacity:1;fill-rule:evenodd;stroke:#26155c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1MendY);stroke-opacity:1"
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-ydpi="89.75" />
|
||||
<rect
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994000000003;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect4796"
|
||||
width="287.79245"
|
||||
height="160.51323"
|
||||
x="0"
|
||||
y="0.37344939"
|
||||
inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/SessionFacade1.png"
|
||||
inkscape:export-xdpi="89.75"
|
||||
inkscape:export-ydpi="89.75" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 30 KiB |
BIN
wiki/draw/SessionFacade1.png
Normal file
BIN
wiki/draw/SessionFacade1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.3 KiB |
|
|
@ -3571,7 +3571,7 @@ For decoupling the query invocation from the facility actually processing the qu
|
|||
See also the notes on &rarr; QueryImplProlog
|
||||
</pre>
|
||||
</div>
|
||||
<div title="QueryFocus" modifier="Ichthyostega" modified="200911201829" created="200910140244" tags="def spec img" changecount="28">
|
||||
<div title="QueryFocus" modifier="Ichthyostega" modified="201002160259" created="200910140244" tags="def spec img" changecount="30">
|
||||
<pre>When querying contents of the session or sub-containers within the session, the QueryFocus follows the current point-of-query. As such queries can be issued to explore the content of container-like objects holding other MObjects, the focus is always attached to a container, which also acts as [[scope|PlacementScope]] for the contained objects. QueryFocus is an implicit state (the current point of interrest). This sate especially remembers the path down from the root of the HighLevelModel, which was used to access the current scope. Because this path constitutes a hierarchy of scopes, it can be relevant for querying and resolving placement properties. (&rarr; SessionStructureQuery)
|
||||
|
||||
!provided operations
|
||||
|
|
@ -3588,7 +3588,7 @@ There is a tight integration with PlacementScope through the ScopeLocator, which
|
|||
!implementation notes
|
||||
we provide a static access API, meaning that there is a singleton (the ScopeLocator) behind the scenes, which holds the mentioned scope stack. The current focus stack top, i.e. the current ScopePath is managed through an ref-counting handle embedded into each QueryFocus instance. Thus, effectively QueryFocus is an frontend object for accessing this state. Moreover, embedded into ScopeLocator, there is an link to the current session. But this link is kept opaque; it works by the current session exposing an [[query service|QueryResolver]], while QueryFocus doesn't rely on knowledge about the session, allowing the focus to be unit tested.
|
||||
|
||||
The stack of scopes must not be confused with the ScopePath. Each single frame on the stack is a QueryFocus and as such contains a current ScopePath. The purpose of the stack is to make the scope handling mostly transparent; especially this stack allows to write dedicated query functions directed at a given object: they work by pushing and then navigating to the object to use as starting point for the query, i.e. the //current scope.//
|
||||
The stack of scopes must not be confused with the ScopePath. Each single frame on the stack can be seen and accessed as a QueryFocus and as such relates to a current ScopePath. The purpose of the stack is to make the scope handling mostly transparent; especially this stack allows to write dedicated query functions directed at a given object: they work by pushing and then navigating to the object to use as starting point for the query, i.e. the //current scope.//
|
||||
|
||||
!!!simplifications
|
||||
The full implementation of this scope navigation is tricky, especially when it comes to determining the relation of two positions. It should be ''postponed'' and replaced by a ''dummy'' (no-op) implementation for the first integration round.
|
||||
|
|
@ -4099,7 +4099,7 @@ For implementation, the HighLevelModel can be reduced to a compound of interconn
|
|||
MObject lifetime is managed by reference counting; all placements and client side references to an MObject share ownership. The placement instances attached to the session are maintained by the index; thus, as long as an placement exists, the corresponding object automatically stays alive. A bare PlacementRef on the other hand doesn't guarantee anything about the referred placement; when dereferencting this reference token, the index is accessed to re-establish a connection to the object, if possible. The full-fledged MObjectRef is built on top of such a reference token and additionally incorporates a smart-ptr. For the client code this means, that holding a ref ensures existence of the object, while the //placement// of this object still can get removed from the session.
|
||||
</pre>
|
||||
</div>
|
||||
<div title="SessionInterface" modifier="Ichthyostega" modified="201002010106" created="200904242108" tags="SessionLogic GuiIntegration design draft discuss" changecount="12">
|
||||
<div title="SessionInterface" modifier="Ichthyostega" modified="201002160343" created="200904242108" tags="SessionLogic GuiIntegration design draft discuss" changecount="23">
|
||||
<pre>"Session Interface", when used in a more general sense, denotes a compound of several interfaces and facilities, together forming the primary access point to the user visible contents and state of the editing project.
|
||||
* the API of the session class
|
||||
* the accompanying management interface (SessionManager API)
|
||||
|
|
@ -4114,14 +4114,38 @@ MObject lifetime is managed by reference counting; all placements and client sid
|
|||
** Automation
|
||||
* the [[command|CommandHandling]] interface, including the [[UNDO|UndoManager]] facility
|
||||
|
||||
{{red{WIP ... just emerging}}}
|
||||
|
||||
!generic and explicit API
|
||||
The HighLevelModel exposes two kinds of interfaces (which are interconnected btw): A generic, but somewhat low-level API, which is good for processing, and a more explicit API providing access to some meaningful entities within the model. Indeed, the latter (explicit top level entities) can be seen as a ''facade interface'' to the generic structures:
|
||||
The HighLevelModel exposes two kinds of interfaces (which are interconnected and rely on each other): A generic, but somewhat low-level API, which is good for processing &mdash; like e.g. for the builder or de-serialiser &mdash; and a more explicit API providing access to some meaningful entities within the model. Indeed, the latter (explicit top level entities) can be seen as a ''façade interface'' to the generic structures:
|
||||
* the [[Session]] object itself corresponds to the ModelRootMO
|
||||
* the one (or multiple) [[Timeline]] objects correspond to the BindingMO instances attached immediately below the model root
|
||||
* the [[sequences|Sequence]] bound into these timelines (by the ~BindingMOs) correspond to the top level [[Track]]-~MObjects within each of these sequences.
|
||||
Thus, there is a convenient and meaningful access path through these facade objects, which of course actually is implemented by forwarding to the actual model elements (root, bindings, tracks)
|
||||
[<img[Object relations on the session facade|draw/SessionFacade1.png]]
|
||||
|
||||
Thus, there is a convenient and meaningful access path through these façade objects, which of course actually is implemented by forwarding to the actual model elements (root, bindings, tracks)
|
||||
|
||||
Following this access path down from the session means using the ''dedicated'' API on the objects retrieved.
|
||||
To the contrary, the ''generic'' API is related to a //current location (state),// the QueryFocus.
|
||||
|
||||
|
||||
|
||||
!purpose of these APIs
|
||||
* to discover
|
||||
** by ID
|
||||
** by filter
|
||||
** all contained
|
||||
* to add
|
||||
* to destroy
|
||||
|
||||
|
||||
{{red{WIP ... just emerging}}}
|
||||
|
||||
|
||||
!!!Questions
|
||||
* what is the exact relation of discovery and mutations?
|
||||
* What is the point of locating them on the same conceptual level?
|
||||
* how to observe the requirement of ''dispatching'' mutations ([[Command]])?
|
||||
* how to integrate the two possible search depths (children and all)?
|
||||
* how is all of this related to the LayerSeparationInterfaces, here SessionFacade und EditFacade?
|
||||
</pre>
|
||||
</div>
|
||||
<div title="SessionLifecycle" modifier="Ichthyostega" modified="201001070440" created="200911070329" tags="SessionLogic spec" changecount="23">
|
||||
|
|
|
|||
Loading…
Reference in a new issue