| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>openKonsequenz - Architecture of the module 'Grid Failure Information'Create Repository</title> |
| <style> |
| #wrapper {width: 960px; margin: 0 auto;} |
| /* Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */ |
| /* Uncomment @import statement to use as custom stylesheet */ |
| /*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/ |
| article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block} |
| audio,video{display:inline-block} |
| audio:not([controls]){display:none;height:0} |
| html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%} |
| a{background:none} |
| a:focus{outline:thin dotted} |
| a:active,a:hover{outline:0} |
| h1{font-size:2em;margin:.67em 0} |
| abbr[title]{border-bottom:1px dotted} |
| b,strong{font-weight:bold} |
| dfn{font-style:italic} |
| hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0} |
| mark{background:#ff0;color:#000} |
| code,kbd,pre,samp{font-family:monospace;font-size:1em} |
| pre{white-space:pre-wrap} |
| q{quotes:"\201C" "\201D" "\2018" "\2019"} |
| small{font-size:80%} |
| sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} |
| sup{top:-.5em} |
| sub{bottom:-.25em} |
| img{border:0} |
| svg:not(:root){overflow:hidden} |
| figure{margin:0} |
| fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em} |
| legend{border:0;padding:0} |
| button,input,select,textarea{font-family:inherit;font-size:100%;margin:0} |
| button,input{line-height:normal} |
| button,select{text-transform:none} |
| button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer} |
| button[disabled],html input[disabled]{cursor:default} |
| input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0} |
| button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0} |
| textarea{overflow:auto;vertical-align:top} |
| table{border-collapse:collapse;border-spacing:0} |
| *,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box} |
| html,body{font-size:100%} |
| body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased} |
| a:hover{cursor:pointer} |
| img,object,embed{max-width:100%;height:auto} |
| object,embed{height:100%} |
| img{-ms-interpolation-mode:bicubic} |
| .left{float:left!important} |
| .right{float:right!important} |
| .text-left{text-align:left!important} |
| .text-right{text-align:right!important} |
| .text-center{text-align:center!important} |
| .text-justify{text-align:justify!important} |
| .hide{display:none} |
| img,object,svg{display:inline-block;vertical-align:middle} |
| textarea{height:auto;min-height:50px} |
| select{width:100%} |
| .center{margin-left:auto;margin-right:auto} |
| .stretch{width:100%} |
| .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em} |
| div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr} |
| a{color:#2156a5;text-decoration:underline;line-height:inherit} |
| a:hover,a:focus{color:#1d4b8f} |
| a img{border:0} |
| p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility} |
| p aside{font-size:.875em;line-height:1.35;font-style:italic} |
| h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em} |
| h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0} |
| h1{font-size:2.125em} |
| h2{font-size:1.6875em} |
| h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em} |
| h4,h5{font-size:1.125em} |
| h6{font-size:1em} |
| hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0} |
| em,i{font-style:italic;line-height:inherit} |
| strong,b{font-weight:bold;line-height:inherit} |
| small{font-size:60%;line-height:inherit} |
| code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)} |
| ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit} |
| ul,ol{margin-left:1.5em} |
| ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em} |
| ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit} |
| ul.square{list-style-type:square} |
| ul.circle{list-style-type:circle} |
| ul.disc{list-style-type:disc} |
| ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0} |
| dl dt{margin-bottom:.3125em;font-weight:bold} |
| dl dd{margin-bottom:1.25em} |
| abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help} |
| abbr{text-transform:none} |
| blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd} |
| blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)} |
| blockquote cite::before{content:"\2014 \0020"} |
| blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)} |
| blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)} |
| @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2} |
| h1{font-size:2.75em} |
| h2{font-size:2.3125em} |
| h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em} |
| h4{font-size:1.4375em}} |
| table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede} |
| table thead,table tfoot{background:#f7f8f7} |
| table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left} |
| table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)} |
| table tr.even,table tr.alt{background:#f8f8f7} |
| table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6} |
| h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em} |
| h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400} |
| .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table} |
| .clearfix::after,.float-group::after{clear:both} |
| :not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word} |
| :not(pre)>code.nobreak{word-wrap:normal} |
| :not(pre)>code.nowrap{white-space:nowrap} |
| pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed} |
| pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit} |
| pre>code{display:block} |
| pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal} |
| em em{font-style:normal} |
| strong strong{font-weight:400} |
| .keyseq{color:rgba(51,51,51,.8)} |
| kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap} |
| .keyseq kbd:first-child{margin-left:0} |
| .keyseq kbd:last-child{margin-right:0} |
| .menuseq,.menuref{color:#000} |
| .menuseq b:not(.caret),.menuref{font-weight:inherit} |
| .menuseq{word-spacing:-.02em} |
| .menuseq b.caret{font-size:1.25em;line-height:.8} |
| .menuseq i.caret{font-weight:bold;text-align:center;width:.45em} |
| b.button::before,b.button::after{position:relative;top:-1px;font-weight:400} |
| b.button::before{content:"[";padding:0 3px 0 2px} |
| b.button::after{content:"]";padding:0 2px 0 3px} |
| p a>code:hover{color:rgba(0,0,0,.9)} |
| #header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em} |
| #header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table} |
| #header::after,#content::after,#footnotes::after,#footer::after{clear:both} |
| #content{margin-top:1.25em} |
| #content::before{content:none} |
| #header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0} |
| #header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf} |
| #header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px} |
| #header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap} |
| #header .details span:first-child{margin-left:-.125em} |
| #header .details span.email a{color:rgba(0,0,0,.85)} |
| #header .details br{display:none} |
| #header .details br+span::before{content:"\00a0\2013\00a0"} |
| #header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)} |
| #header .details br+span#revremark::before{content:"\00a0|\00a0"} |
| #header #revnumber{text-transform:capitalize} |
| #header #revnumber::after{content:"\00a0"} |
| #content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem} |
| #toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em} |
| #toc>ul{margin-left:.125em} |
| #toc ul.sectlevel0>li>a{font-style:italic} |
| #toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0} |
| #toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none} |
| #toc li{line-height:1.3334;margin-top:.3334em} |
| #toc a{text-decoration:none} |
| #toc a:active{text-decoration:underline} |
| #toctitle{color:#7a2518;font-size:1.2em} |
| @media screen and (min-width:768px){#toctitle{font-size:1.375em} |
| body.toc2{padding-left:15em;padding-right:0} |
| #toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto} |
| #toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em} |
| #toc.toc2>ul{font-size:.9em;margin-bottom:0} |
| #toc.toc2 ul ul{margin-left:0;padding-left:1em} |
| #toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em} |
| body.toc2.toc-right{padding-left:0;padding-right:15em} |
| body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}} |
| @media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0} |
| #toc.toc2{width:20em} |
| #toc.toc2 #toctitle{font-size:1.375em} |
| #toc.toc2>ul{font-size:.95em} |
| #toc.toc2 ul ul{padding-left:1.25em} |
| body.toc2.toc-right{padding-left:0;padding-right:20em}} |
| #content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} |
| #content #toc>:first-child{margin-top:0} |
| #content #toc>:last-child{margin-bottom:0} |
| #footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em} |
| #footer-text{color:rgba(255,255,255,.8);line-height:1.44} |
| #content{margin-bottom:.625em} |
| .sect1{padding-bottom:.625em} |
| @media screen and (min-width:768px){#content{margin-bottom:1.25em} |
| .sect1{padding-bottom:1.25em}} |
| .sect1:last-child{padding-bottom:0} |
| .sect1+.sect1{border-top:1px solid #e7e7e9} |
| #content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400} |
| #content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em} |
| #content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible} |
| #content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none} |
| #content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221} |
| details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em} |
| details>summary:first-of-type{cursor:pointer;display:list-item;outline:none;margin-bottom:.75em} |
| .admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic} |
| table.tableblock.fit-content>caption.title{white-space:nowrap;width:0} |
| .paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)} |
| table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit} |
| .admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%} |
| .admonitionblock>table td.icon{text-align:center;width:80px} |
| .admonitionblock>table td.icon img{max-width:none} |
| .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase} |
| .admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)} |
| .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0} |
| .exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px} |
| .exampleblock>.content>:first-child{margin-top:0} |
| .exampleblock>.content>:last-child{margin-bottom:0} |
| .sidebarblock{border-style:solid;border-width:1px;border-color:#dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;-webkit-border-radius:4px;border-radius:4px} |
| .sidebarblock>:first-child{margin-top:0} |
| .sidebarblock>:last-child{margin-bottom:0} |
| .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center} |
| .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0} |
| .literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em} |
| @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}} |
| @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}} |
| .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8} |
| .literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)} |
| .listingblock>.content{position:relative} |
| .listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5} |
| .listingblock:hover code[data-lang]::before{display:block} |
| .listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5} |
| .listingblock.terminal pre .command:not([data-prompt])::before{content:"$"} |
| .listingblock pre.highlightjs{padding:0} |
| .listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px} |
| .listingblock pre.prettyprint{border-width:0} |
| .prettyprint{background:#f7f7f8} |
| pre.prettyprint .linenums{line-height:1.45;margin-left:2em} |
| pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0} |
| pre.prettyprint li code[data-lang]::before{opacity:1} |
| pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none} |
| table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none} |
| table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal} |
| table.linenotable td.code{padding-left:.75em} |
| table.linenotable td.linenos{border-right:1px solid currentColor;opacity:.35;padding-right:.5em} |
| pre.pygments .lineno{border-right:1px solid currentColor;opacity:.35;display:inline-block;margin-right:.75em} |
| pre.pygments .lineno::before{content:"";margin-right:-.125em} |
| .quoteblock{margin:0 1em 1.25em 1.5em;display:table} |
| .quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em} |
| .quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify} |
| .quoteblock blockquote{margin:0;padding:0;border:0} |
| .quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)} |
| .quoteblock blockquote>.paragraph:last-child p{margin-bottom:0} |
| .quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right} |
| .verseblock{margin:0 1em 1.25em} |
| .verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility} |
| .verseblock pre strong{font-weight:400} |
| .verseblock .attribution{margin-top:1.25rem;margin-left:.5ex} |
| .quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic} |
| .quoteblock .attribution br,.verseblock .attribution br{display:none} |
| .quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)} |
| .quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none} |
| .quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0} |
| .quoteblock.abstract{margin:0 1em 1.25em;display:block} |
| .quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center} |
| .quoteblock.excerpt,.quoteblock .quoteblock{margin:0 0 1.25em;padding:0 0 .25em 1em;border-left:.25em solid #dddddf} |
| .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem} |
| .quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0} |
| table.tableblock{max-width:100%;border-collapse:separate} |
| p.tableblock:last-child{margin-bottom:0} |
| td.tableblock>.content>:last-child{margin-bottom:-1.25em} |
| td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0} |
| table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede} |
| table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0} |
| table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0} |
| table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0} |
| table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px} |
| table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0} |
| table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0} |
| table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0} |
| table.frame-all{border-width:1px} |
| table.frame-sides{border-width:0 1px} |
| table.frame-topbot,table.frame-ends{border-width:1px 0} |
| table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7} |
| th.halign-left,td.halign-left{text-align:left} |
| th.halign-right,td.halign-right{text-align:right} |
| th.halign-center,td.halign-center{text-align:center} |
| th.valign-top,td.valign-top{vertical-align:top} |
| th.valign-bottom,td.valign-bottom{vertical-align:bottom} |
| th.valign-middle,td.valign-middle{vertical-align:middle} |
| table thead th,table tfoot th{font-weight:bold} |
| tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7} |
| tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold} |
| p.tableblock>code:only-child{background:none;padding:0} |
| p.tableblock{font-size:1em} |
| ol{margin-left:1.75em} |
| ul li ol{margin-left:1.5em} |
| dl dd{margin-left:1.125em} |
| dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0} |
| ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em} |
| ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none} |
| ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em} |
| ul.unstyled,ol.unstyled{margin-left:0} |
| ul.checklist{margin-left:.625em} |
| ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em} |
| ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em} |
| ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em} |
| ul.inline>li{margin-left:1.25em} |
| .unstyled dl dt{font-weight:400;font-style:normal} |
| ol.arabic{list-style-type:decimal} |
| ol.decimal{list-style-type:decimal-leading-zero} |
| ol.loweralpha{list-style-type:lower-alpha} |
| ol.upperalpha{list-style-type:upper-alpha} |
| ol.lowerroman{list-style-type:lower-roman} |
| ol.upperroman{list-style-type:upper-roman} |
| ol.lowergreek{list-style-type:lower-greek} |
| .hdlist>table,.colist>table{border:0;background:none} |
| .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none} |
| td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em} |
| td.hdlist1{font-weight:bold;padding-bottom:1.25em} |
| .literalblock+.colist,.listingblock+.colist{margin-top:-.5em} |
| .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top} |
| .colist td:not([class]):first-child img{max-width:none} |
| .colist td:not([class]):last-child{padding:.25em 0} |
| .thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd} |
| .imageblock.left{margin:.25em .625em 1.25em 0} |
| .imageblock.right{margin:.25em 0 1.25em .625em} |
| .imageblock>.title{margin-bottom:0} |
| .imageblock.thumb,.imageblock.th{border-width:6px} |
| .imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em} |
| .image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0} |
| .image.left{margin-right:.625em} |
| .image.right{margin-left:.625em} |
| a.image{text-decoration:none;display:inline-block} |
| a.image object{pointer-events:none} |
| sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super} |
| sup.footnote a,sup.footnoteref a{text-decoration:none} |
| sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline} |
| #footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em} |
| #footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0} |
| #footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em} |
| #footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em} |
| #footnotes .footnote:last-of-type{margin-bottom:0} |
| #content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0} |
| .gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0} |
| .gist .file-data>table td.line-data{width:99%} |
| div.unbreakable{page-break-inside:avoid} |
| .big{font-size:larger} |
| .small{font-size:smaller} |
| .underline{text-decoration:underline} |
| .overline{text-decoration:overline} |
| .line-through{text-decoration:line-through} |
| .aqua{color:#00bfbf} |
| .aqua-background{background:#00fafa} |
| .black{color:#000} |
| .black-background{background:#000} |
| .blue{color:#0000bf} |
| .blue-background{background:#0000fa} |
| .fuchsia{color:#bf00bf} |
| .fuchsia-background{background:#fa00fa} |
| .gray{color:#606060} |
| .gray-background{background:#7d7d7d} |
| .green{color:#006000} |
| .green-background{background:#007d00} |
| .lime{color:#00bf00} |
| .lime-background{background:#00fa00} |
| .maroon{color:#600000} |
| .maroon-background{background:#7d0000} |
| .navy{color:#000060} |
| .navy-background{background:#00007d} |
| .olive{color:#606000} |
| .olive-background{background:#7d7d00} |
| .purple{color:#600060} |
| .purple-background{background:#7d007d} |
| .red{color:#bf0000} |
| .red-background{background:#fa0000} |
| .silver{color:#909090} |
| .silver-background{background:#bcbcbc} |
| .teal{color:#006060} |
| .teal-background{background:#007d7d} |
| .white{color:#bfbfbf} |
| .white-background{background:#fafafa} |
| .yellow{color:#bfbf00} |
| .yellow-background{background:#fafa00} |
| span.icon>.fa{cursor:default} |
| a span.icon>.fa{cursor:inherit} |
| .admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} |
| .admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c} |
| .admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111} |
| .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900} |
| .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400} |
| .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000} |
| .conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold} |
| .conum[data-value] *{color:#fff!important} |
| .conum[data-value]+b{display:none} |
| .conum[data-value]::after{content:attr(data-value)} |
| pre .conum[data-value]{position:relative;top:-.125em} |
| b.conum *{color:inherit!important} |
| .conum:not([data-value]):empty{display:none} |
| dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility} |
| h1,h2,p,td.content,span.alt{letter-spacing:-.01em} |
| p strong,td.content strong,div.footnote strong{letter-spacing:-.005em} |
| p,blockquote,dt,td.content,span.alt{font-size:1.0625rem} |
| p{margin-bottom:1.25rem} |
| .sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em} |
| .exampleblock>.content{background:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc} |
| .print-only{display:none!important} |
| @page{margin:1.25cm .75cm} |
| @media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important} |
| html{font-size:80%} |
| a{color:inherit!important;text-decoration:underline!important} |
| a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important} |
| a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em} |
| abbr[title]::after{content:" (" attr(title) ")"} |
| pre,blockquote,tr,img,object,svg{page-break-inside:avoid} |
| thead{display:table-header-group} |
| svg{max-width:100%} |
| p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3} |
| h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid} |
| #toc,.sidebarblock,.exampleblock>.content{background:none!important} |
| #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important} |
| body.book #header{text-align:center} |
| body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em} |
| body.book #header .details{border:0!important;display:block;padding:0!important} |
| body.book #header .details span:first-child{margin-left:0!important} |
| body.book #header .details br{display:block} |
| body.book #header .details br+span::before{content:none!important} |
| body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important} |
| body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always} |
| .listingblock code[data-lang]::before{display:block} |
| #footer{padding:0 .9375em} |
| .hide-on-print{display:none!important} |
| .print-only{display:block!important} |
| .hide-for-print{display:none!important} |
| .show-for-print{display:inherit!important}} |
| @media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem} |
| .sect1{padding:0!important} |
| .sect1+.sect1{border:0} |
| #footer{background:none} |
| #footer-text{color:rgba(0,0,0,.6);font-size:.9em}} |
| @media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}} |
| |
| </style> |
| <link href='https://fonts.googleapis.com/css?family=Noto+Serif' rel='stylesheet' type='text/css'> |
| <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700,700italic,800,800italic' rel='stylesheet' type='text/css'> |
| <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"> |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/default.min.css"> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/asciidoc.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/yaml.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/dockerfile.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/makefile.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/go.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/rust.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/haskell.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/typescript.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/scss.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/less.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/handlebars.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/groovy.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/scala.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/bash.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/languages/ini.min.js"></script> |
| <script>hljs.initHighlightingOnLoad();</script> |
| </head> |
| <body> |
| <div id="wrapper"> |
| <div class="article"> |
| <h1 id="__asciidoctor-preview-0__">openKonsequenz - Architecture of the module 'Grid Failure Information'</h1> |
| <div id="preamble"> |
| <div class="sectionbody"> |
| <div style="page-break-after: always;"></div> |
| <div id="__asciidoctor-preview-2__" class="paragraph"> |
| <p>Based on the ARC42-Template (v7.0):</p> |
| </div> |
| <div id="__asciidoctor-preview-3__" class="ulist"> |
| <ul> |
| <li id="__asciidoctor-preview-4__"> |
| <p>Version: 0.1</p> |
| </li> |
| <li id="__asciidoctor-preview-5__"> |
| <p>Date: 24.03.2020</p> |
| </li> |
| <li id="__asciidoctor-preview-6__"> |
| <p>Status: Inital Draft</p> |
| </li> |
| </ul> |
| </div> |
| <div style="page-break-after: always;"></div> |
| <!-- toc disabled --> |
| <div style="page-break-after: always;"></div> |
| </div> |
| <div id="toc" class="toc"> |
| <div id="toctitle">Table of Contents</div> |
| <ul class="sectlevel1"> |
| <li><a href="#_introduction_and_goals">1. Introduction and Goals</a> |
| <ul class="sectlevel2"> |
| <li><a href="#_requirements_overview">1.1. Requirements Overview</a></li> |
| <li><a href="#_quality_goals">1.2. Quality Goals</a></li> |
| <li><a href="#_stakeholders">1.3. Stakeholders</a></li> |
| </ul> |
| </li> |
| <li><a href="#_architecture_constraints">2. Architecture Constraints</a> |
| <ul class="sectlevel2"> |
| <li><a href="#_technical_constraints">2.1. Technical Constraints</a></li> |
| <li><a href="#_technical_dependencies">2.2. Technical Dependencies</a></li> |
| </ul> |
| </li> |
| <li><a href="#_system_scope_and_context">3. System Scope and Context</a> |
| <ul class="sectlevel2"> |
| <li><a href="#_business_context">3.1. Business Context</a></li> |
| <li><a href="#_technical_context">3.2. Technical Context</a></li> |
| <li><a href="#_solution_strategy">3.3. Solution Strategy</a></li> |
| </ul> |
| </li> |
| <li><a href="#_building_block_view">4. Building Block View</a> |
| <ul class="sectlevel2"> |
| <li><a href="#_whitebox_overall_system">4.1. Whitebox Overall System</a></li> |
| <li><a href="#_level_2">4.2. Level 2</a></li> |
| </ul> |
| </li> |
| <li><a href="#_runtime_view">5. Runtime view</a> |
| <ul class="sectlevel2"> |
| <li><a href="#_login_authentication">5.1. Login / authentication</a></li> |
| <li><a href="#_deployment_of_the_application_components">5.2. Deployment of the application components</a></li> |
| <li><a href="#_ci_and_cd_components">5.3. CI- and CD-Components</a></li> |
| <li><a href="#_continuous_deployment">5.4. Continuous deployment</a></li> |
| </ul> |
| </li> |
| <li><a href="#_design_decisions">6. Design decisions</a></li> |
| <li><a href="#_risks_and_technical_debts">7. Risks and Technical Debts</a></li> |
| <li><a href="#_glossary">8. Glossary</a></li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_introduction_and_goals"><a class="anchor" href="#_introduction_and_goals"></a>1. Introduction and Goals</h2> |
| <div class="sectionbody"> |
| <div class="sect2"> |
| <h3 id="_requirements_overview"><a class="anchor" href="#_requirements_overview"></a>1.1. Requirements Overview</h3> |
| <div id="__asciidoctor-preview-10__" class="paragraph"> |
| <p>The module 'Grid Failure Information' (in German: Modul 'Störungsinformationstool') |
| informs employees and customers about failures and planned interruptions of supply. |
| The module realizes the whole process from the creation of a failure information, |
| via the publication until the closure of the failure information.</p> |
| </div> |
| <div id="__asciidoctor-preview-11__" class="paragraph"> |
| <p>It supports the user by the acquisition of data and leads the user through |
| the workflow for processing a failure information.</p> |
| </div> |
| <div id="__asciidoctor-preview-12__" class="paragraph"> |
| <p>The module has many interfaces to other modules and external systems.</p> |
| </div> |
| <div id="__asciidoctor-preview-13__" class="paragraph"> |
| <p>The full requirements of the module 'Grid Failure Information' is described in the document</p> |
| </div> |
| <div id="__asciidoctor-preview-14__" class="ulist"> |
| <ul> |
| <li id="__asciidoctor-preview-15__"> |
| <p>"Anforderungsspezifikation Modul Störungsinformationstool" version 1.3 / 31-07-2019.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_quality_goals"><a class="anchor" href="#_quality_goals"></a>1.2. Quality Goals</h3> |
| <div id="__asciidoctor-preview-16__" class="paragraph"> |
| <p>The module 'Grid Failure Information' represents a user module that is based on the architecture platform of openKONSEQUENZ. The main quality |
| goals of the platform are:</p> |
| </div> |
| <div id="__asciidoctor-preview-17__" class="ulist"> |
| <ul> |
| <li id="__asciidoctor-preview-18__"> |
| <p><strong>Flexibility</strong> The reference platform shall grant that different systems and modules from different vendors/developers can interact and interoperate, and may be exchanged or recombined.</p> |
| </li> |
| <li id="__asciidoctor-preview-19__"> |
| <p><strong>Availability</strong> All platform modules that are running on the platform can only be as available as the platform same for user modules that are based on platform modules.</p> |
| </li> |
| <li id="__asciidoctor-preview-20__"> |
| <p><strong>Maintainability</strong> (and testability as part of maintainability) The platform and its platform modules shall be used longer than 15 years.</p> |
| </li> |
| <li id="__asciidoctor-preview-21__"> |
| <p><strong>Integration performance</strong> New implemented functionality of oK own modules and external modules shall be included fast / automatically.</p> |
| </li> |
| <li id="__asciidoctor-preview-22__"> |
| <p><strong>Security</strong> The platform and its modules need to underly security-by-design</p> |
| </li> |
| </ul> |
| </div> |
| <div id="__asciidoctor-preview-23__" class="paragraph"> |
| <p>The main quality goals of the core module Contact Base Data are:</p> |
| </div> |
| <div id="__asciidoctor-preview-24__" class="ulist"> |
| <ul> |
| <li id="__asciidoctor-preview-25__"> |
| <p><strong>Functionality</strong> The core module must fulfil the functional requirements mentioned in the section before</p> |
| </li> |
| <li id="__asciidoctor-preview-26__"> |
| <p><strong>Ergonomics</strong> The web interface must be realized according to oK-GUI-Styleguide.</p> |
| </li> |
| <li id="__asciidoctor-preview-27__"> |
| <p><strong>Good documentation</strong> (i.e. code and architecture documentation) makes code changes easier and automatic |
| tests facilitate rigorous verification.</p> |
| </li> |
| <li id="__asciidoctor-preview-28__"> |
| <p><strong>Modifiability</strong> (and testability as part of modifiability)</p> |
| </li> |
| <li id="__asciidoctor-preview-29__"> |
| <p><strong>Integration performance</strong> The core module must be easy integratable in different production environments.</p> |
| </li> |
| </ul> |
| </div> |
| <div id="__asciidoctor-preview-30__" class="paragraph"> |
| <p>The following documents contain the quality goals in detail:</p> |
| </div> |
| <div id="__asciidoctor-preview-31__" class="ulist"> |
| <ul> |
| <li id="__asciidoctor-preview-32__"> |
| <p>Architecture Committee Handbook v1.6.0 from 10-07-2019</p> |
| </li> |
| <li id="__asciidoctor-preview-33__"> |
| <p>Quality Committee Handbook v2.0.1 from 15-10-2018</p> |
| </li> |
| </ul> |
| </div> |
| <div id="__asciidoctor-preview-34__" class="paragraph"> |
| <p>The architecture is based on the AC-Handbook. The quality demands are described in the QC-Handbook. |
| Both specifications were fully complied with in the project, so that a high quality is given.</p> |
| </div> |
| <div id="__asciidoctor-preview-35__" class="paragraph"> |
| <p>The code quality regarding static code analysis and unit test code coverage on the backend and fronend sides |
| are ensured by the use of sonarqube. The rule set and the qualtity gate are defined by the default, the |
| so called "sonar way".</p> |
| </div> |
| <div id="__asciidoctor-preview-36__" class="paragraph"> |
| <p>The module 'Grid Failure Information' is part of the Eclipse project 'Eclipse openK User Modules'. |
| This project bases on the Eclipse Public Licence 2.0.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_stakeholders"><a class="anchor" href="#_stakeholders"></a>1.3. Stakeholders</h3> |
| <table id="__asciidoctor-preview-37__" class="tableblock frame-all grid-all stretch"> |
| <caption class="title">Table 1. Stakeholders</caption> |
| <colgroup> |
| <col style="width: 33.3333%;"> |
| <col style="width: 33.3333%;"> |
| <col style="width: 33.3334%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Role/Name</th> |
| <th class="tableblock halign-left valign-top">Contact</th> |
| <th class="tableblock halign-left valign-top">Expectations</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Product Owner (represents the Distribution System Operators)</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Maike Salbeck, Carsten Otten, Benedikt Herget, Rainer Fuhrmann</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The software must fulfil their functional and nonfunctional requirements.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Module Developer</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Michel Alessandrini, Jonas Tewolde, Frank Dietrich</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">All relevant business and technical information must be available for implementing the software.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">External Reviewer (represents the AC/QC)</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">n.n.</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The software and the documentation is realized according to the Quality and Architecture Handbook of openKONSEQUENZ.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">External Reviewer (represents the Eclipse-Requirements)</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">n.n.</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The software is licensed under the EPL 2.0. It must be validated that all requirements are fulfilled.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">System Integrator</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">n.n.</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">A documentation for the integration of the module in the DSO specific environments must be available.</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <div style="page-break-after: always;"></div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_architecture_constraints"><a class="anchor" href="#_architecture_constraints"></a>2. Architecture Constraints</h2> |
| <div class="sectionbody"> |
| <div id="__asciidoctor-preview-57__" class="paragraph"> |
| <p>The main architecture constraints are:</p> |
| </div> |
| <div id="__asciidoctor-preview-58__" class="ulist"> |
| <ul> |
| <li id="__asciidoctor-preview-59__"> |
| <p><strong>Public License</strong> The module must be available under the “Eclipse Public License 2.0”.</p> |
| </li> |
| <li id="__asciidoctor-preview-60__"> |
| <p><strong>Standardization</strong> The module must use the reference platform.</p> |
| </li> |
| <li id="__asciidoctor-preview-61__"> |
| <p><strong>Availability</strong> The source code of the module must be accessible to any interested person/company.</p> |
| </li> |
| </ul> |
| </div> |
| <div id="__asciidoctor-preview-62__" class="paragraph"> |
| <p>Therefore the project is published under the following repositories:</p> |
| </div> |
| <div id="__asciidoctor-preview-63__" class="ulist"> |
| <ul> |
| <li id="__asciidoctor-preview-64__"> |
| <p><a href="https://git.eclipse.org/r/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.backend" class="bare">https://git.eclipse.org/r/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.backend</a></p> |
| </li> |
| <li id="__asciidoctor-preview-65__"> |
| <p><a href="https://git.eclipse.org/r/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.frontend" class="bare">https://git.eclipse.org/r/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.frontend</a></p> |
| </li> |
| <li id="__asciidoctor-preview-66__"> |
| <p><a href="https://git.eclipse.org/r/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.documentation" class="bare">https://git.eclipse.org/r/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.documentation</a></p> |
| </li> |
| </ul> |
| </div> |
| <div class="sect2"> |
| <h3 id="_technical_constraints"><a class="anchor" href="#_technical_constraints"></a>2.1. Technical Constraints</h3> |
| <div id="__asciidoctor-preview-67__" class="paragraph"> |
| <p>The following technical constraints are given:</p> |
| </div> |
| <table id="__asciidoctor-preview-68__" class="tableblock frame-all grid-all stretch"> |
| <caption class="title">Table 2. Technical Contraints</caption> |
| <colgroup> |
| <col style="width: 50%;"> |
| <col style="width: 50%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Component</th> |
| <th class="tableblock halign-left valign-top">Constraints</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Base components of the reference platform</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"><div class="ulist"> |
| <ul> |
| <li> |
| <p>Application Server Tomcat</p> |
| </li> |
| <li> |
| <p>JPA EclipseLink</p> |
| </li> |
| <li> |
| <p>Database PostgreSQL</p> |
| </li> |
| </ul> |
| </div></div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Programming language frontend</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"><div class="ulist"> |
| <ul> |
| <li> |
| <p>Angular</p> |
| </li> |
| <li> |
| <p>Bootstrap</p> |
| </li> |
| <li> |
| <p>jQuery</p> |
| </li> |
| <li> |
| <p>REST/JSON Interfaces</p> |
| </li> |
| </ul> |
| </div></div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">GUI design</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"><div class="ulist"> |
| <ul> |
| <li> |
| <p>According to oK-GUI-Styleguide</p> |
| </li> |
| </ul> |
| </div></div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Java QA environment</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"><div class="ulist"> |
| <ul> |
| <li> |
| <p>Sonarqube 5.6.6</p> |
| </li> |
| </ul> |
| </div></div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Programming language</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"><div class="ulist"> |
| <ul> |
| <li> |
| <p>Backend: Java 1.8</p> |
| </li> |
| <li> |
| <p>Frontend: Angular 7+ (Javascript, Typescript, HTML5, CSS3)</p> |
| </li> |
| </ul> |
| </div></div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">IDE</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"><div class="ulist"> |
| <ul> |
| <li> |
| <p>Not restricted (Eclipse, IntelliJ, Microsoft Developer Studio, Microsoft Visual Code …​)</p> |
| </li> |
| </ul> |
| </div></div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Build system</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"><div class="ulist"> |
| <ul> |
| <li> |
| <p>Backend: Maven</p> |
| </li> |
| <li> |
| <p>Frontend: NodeJS + Angular/cli</p> |
| </li> |
| </ul> |
| </div></div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Libraries, frameworks, components</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"><div class="ulist"> |
| <ul> |
| <li> |
| <p>Used Libraries/Frameworks have to be compatible to the Eclipse Public License</p> |
| </li> |
| </ul> |
| </div></div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Architecture Documentation</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"><div class="ulist"> |
| <ul> |
| <li> |
| <p>According ARC42-Template</p> |
| </li> |
| </ul> |
| </div></div></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="sect2"> |
| <h3 id="_technical_dependencies"><a class="anchor" href="#_technical_dependencies"></a>2.2. Technical Dependencies</h3> |
| <div class="sect3"> |
| <h4 id="_modules"><a class="anchor" href="#_modules"></a>2.2.1. Modules</h4> |
| <div id="__asciidoctor-preview-89__" class="paragraph"> |
| <p>The following modules are required to use the 'Grid Failure Information':</p> |
| </div> |
| <table id="__asciidoctor-preview-90__" class="tableblock frame-all grid-all stretch"> |
| <caption class="title">Table 3. Modules</caption> |
| <colgroup> |
| <col style="width: 25%;"> |
| <col style="width: 25%;"> |
| <col style="width: 25%;"> |
| <col style="width: 25%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Name of the module</th> |
| <th class="tableblock halign-left valign-top">Purpose</th> |
| <th class="tableblock halign-left valign-top">Status of the module</th> |
| <th class="tableblock halign-left valign-top">status</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">'Auth&Auth'</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Authentification and Authorization</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">available</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">required</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">'Contact base data'</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Contact Base Data</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">available</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">required</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">'eLogbook'</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Log Book</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">available</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">optional</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">'Planned Grid Measures'</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Planned Grid Measures</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">available</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">optional</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">'CIM-Cache'</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Interface to the SCADA system</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">available</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">optional</p></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="sect3"> |
| <h4 id="_libraries"><a class="anchor" href="#_libraries"></a>2.2.2. Libraries</h4> |
| <div id="__asciidoctor-preview-115__" class="paragraph"> |
| <p>The following libraries are used: |
| TODO: Am Ende die Bibliotheken aktualisieren</p> |
| </div> |
| <table id="__asciidoctor-preview-116__" class="tableblock frame-all grid-all stretch"> |
| <caption class="title">Table 4. Libraries</caption> |
| <colgroup> |
| <col style="width: 16.6666%;"> |
| <col style="width: 16.6666%;"> |
| <col style="width: 16.6666%;"> |
| <col style="width: 16.6666%;"> |
| <col style="width: 16.6666%;"> |
| <col style="width: 16.667%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Name of the library</th> |
| <th class="tableblock halign-left valign-top">Version</th> |
| <th class="tableblock halign-left valign-top">Artefact-id</th> |
| <th class="tableblock halign-left valign-top">Usage</th> |
| <th class="tableblock halign-left valign-top">License</th> |
| <th class="tableblock halign-left valign-top">Tier</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.springframework.boot.spring-boot-starter-parent</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.2.1.RELEASE</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.springframework.boot.spring-boot-starter-data-jpa</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.2.1.RELEASE</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.springframework.boot.spring-boot-starter-oauth2-client</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.2.1.RELEASE</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.springframework.boot.spring-boot-starter-security</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.2.1.RELEASE</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.springframework.boot.spring-boot-starter-web</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.2.1.RELEASE</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.flywaydb.flyway-core</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">6.0.8</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.springframework.cloud.spring-cloud-starter-openfeign</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.2.0.RELEASE</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.springframework.cloud.spring-cloud-starter-netflix-ribbon</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.2.0.RELEASE</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.keycloak.keycloak-core</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">3.4.2_Final</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.postgresql.postgresql</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">42.2.8</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">New BSD License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.projectlombok.lombok</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">1.18.10</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.mapstruct.mapstruct-processor</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">1.2.0.Final</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">io.jsonwebtoken.jjwt</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">0.9.1</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">io.springfox.springfox-swagger2</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.9.2</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">io.springfox.springfox-swagger-ui</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.9.2</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.springframework.boot.spring-boot-starter-test</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.2.1.RELEASE</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.springframework.security.spring-security-test</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">5.2.1.RELEASE</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.powermock.powermock-reflect</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">com.h2database.h2</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">1.4.200</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">EPL</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.springframework.cloud.spring-cloud-dependencies</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Hoxton.RELEASE</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.springframework.boot.spring-boot-maven-plugin</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.2.1.RELEASE</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.jacoco.jacoco-maven-plugin</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">0.7.9</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">EPL 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.sonarsource.scanner.maven.sonar-maven-plugin</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">3.2</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">LGPL 3.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.asciidoctor.asciidoctor-maven-plugin</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">1.5.3</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache License 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.jruby.jruby-complete</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">9.0.0.0</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">EPL 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.asciidoctor.asciidoctorj-pdf</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">1.5.0-alpha.11</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.asciidoctor.asciidoctorj</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">1.5.4</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.asciidoctor.asciidoctorj-pdf</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">1.5.0-alpha.11</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">org.asciidoctor.asciidoctorj-diagram</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">1.5.4.1</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Apache 2.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Backend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Angular Font Awesome</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">3.1.2</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">@auth0/angular-jwt</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">3.0.1</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">font-awesome</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">4.7.0</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">@ngrx/core</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">1.2.0</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">@ngrx/effects</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">8-2-0</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">@ngrx/store</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">8.3.0</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">@ngrx/store-devtools</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">8.2.0</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">@ngx-translate/core</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">11.0.1</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">@ngx-translate/http-loader</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">4.0.0</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">ag-grid-angular</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">21.2.1</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">ag-grid-community</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">21.2.1</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">angular2-notifications</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">bootstrap</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">4.4.1</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">jquery</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">3.4.1</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">classlist.js</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">1.1.20150312</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">core-js</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">3.2.1</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">moment</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.24.0</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">ng2-popover</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">0.0.14</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">ngrx-forms</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">5.2.1</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">npm-install-peers</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">1.2.1</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">reselect</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">4.0.0</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">rxjs</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">6.5.3</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">rxjs-compat</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">6.5.4</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">ts-helpers</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">1.1.2</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">tslib</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">1.10.0</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">web-animations-js</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.3.2</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">zone.js</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">0.10.1</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">@swimlane/ngx-datatable</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">15.0.2</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">puppeteer</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">ngx-toastr</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">11.2.1</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">popper.js</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">1.16.0</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">@ng-bootstrap</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">5.1.5</p></td> |
| <td class="tableblock halign-left valign-top"><div class="content"></div></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">MIT License</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Frontend</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <div style="page-break-after: always;"></div> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_system_scope_and_context"><a class="anchor" href="#_system_scope_and_context"></a>3. System Scope and Context</h2> |
| <div class="sectionbody"> |
| <div class="sect2"> |
| <h3 id="_business_context"><a class="anchor" href="#_business_context"></a>3.1. Business Context</h3> |
| <div id="__asciidoctor-preview-490__" class="paragraph"> |
| <p>The core module 'Grid Failure Information' communicates via Restful Webservices with the follwowing modules:</p> |
| </div> |
| <div id="__asciidoctor-preview-491__" class="ulist"> |
| <ul> |
| <li id="__asciidoctor-preview-492__"> |
| <p><strong>Core Module 'Auth & Auth'</strong> The 'Grid Failure Information' can only be used by authorized users. |
| Therefore, it is essential to invoke the module 'Auth & Auth' for authorization and authentication |
| purposes.</p> |
| </li> |
| <li id="__asciidoctor-preview-493__"> |
| <p><strong>Core Module 'Contact base data'</strong> The user management can only by done by the module contact base data. |
| Therefore, it is essential to user the module ''Contact base data' for managing all users and customers.</p> |
| </li> |
| <li id="__asciidoctor-preview-494__"> |
| <p><strong>Core Module 'CIM-Cache'</strong> The 'Grid Failure Information' can only communicate via the CIM-Cachewith the SCADA system . |
| Therefore, it is essential to invoke the module 'CIM-Cache' for getting information from the SCADA system.</p> |
| </li> |
| <li id="__asciidoctor-preview-495__"> |
| <p><strong>User Module 'eLogbook'</strong> The 'Grid Failure Information' can import failure information from the module 'eLogbook'.</p> |
| </li> |
| <li id="__asciidoctor-preview-496__"> |
| <p><strong>User Module 'Planned Grid Measures'</strong> The 'Grid Failure Information' can import failure information from the module 'Planned Grid Measures'.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_technical_context"><a class="anchor" href="#_technical_context"></a>3.2. Technical Context</h3> |
| <div id="__asciidoctor-preview-497__" class="paragraph"> |
| <p>The following aspects have to be taken into account for external communication of the module 'Grid Failure Information':</p> |
| </div> |
| <div id="__asciidoctor-preview-498__" class="ulist"> |
| <ul> |
| <li id="__asciidoctor-preview-499__"> |
| <p>RESTful web services are used as interface-technology.</p> |
| </li> |
| <li id="__asciidoctor-preview-500__"> |
| <p>Each external interface (interfaces between modules or external systems) has to be documented.</p> |
| </li> |
| <li id="__asciidoctor-preview-501__"> |
| <p>Dependencies of modules to services realized by other modules have to be specified and documented explicitly.</p> |
| </li> |
| </ul> |
| </div> |
| <div id="__asciidoctor-preview-502__" class="paragraph"> |
| <p>The interfaces of the module 'Grid Failure Information' are described in the interface documentation. |
| TODO: Link zur interface documentation einfügen</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_solution_strategy"><a class="anchor" href="#_solution_strategy"></a>3.3. Solution Strategy</h3> |
| <div id="__asciidoctor-preview-503__" class="paragraph"> |
| <p>The module 'Grid Failure Information' bases on a small microservice architecture, including |
| an asynchronous messaging system.</p> |
| </div> |
| <div style="page-break-after: always;"></div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_building_block_view"><a class="anchor" href="#_building_block_view"></a>4. Building Block View</h2> |
| <div class="sectionbody"> |
| <div class="sect2"> |
| <h3 id="_whitebox_overall_system"><a class="anchor" href="#_whitebox_overall_system"></a>4.1. Whitebox Overall System</h3> |
| <div id="__asciidoctor-preview-505__" class="paragraph"> |
| <p>The module 'grid failure information' contains several components:</p> |
| </div> |
| <div id="__asciidoctor-preview-506__" class="olist arabic"> |
| <ol class="arabic"> |
| <li id="__asciidoctor-preview-507__"> |
| <p><strong>SIT-Web-FE</strong> - This component (SPA with Angular) provides two HTML pages: a table and a map |
| with failure information. This component is in the DMZ and can be called up from the Internet.</p> |
| </li> |
| <li id="__asciidoctor-preview-508__"> |
| <p><strong>SIT-Web-Guard</strong> - The SIT-Web-Guard (Java Spring Cloud) is a Zuul proxy |
| (API gateway) that only forwards explicitly configured services. For the failure information |
| tool, only certain services are available on the Internet that do not require authentication. |
| Since the SIT-BE is protected by Spring Security, the SIT-Web-Guard procures guest authentication for forwarding.</p> |
| </li> |
| <li id="__asciidoctor-preview-509__"> |
| <p><strong>SIT-FE</strong> - |
| This component (SPA with Angular) provides the user interface for the failure information application. The SIT-FE |
| receives its authentication when it is called from the PortalFE in the form of a JWT.</p> |
| </li> |
| <li id="__asciidoctor-preview-510__"> |
| <p><strong>SIT_BE</strong> - The SIT-BE (Java Spring Boot Microservice) provides all CRUD services in the form of |
| ReST services that the two frontends require. The SIT-BE is the only component that has |
| access to the database. Every call is authorized against the PortalBE. This microservice also includes |
| the JobManager subcomponent.</p> |
| </li> |
| <li id="__asciidoctor-preview-511__"> |
| <p><strong>JobManager</strong> - The various imports and exports are controlled via the JobManager. The JobManager |
| knows all available import and export jobs and can control them via the internal message bus |
| (RabbitMQ internal). Because the communication between the JobManager and the jobs takes place |
| via the message bus, the JM does not need to know their configuration and URLs. For this, the JM must |
| ensure synchronization (incl. timeout behavior) for asynchronous message communication.</p> |
| </li> |
| <li id="__asciidoctor-preview-512__"> |
| <p><strong>Import- and export jobs</strong> - All jobs provide a uniform (MessageBus) interface to start a job, |
| return the result of a job, or to provide information about the respective job (name, version, timeout, status, etc.). |
| The job manager cyclically requests all configured jobs to send current status information to it. |
| The interfaces of the individual jobs "outside" can be very different (file system, Internet, message queue, etc.)</p> |
| </li> |
| </ol> |
| </div> |
| <div id="__asciidoctor-preview-513__" class="imageblock"> |
| <div class="content"> |
| <img src="../img/architectureSIT.png" alt="architectureSIT"> |
| </div> |
| <div class="title">Figure 1. Architecture of the grid failure information tool</div> |
| </div> |
| <div id="__asciidoctor-preview-514__" class="paragraph"> |
| <p>TODO: Ab hier komplett überarbeiten</p> |
| </div> |
| <div class="sect3"> |
| <h4 id="_contactbasedatafe"><a class="anchor" href="#_contactbasedatafe"></a>4.1.1. contactBaseDataFE</h4> |
| <div id="__asciidoctor-preview-515__" class="paragraph"> |
| <p>This component implements the presentation logic for the <strong>contact-base-data</strong>-module using the <strong>Angular</strong>-TypeScript |
| framework. The Frontend is a so called <strong>Single Page Application</strong> (SPA) because |
| it behaves like a single HTML-page.</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_contact_base_data_jar_backend_tier"><a class="anchor" href="#_contact_base_data_jar_backend_tier"></a>4.1.2. contact-base-data.jar (backend tier)</h4> |
| <div id="__asciidoctor-preview-516__" class="paragraph"> |
| <p>This component implements the business functionality of the contact base data. And it provides services, that the |
| contactBaseDataFE can use the functions in the frontend.</p> |
| </div> |
| <div id="__asciidoctor-preview-517__" class="paragraph"> |
| <p>The "spring boot/spring cloud" framework is used to implement this application.</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_contactbasedatadev_db_database_tier"><a class="anchor" href="#_contactbasedatadev_db_database_tier"></a>4.1.3. ContactBaseDataDev-DB (Database tier)</h4> |
| <div id="__asciidoctor-preview-518__" class="paragraph"> |
| <p>This component stores the data of the contact base data. It provides an interface to the contact-base-data.jar to create or |
| change data in the database.</p> |
| </div> |
| <div id="__asciidoctor-preview-519__" class="paragraph"> |
| <p>The ContactBaseDataDev-DB runs on a Postgres DBMS. |
| (The decision to use the Postgres DBMS was made by the openKONSEQUENZ architecture committee)</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_level_2"><a class="anchor" href="#_level_2"></a>4.2. Level 2</h3> |
| <div class="sect3"> |
| <h4 id="_contactbasedatafe_frontend_tier"><a class="anchor" href="#_contactbasedatafe_frontend_tier"></a>4.2.1. ContactBaseDataFE (frontend tier)</h4> |
| <div id="__asciidoctor-preview-520__" class="paragraph"> |
| <p>The frontend component implements the concept of a single-page application (SPA). The framework used is Angular5.</p> |
| </div> |
| <div id="__asciidoctor-preview-521__" class="paragraph"> |
| <p>It divides the contactBaseDataFE into three layers:</p> |
| </div> |
| <div id="__asciidoctor-preview-522__" class="olist arabic"> |
| <ol class="arabic"> |
| <li id="__asciidoctor-preview-523__"> |
| <p><strong>Components</strong> - The components (pages, lists, dialogs, common comp.) represent the presentation layer and the control layer. A component contains the control logic (.ts-file), an HTML-fragment as presentation description (.html-file) and a style definition (.css-file).</p> |
| </li> |
| <li id="__asciidoctor-preview-524__"> |
| <p><strong>Services</strong> - The service component communicates with the interfaces of the backend via HTTP requests by using the model component.</p> |
| </li> |
| <li id="__asciidoctor-preview-525__"> |
| <p><strong>Model</strong> - The model corresponds to the view-model of the backend tier.</p> |
| </li> |
| </ol> |
| </div> |
| <div id="__asciidoctor-preview-526__" class="listingblock"> |
| <div class="title">Frontend tier</div> |
| <div class="content"> |
| <pre>node contactBaseData_Frontend { |
| component Model |
| |
| |
| node Components { |
| component "Pages" |
| component Lists |
| component "Common Components" |
| } |
| |
| component Services |
| |
| Components --> Services |
| Components --> Model |
| Services --> Model |
| } |
| |
| node "Contact Base Data Backend (simplified)" { |
| component RestService |
| component ViewModel_API__DTO |
| } |
| |
| Services .. RestService |
| Model .. ViewModel_API__DTO |
| RestService --> ViewModel_API__DTO</pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_contact_base_data_jar_backend_tier_2"><a class="anchor" href="#_contact_base_data_jar_backend_tier_2"></a>4.2.2. contact-base-data.jar (backend tier)</h4> |
| <div id="__asciidoctor-preview-527__" class="paragraph"> |
| <p>The backend tier contains five components which can be summarized in three layers:</p> |
| </div> |
| <div id="__asciidoctor-preview-528__" class="olist arabic"> |
| <ol class="arabic"> |
| <li id="__asciidoctor-preview-529__"> |
| <p><strong>Presentation layer</strong> - Represented by</p> |
| <div id="__asciidoctor-preview-530__" class="olist loweralpha"> |
| <ol class="loweralpha" type="a"> |
| <li id="__asciidoctor-preview-531__"> |
| <p>REST-Srv</p> |
| </li> |
| <li id="__asciidoctor-preview-532__"> |
| <p>View model/DTO</p> |
| </li> |
| </ol> |
| </div> |
| </li> |
| <li id="__asciidoctor-preview-533__"> |
| <p><strong>Controller layer</strong> - Represented by</p> |
| <div id="__asciidoctor-preview-534__" class="olist loweralpha"> |
| <ol class="loweralpha" type="a"> |
| <li id="__asciidoctor-preview-535__"> |
| <p>Controller</p> |
| </li> |
| <li id="__asciidoctor-preview-536__"> |
| <p>Service</p> |
| </li> |
| </ol> |
| </div> |
| </li> |
| <li id="__asciidoctor-preview-537__"> |
| <p><strong>Model layer</strong> - Represented by</p> |
| <div id="__asciidoctor-preview-538__" class="olist loweralpha"> |
| <ol class="loweralpha" type="a"> |
| <li id="__asciidoctor-preview-539__"> |
| <p>Repository</p> |
| </li> |
| <li id="__asciidoctor-preview-540__"> |
| <p>Model</p> |
| </li> |
| </ol> |
| </div> |
| </li> |
| </ol> |
| </div> |
| <div id="__asciidoctor-preview-541__" class="listingblock"> |
| <div class="title">Backend tier</div> |
| <div class="content"> |
| <pre>node "Contact Base Data Backend" { |
| component Model |
| |
| |
| component RestService |
| |
| component ViewModel_DTO |
| |
| component Controller |
| |
| component Service |
| |
| component Repository |
| |
| RestService --> ViewModel_DTO |
| RestService --> Controller |
| Controller --> Service |
| Service --> Repository |
| Repository --> Model |
| } |
| |
| node DBMS { |
| component ContactBaseDataDB |
| } |
| |
| Repository --> ContactBaseDataDB</pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_contactbasedata_db_database_tier"><a class="anchor" href="#_contactbasedata_db_database_tier"></a>4.2.3. ContactBaseData-DB (database tier)</h4> |
| <div id="__asciidoctor-preview-542__" class="paragraph"> |
| <p>The ContactBaseData-DB is realized as a relational database system.</p> |
| </div> |
| <div id="__asciidoctor-preview-543__" class="listingblock"> |
| <div class="title">Database tier</div> |
| <div class="content"> |
| <pre>node DBMS { |
| component ContactBaseDataDB |
| }</pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_program_configuration"><a class="anchor" href="#_program_configuration"></a>4.2.4. Program Configuration</h4> |
| <div style="page-break-after: always;"></div> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_runtime_view"><a class="anchor" href="#_runtime_view"></a>5. Runtime view</h2> |
| <div class="sectionbody"> |
| <div class="sect2"> |
| <h3 id="_login_authentication"><a class="anchor" href="#_login_authentication"></a>5.1. Login / authentication</h3> |
| <div id="__asciidoctor-preview-545__" class="paragraph"> |
| <p>There is no login page, since the openK-Portal-Application is responsible for authentication and |
| the whole SSO (single sign on) process. |
| Therefore the application has to be started by providing a valid authentication token. |
| This token is a JWT (JSON Web Token).</p> |
| </div> |
| <div id="__asciidoctor-preview-546__" class="literalblock"> |
| <div class="title">contactBaseData application is called by the <strong>portal</strong> application. The User is already logged in</div> |
| <div class="content"> |
| <pre>actor User |
| participant PortalFrontend |
| participant PortalBackend |
| participant ContactBaseDataFrontend |
| entity ContactBaseDataStorage |
| participant ContactBaseDataBackend |
| |
| |
| User->PortalFrontend: Start ContactBaseData(JWT) |
| PortalFrontend->ContactBaseDataFrontend: nav. to frontend-URL with JWT |
| ContactBaseDataFrontend->ContactBaseDataStorage: Extract JWT and store token in session |
| ... some delay ... |
| ContactBaseDataFrontend->ContactBaseDataBackend: Call any secured service with JWT |
| group Call secured service |
| |
| ContactBaseDataBackend->PortalBackend: "/checkAut(JWT)" |
| group Authorization succeeded |
| ContactBaseDataBackend->ContactBaseDataBackend: run service |
| ContactBaseDataBackend->ContactBaseDataFrontend: return service result |
| end |
| group Authorization failed |
| ContactBaseDataBackend->ContactBaseDataFrontend: return HTTP Code 401 |
| end |
| end</pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_deployment_of_the_application_components"><a class="anchor" href="#_deployment_of_the_application_components"></a>5.2. Deployment of the application components</h3> |
| <div class="sect3"> |
| <h4 id="_deployment_of_the_frontend"><a class="anchor" href="#_deployment_of_the_frontend"></a>5.2.1. Deployment of the frontend</h4> |
| <div id="__asciidoctor-preview-547__" class="paragraph"> |
| <p>TODO:</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_deployment_of_the_backend"><a class="anchor" href="#_deployment_of_the_backend"></a>5.2.2. Deployment of the backend</h4> |
| <div id="__asciidoctor-preview-548__" class="paragraph"> |
| <p>TODO:</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_deployment_of_the_database"><a class="anchor" href="#_deployment_of_the_database"></a>5.2.3. Deployment of the database</h4> |
| <div id="__asciidoctor-preview-549__" class="paragraph"> |
| <p>The component "Flyway" is used to make to distribute structural |
| or content related changes to the database.</p> |
| </div> |
| <div id="__asciidoctor-preview-550__" class="paragraph"> |
| <p>The database is built out of the scripts in the directory "db/migrations". Every sql |
| script contains the complete db script for the contact base data database (in different versions). |
| The highest version number indicates the currently valid script.</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_configuration_of_the_system"><a class="anchor" href="#_configuration_of_the_system"></a>5.2.4. Configuration of the system</h4> |
| <div class="sect4"> |
| <h5 id="_db_based_configuration"><a class="anchor" href="#_db_based_configuration"></a>DB based configuration</h5> |
| <div id="__asciidoctor-preview-551__" class="paragraph"> |
| <p>TODO:</p> |
| </div> |
| </div> |
| <div class="sect4"> |
| <h5 id="_configuration_of_the_contact_base_data_backend"><a class="anchor" href="#_configuration_of_the_contact_base_data_backend"></a>Configuration of the contact base data backend</h5> |
| <div id="__asciidoctor-preview-552__" class="paragraph"> |
| <p>The backend service is configured in the * .yaml files, which are located in the JAR file.</p> |
| </div> |
| <div id="__asciidoctor-preview-553__" class="paragraph"> |
| <p>This yml-file can be divided into different configuration profiles. |
| When starting the backend-service one has the possibility to specify |
| the active profile</p> |
| </div> |
| <div id="__asciidoctor-preview-554__" class="ulist"> |
| <ul> |
| <li id="__asciidoctor-preview-555__"> |
| <p><strong>spring.datasource</strong> configuration section for the database connection</p> |
| </li> |
| <li id="__asciidoctor-preview-556__"> |
| <p><strong>flyway.enabled</strong> If enabled=true then the database migrations |
| will automatically performed when starting the application |
| (this parameter should normally be set to "false"</p> |
| </li> |
| <li id="__asciidoctor-preview-557__"> |
| <p><strong>server.max-http-header-size</strong> Maximum size for the http-headers</p> |
| </li> |
| <li id="__asciidoctor-preview-558__"> |
| <p><strong>jwt.tokenHeader</strong> Name of the http-header which carries the authentication-token. |
| (should be "Authorization")</p> |
| </li> |
| <li id="__asciidoctor-preview-559__"> |
| <p><strong>jwt.useStaticJwt</strong> If set to "true" then the backend will use <strong>jwt.staticJwt</strong> |
| as Authorization-token. (This won’t work for calls to other modules |
| like the Auth’n’Auth-Modul, because the token will be out of date)</p> |
| </li> |
| <li id="__asciidoctor-preview-560__"> |
| <p><strong>authNAuthService.ribbon.listOfServers</strong> Here one can configure the base |
| url to the Auth’n’Auth-Service</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_ci_and_cd_components"><a class="anchor" href="#_ci_and_cd_components"></a>5.3. CI- and CD-Components</h3> |
| <div class="sect3"> |
| <h4 id="_git_repository"><a class="anchor" href="#_git_repository"></a>5.3.1. GIT-Repository</h4> |
| <div id="__asciidoctor-preview-561__" class="paragraph"> |
| <p>Backend: |
| <a href="https://git.eclipse.org/c/openk-usermodules/org.eclipse.openk-usermodules.contactBaseData.backend.git/" class="bare">https://git.eclipse.org/c/openk-usermodules/org.eclipse.openk-usermodules.contactBaseData.backend.git/</a></p> |
| </div> |
| <div id="__asciidoctor-preview-562__" class="paragraph"> |
| <p>Frontend: |
| <a href="https://git.eclipse.org/c/openk-usermodules/org.eclipse.openk-usermodules.contactBaseData.frontend.git/" class="bare">https://git.eclipse.org/c/openk-usermodules/org.eclipse.openk-usermodules.contactBaseData.frontend.git/</a></p> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_continuous_deployment"><a class="anchor" href="#_continuous_deployment"></a>5.4. Continuous deployment</h3> |
| <div id="__asciidoctor-preview-563__" class="paragraph"> |
| <p>The continuous deployment is realized on two platforms:</p> |
| </div> |
| <div id="__asciidoctor-preview-564__" class="ulist"> |
| <ul> |
| <li id="__asciidoctor-preview-565__"> |
| <p>the development platform (Dev-Environment)</p> |
| </li> |
| <li id="__asciidoctor-preview-566__"> |
| <p>the quality platform (Q-Environment)</p> |
| </li> |
| </ul> |
| </div> |
| <div id="__asciidoctor-preview-567__" class="paragraph"> |
| <p>The automatic deployment on both of the environments is |
| directly linked to the branches on the GIT-repositories:</p> |
| </div> |
| <div id="__asciidoctor-preview-568__" class="olist arabic"> |
| <ol class="arabic"> |
| <li id="__asciidoctor-preview-569__"> |
| <p>"SNAPSHOT" or "DEVELOP"</p> |
| </li> |
| <li id="__asciidoctor-preview-570__"> |
| <p>"MASTER" or "TRUNC"</p> |
| </li> |
| </ol> |
| </div> |
| <div id="__asciidoctor-preview-571__" class="paragraph"> |
| <p>The running development is exclusively made on the Snapshot-Branch. Every time |
| a developer checks in (pushes) code to the repository, an automatic build |
| starts on the hudson ci-server. If the Snapshot-build is successful, then the result |
| of that build is directly deployed on the Dev-environment.</p> |
| </div> |
| <div id="__asciidoctor-preview-572__" class="paragraph"> |
| <p>At the end of a scrum sprint or when a big user story is realized, all |
| the code changes are merged from the <strong>Snapshot</strong>-Branch to the <strong>Trunc</strong>. |
| This automatically triggers the build and the deployment on the |
| Q-environment.</p> |
| </div> |
| <div style="page-break-after: always;"></div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_design_decisions"><a class="anchor" href="#_design_decisions"></a>6. Design decisions</h2> |
| <div class="sectionbody"> |
| <div id="__asciidoctor-preview-574__" class="paragraph"> |
| <p>All architecture decisions are based on the Architecture Committee Handbook. There are no deviations.</p> |
| </div> |
| <div style="page-break-after: always;"></div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_risks_and_technical_debts"><a class="anchor" href="#_risks_and_technical_debts"></a>7. Risks and Technical Debts</h2> |
| <div class="sectionbody"> |
| <div id="__asciidoctor-preview-576__" class="paragraph"> |
| <p>(Currently there aren’t any known issues)</p> |
| </div> |
| <div style="page-break-after: always;"></div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_glossary"><a class="anchor" href="#_glossary"></a>8. Glossary</h2> |
| <div class="sectionbody"> |
| <table id="__asciidoctor-preview-578__" class="tableblock frame-all grid-all stretch"> |
| <caption class="title">Table 5. Abbreviations and glossary terms</caption> |
| <colgroup> |
| <col style="width: 25%;"> |
| <col style="width: 25%;"> |
| <col style="width: 25%;"> |
| <col style="width: 25%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Short</th> |
| <th class="tableblock halign-left valign-top">Long</th> |
| <th class="tableblock halign-left valign-top">German</th> |
| <th class="tableblock halign-left valign-top">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">AC</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Architecture Committee</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Architektur-Komittee</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Gives framework and constraints according to architecture for oK projects.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">CNCU</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Central Network Control Unit</p></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">DAO</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Data Access Objects</p></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">DTO</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Data Transfer Object</p></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">DSO</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Distribution System Operator</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Verteilnetz-betreiber (VNB)</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Manages the distribution network for energy, gas or water.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">EPL</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Eclipse Public License</p></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Underlying license model for Eclipse projects like contact-base-data@openK</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">ESB</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Enterprise Service Bus</p></td> |
| <td class="tableblock halign-left valign-top"></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Central instance to exchange data to overcome point-to-point connections.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">oK</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">openKONSEQUENZ</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">openKONSEQUENZ</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Name of the consortium of DSOs</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">QC</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Quality Committee</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Qualitätskomitee</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Gives framework and constraints according to quality for oK projects.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">SCADA</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Supervisory Control and Data Acquisition</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Netzleitsystem</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">System, that allows DSOs view/control actual parameters of their power grid.</p></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| </div> |
| </div> |
| </body> |
| </html> |