blob: 04f0e4ea3750329b4c7ce46d26bc23d99e38c43f [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="685.2px" preserveAspectRatio="none" style="width:1194px;height:685px;" version="1.1" viewBox="0 0 1194 685" width="1194px" zoomAndPan="magnify"><defs><filter height="300%" id="f160zighuzisgk" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#DDDDDD" height="659.2594" style="stroke: #A80036; stroke-width: 1.2;" width="530.4" x="277.2" y="4.8"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45.6" x="519.6" y="19.2803">Hono</text><rect fill="#FFFFFF" filter="url(#f160zighuzisgk)" height="53.1188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="707.4" y="351.6656"/><rect fill="#FFFFFF" filter="url(#f160zighuzisgk)" height="540.7875" style="stroke: #000000; stroke-width: 2.4;" width="1166.4" x="14.4" y="110.0719"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="141.6" x2="141.6" y1="89.6719" y2="671.2594"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="361.2" x2="361.2" y1="89.6719" y2="671.2594"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="712.8" x2="712.8" y1="89.6719" y2="671.2594"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="900" x2="900" y1="89.6719" y2="671.2594"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="1112.4" x2="1112.4" y1="89.6719" y2="671.2594"/><rect fill="#FEFECE" filter="url(#f160zighuzisgk)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="87.6" x="96" y="47.3156"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="70.8" x="104.4" y="71.3098">Gateway</text><rect fill="#FEFECE" filter="url(#f160zighuzisgk)" height="55.9125" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="154.8" x="282" y="27.7594"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="138" x="290.4" y="51.7535">Protocol Adapter</text><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="100.8" x="309" y="71.3098">instance #1</text><rect fill="#FEFECE" filter="url(#f160zighuzisgk)" height="55.9125" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="174" x="624" y="27.7594"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="157.2" x="632.4" y="51.7535">Device Connection</text><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="126" x="648" y="71.3098">API component</text><rect fill="#FEFECE" filter="url(#f160zighuzisgk)" height="55.9125" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="166.8" x="814.8" y="27.7594"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="145.2" x="823.2" y="51.7535">AMQP messaging</text><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="67.2" x="864.6" y="71.3098">network</text><rect fill="#FEFECE" filter="url(#f160zighuzisgk)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="106.8" x="1057.2" y="47.3156"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="90" x="1065.6" y="71.3098">Application</text><rect fill="#FFFFFF" filter="url(#f160zighuzisgk)" height="53.1188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="707.4" y="351.6656"/><path d="M14.4,110.0719 L241.2,110.0719 L241.2,118.4719 L229.2,130.4719 L14.4,130.4719 L14.4,110.0719 " fill="#EEEEEE" style="stroke: #000000; stroke-width: 1.2;"/><rect fill="none" height="540.7875" style="stroke: #000000; stroke-width: 2.4;" width="1166.4" x="14.4" y="110.0719"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="172.8" x="32.4" y="125.7521">Command handling</text><polygon fill="#A80036" points="913.8,187.5094,901.8,192.3094,913.8,197.1094,909,192.3094" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="906.6" x2="1111.8" y1="192.3094" y2="192.3094"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="10.8" x="921" y="168.0709">1</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="133.2" x="936.6" y="149.9115">attach("receiver",</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="168" x="936.6" y="168.0709">"command_response/</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="157.2" x="941.4" y="186.2303">TENANT/${replyId}")</text><polygon fill="#A80036" points="913.8,240.6281,901.8,245.4281,913.8,250.2281,909,245.4281" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="906.6" x2="1111.8" y1="245.4281" y2="245.4281"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="10.8" x="921" y="230.2693">2</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="124.8" x="936.6" y="221.1896">attach("sender",</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="162" x="936.6" y="239.349">"command/TENANT")</text><polygon fill="#A80036" points="375,293.7469,363,298.5469,375,303.3469,370.2,298.5469" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="367.8" x2="1111.8" y1="298.5469" y2="298.5469"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="10.8" x="382.2" y="283.3881">3</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="542.4" x="397.8" y="274.3084">transfer("command/TENANT", "command/TENANT/4711","${payload}")</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="225.6" x="412.2" y="292.4678">via AMQP messaging network</text><polygon fill="#A80036" points="693,346.8656,705,351.6656,693,356.4656,697.8,351.6656" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="361.8" x2="700.2" y1="351.6656" y2="351.6656"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="10.8" x="370.2" y="336.5068">4</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="242.4" x="385.8" y="327.4271">get command handling adapter</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="195.6" x="385.8" y="345.5865">instances for device 4711</text><polygon fill="#A80036" points="375,399.9844,363,404.7844,375,409.5844,370.2,404.7844" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 2.0,2.0;" x1="367.8" x2="712.2" y1="404.7844" y2="404.7844"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="10.8" x="382.2" y="389.6256">5</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="296.4" x="397.8" y="380.5459">JSON containing adapter instance "#1"</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="236.4" x="397.8" y="398.7053">handling commands for "4711"</text><path d="M220.8,420.3844 L220.8,504.3844 L496.8,504.3844 L496.8,432.3844 L484.8,420.3844 L220.8,420.3844 " fill="#FBFB77" filter="url(#f160zighuzisgk)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M484.8,420.3844 L484.8,432.3844 L496.8,432.3844 L484.8,420.3844 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="248.4" x="228" y="440.8646">Command is already at the right</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="238.8" x="228" y="459.024">adapter instance, gets handled</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="250.8" x="228" y="477.1834">by command handler associated</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="87.6" x="228" y="495.3428">with "gw-1".</text><polygon fill="#A80036" points="155.4,536.3813,143.4,541.1813,155.4,545.9812,150.6,541.1813" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="148.2" x2="360.6" y1="541.1813" y2="541.1813"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="10.8" x="162.6" y="535.1021">6</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="175.2" x="178.2" y="535.1021">Command is published</text><path d="M26.4,556.7813 L26.4,604.7813 L252,604.7813 L252,568.7813 L240,556.7813 L26.4,556.7813 " fill="#FBFB77" filter="url(#f160zighuzisgk)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M240,556.7813 L240,568.7813 L252,568.7813 L240,556.7813 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="176.4" x="33.6" y="577.2615">The gateway sends the</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="200.4" x="33.6" y="595.4209">command to device 4711.</text><polygon fill="#A80036" points="1098.6,636.4594,1110.6,641.2594,1098.6,646.0594,1103.4,641.2594" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="361.8" x2="1105.8" y1="641.2594" y2="641.2594"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="10.8" x="370.2" y="635.1803">7</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="411.6" x="385.8" y="635.1803">disposition("accepted") via AMQP messaging network</text><!--MD5=[40c7e1303a3221224bab616aecbb0475]
@startuml
scale 1.2
hide footbox
participant Gateway order 20
box "Hono"
participant "Protocol Adapter\ninstance #1" order 30
participant "Device Connection\nAPI component" order 50
end box
participant "AMQP messaging \nnetwork" order 60
participant Application order 70
autonumber
group Command handling
Application -> "AMQP messaging \nnetwork": attach("receiver", \n"command_response/\n TENANT/${replyId}")
Application -> "AMQP messaging \nnetwork": attach("sender", \n"command/TENANT")
Application -> "Protocol Adapter\ninstance #1": transfer("command/TENANT", "command/TENANT/4711","${payload}")\n via AMQP messaging network
"Protocol Adapter\ninstance #1" -> "Device Connection\nAPI component": get command handling adapter \ninstances for device 4711
activate "Device Connection\nAPI component"
return JSON containing adapter instance "#1" \nhandling commands for "4711"
note over "Protocol Adapter\ninstance #1"
Command is already at the right
adapter instance, gets handled
by command handler associated
with "gw-1".
end note
"Protocol Adapter\ninstance #1" -> Gateway: Command is published
note over Gateway
The gateway sends the
command to device 4711.
end note
"Protocol Adapter\ninstance #1" -> Application: disposition("accepted") via AMQP messaging network
end
@enduml
PlantUML version 1.2019.11(Sun Sep 22 12:02:15 CEST 2019)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.4+11-post-Ubuntu-1ubuntu218.04.3
Operating System: Linux
Default Encoding: UTF-8
Language: de
Country: DE
--></g></svg>