Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchbrunze2019-02-12 18:53:51 -0500
committerchbrunze2019-02-12 18:53:51 -0500
commit3dbe5d426fbd3512b402f2785b207b63a44131e9 (patch)
tree229741121151d5978a538bce9f9492701ad96236
parenteb4e0df329ced378fd08fb09a9c50d6128284c6c (diff)
parentef6658683666eb1a0e5bc25ac011c21156de7d76 (diff)
downloadorg.eclipse.openk.sourcesystem.mockupmeasurement-3dbe5d426fbd3512b402f2785b207b63a44131e9.tar.gz
org.eclipse.openk.sourcesystem.mockupmeasurement-3dbe5d426fbd3512b402f2785b207b63a44131e9.tar.xz
org.eclipse.openk.sourcesystem.mockupmeasurement-3dbe5d426fbd3512b402f2785b207b63a44131e9.zip
Task references: CICA-394
Reason: CIM Cache v2.20.0 - MS 5 - documentation, release and fixes Rationale: none Side effects: none # Conflicts: # .gitignore
-rw-r--r--.gitignore32
-rw-r--r--Jenkinsfile65
-rw-r--r--data/Measurments.xml117
-rw-r--r--data/example-post-measurement-values.rdf46
-rw-r--r--dev/adapter/pom.xml36
-rw-r--r--dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/MeasurementPoints_4_ApplicationXml_Responder.java98
-rw-r--r--dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/MeasurementValues_4_ApplicationXml_Responder.java84
-rw-r--r--dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/parameters/MeasurementPoints_4_ApplicationXml_RequestParameters.java116
-rw-r--r--dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/parameters/MeasurementValues_4_ApplicationXml_RequestParameters.java96
-rw-r--r--dev/adapter/src/main/resources/.gitignore0
-rw-r--r--dev/adapter/src/test/java/.gitignore0
-rw-r--r--dev/adapter/src/test/resources/.gitignore0
-rw-r--r--dev/core/pom.xml27
-rw-r--r--dev/core/src/main/java/.gitignore0
-rw-r--r--dev/core/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/core/MockUpMeasurementDefaults.java43
-rw-r--r--dev/core/src/main/resources/.gitignore0
-rw-r--r--dev/core/src/test/java/.gitignore0
-rw-r--r--dev/core/src/test/resources/.gitignore0
-rw-r--r--dev/infrastructure/pom.xml40
-rw-r--r--dev/infrastructure/src/main/java/.gitignore0
-rw-r--r--dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/measurement/MeasurementPoints_Get_Rest_EndPoint.java83
-rw-r--r--dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/measurement/MeasurementValues_Get_Rest_EndPoint.java83
-rw-r--r--dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/topologystate/MeasurementPoints_Get_Rest_EndPoint.java83
-rw-r--r--dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/topologystate/Measurements_Get_Rest_EndPoint.java83
-rw-r--r--dev/infrastructure/src/main/resources/.gitignore0
-rw-r--r--dev/infrastructure/src/test/java/.gitignore0
-rw-r--r--dev/infrastructure/src/test/resources/.gitignore0
-rw-r--r--dev/logic/pom.xml43
-rw-r--r--dev/logic/src/main/java/.gitignore0
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/AbstractMeasurementElementFactory.java129
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementElementFactory.java45
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementFactory.java45
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementModelFactory.java47
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementPointFactory.java44
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementElementFactoryParameters.java127
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementFactory.java50
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementFactoryParameters.java114
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementPointFactory.java46
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementPointFactoryParameters.java96
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/referencefactories/ReferenceMeasurementValueFactory.java485
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/AbstractSensorFactory.java106
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/ISensorFactory.java46
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/ISensorFactoryParameters.java32
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/SensorFactory.java44
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/SensorFactoryParameters.java56
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/GenerateMeasurements_1_Task.java119
-rw-r--r--dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/ResetMeasurements_1_Task.java118
-rw-r--r--dev/logic/src/main/resources/.gitignore0
-rw-r--r--dev/logic/src/test/java/.gitignore0
-rw-r--r--dev/logic/src/test/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/referencefactories/ReferenceMeasurementValueFactoryTest.java239
-rw-r--r--dev/logic/src/test/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/GenerateMeasurements_1_TaskTest.java98
-rw-r--r--dev/logic/src/test/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/ResetMeasurements_1_TaskTest.java95
-rw-r--r--dev/logic/src/test/resources/.gitignore0
-rw-r--r--dev/model/pom.xml41
-rw-r--r--dev/model/src/main/java/.gitignore0
-rw-r--r--dev/model/src/main/resources/.gitignore0
-rw-r--r--dev/model/src/test/java/.gitignore0
-rw-r--r--dev/model/src/test/resources/.gitignore0
-rw-r--r--dev/pom.xml30
-rw-r--r--dev/service/pom.xml39
-rw-r--r--dev/service/src/main/java/.gitignore0
-rw-r--r--dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/MeasurementPointIds.java288
-rw-r--r--dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/MockUpMeasurementService.java251
-rw-r--r--dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/DeserializerFactory.java61
-rw-r--r--dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/MapperFactory.java72
-rw-r--r--dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ModifierFactory.java59
-rw-r--r--dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ReceiverFactory.java60
-rw-r--r--dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ResponderFactory.java73
-rw-r--r--dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/SerializerFactory.java61
-rw-r--r--dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/TaskFactory.java60
-rw-r--r--dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ViewFactory.java62
-rw-r--r--dev/service/src/main/resources/.gitignore0
-rw-r--r--dev/service/src/main/resources/application.properties28
-rw-r--r--dev/service/src/main/resources/favicon.icobin0 -> 90814 bytes
-rw-r--r--dev/service/src/main/resources/logger-configuration.xml58
-rw-r--r--dev/service/src/test/java/.gitignore0
-rw-r--r--dev/service/src/test/resources/.gitignore0
-rw-r--r--doc/pom.xml182
-rw-r--r--doc/src/main/doc/attributes.adoc30
-rw-r--r--doc/src/main/doc/common/html-skin.css48
-rw-r--r--doc/src/main/doc/common/toc.adoc3
-rw-r--r--doc/src/main/doc/docs/appendix/appendix-assembly.adoc24
-rw-r--r--doc/src/main/doc/docs/appendix/modules/concept_get_started.adoc18
-rw-r--r--doc/src/main/doc/docs/appendix/modules/variations.adoc18
-rw-r--r--doc/src/main/doc/docs/architecture/architecture-assembly.adoc25
-rw-r--r--doc/src/main/doc/docs/architecture/modules/architecture-concept.adoc19
-rw-r--r--doc/src/main/doc/docs/architecture/modules/architecture-reference.adoc19
-rw-r--r--doc/src/main/doc/docs/architecture/modules/model-concept.adoc22
-rw-r--r--doc/src/main/doc/docs/documentation/admin-assembly.adoc26
-rw-r--r--doc/src/main/doc/docs/documentation/documentation-assembly.adoc30
-rw-r--r--doc/src/main/doc/docs/documentation/modules/admin-concept-de.adoc19
-rw-r--r--doc/src/main/doc/docs/documentation/modules/admin-procedure-de.adoc19
-rw-r--r--doc/src/main/doc/docs/documentation/modules/admin-reference-de.adoc19
-rw-r--r--doc/src/main/doc/docs/documentation/modules/description-concept-de.adoc24
-rw-r--r--doc/src/main/doc/docs/documentation/modules/interface-concept-de.adoc104
-rw-r--r--doc/src/main/doc/docs/documentation/modules/process-concept-de.adoc36
-rw-r--r--doc/src/main/doc/docs/documentation/modules/user-concept-de.adoc21
-rw-r--r--doc/src/main/doc/docs/documentation/modules/user-procedure-de.adoc19
-rw-r--r--doc/src/main/doc/docs/documentation/modules/user-reference-de.adoc19
-rw-r--r--doc/src/main/doc/docs/documentation/user-assembly.adoc25
-rw-r--r--doc/src/main/doc/docs/howto/howto-assembly.adoc28
-rw-r--r--doc/src/main/doc/docs/howto/modules/build-procedure-de.adoc18
-rw-r--r--doc/src/main/doc/docs/howto/modules/code-procedure-de.adoc20
-rw-r--r--doc/src/main/doc/docs/howto/modules/config-procedure-de.adoc22
-rw-r--r--doc/src/main/doc/docs/howto/modules/run-procedure-de.adoc18
-rw-r--r--doc/src/main/doc/docs/howto/modules/test-procedure-de.adoc18
-rw-r--r--doc/src/main/doc/docs/test/modules/test-cases-report.csv4
-rw-r--r--doc/src/main/doc/docs/test/modules/test-scripts-concept.adoc15
-rw-r--r--doc/src/main/doc/docs/test/test-assembly.adoc36
-rw-r--r--doc/src/main/doc/images/process/00_mock-up-measurement-service_starten_1_de.pngbin0 -> 46089 bytes
-rw-r--r--doc/src/main/doc/images/process/01_Messwerte_aktualisierenl_1_de.pngbin0 -> 41800 bytes
-rw-r--r--doc/src/main/doc/images/process/02_Messwerte_hinzufügen_1_de.pngbin0 -> 40299 bytes
-rw-r--r--doc/src/main/doc/images/process/03_Messwerte_abfragen.pngbin0 -> 125396 bytes
-rw-r--r--doc/src/main/doc/images/process/04_Messpunkte_abfragen.pngbin0 -> 125433 bytes
-rw-r--r--doc/src/main/doc/resources/api/source-system.electricity.measurement.measurement-points_GET_4_de.open-api.yaml240
-rw-r--r--doc/src/main/doc/resources/api/source-system.electricity.measurement.measurement-values_GET_4_de.open-api.yaml319
-rw-r--r--doc/src/main/doc/resources/process/00_mock-up-measurement-service_starten_1_de.bpmn214
-rw-r--r--doc/src/main/doc/resources/process/01_Messwerte_aktualisierenl_1_de.bpmn143
-rw-r--r--doc/src/main/doc/resources/process/02_Messwerte_hinzufügen_1_de.bpmn143
-rw-r--r--doc/src/main/doc/resources/process/03_Messwerte_abfragen.bpmn549
-rw-r--r--doc/src/main/doc/resources/process/04_Messpunkte_abfragen.bpmn549
-rw-r--r--doc/src/main/doc/resources/test/test.odsbin0 -> 17723 bytes
-rw-r--r--doc/src/main/doc/service-doc.adoc23
-rw-r--r--doc/src/test/doc/test/test.adoc20
124 files changed, 7734 insertions, 13 deletions
diff --git a/.gitignore b/.gitignore
index 9ce8af0..11c7b3a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,13 +1,19 @@
-*target/
-*.checkstyle
-*.classpath
-*.eclipse-pmd
-*.idea
-*.iml
-*.project
-*.settings/
-*.springBeans
-*.log
-*.versionsBackup
-*.fbExcludeFilterFile
-*.fbIncludeFilterFile \ No newline at end of file
+**/*target/
+**/*.checkstyle
+**/*.classpath
+**/*.fbExcludeFilterFile
+**/*.fbIncludeFilterFile
+**/*.idea
+**/*.iml
+**/*.jdbc
+**/*.log
+**/*.project
+**/*.settings/
+**/*.springBeans
+**/*.versionsBackup
+**/launch.json
+**/node_modules/**
+**/package-lock.json
+bin/
+obj/
+.vs/ \ No newline at end of file
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..07b6ef7
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,65 @@
+pipeline {
+ agent any
+ tools {
+ maven 'apache-maven-latest'
+ jdk 'jdk1.8.0-latest'
+ }
+
+ stages {
+ stage ('prepare') {
+ steps {
+ cleanWs()
+ checkout scm
+ }
+ }
+ stage ('build') {
+ steps {
+ sh 'mvn -version'
+ sh 'java -version'
+ sh 'mvn -f dev/pom.xml -B clean install site -DskipTests'
+ }
+ }
+
+ stage ('test') {
+ steps {
+ sh 'mvn -version'
+ sh 'java -version'
+ sh 'mvn -f dev/pom.xml -B test -Dcheckstyle.skip=true -Dfindbugs.skip=true -Dpmd.skip=true'
+ junit allowEmptyResults: true, testResults: '**/surefire-reports/TEST*.xml'
+ jacoco()
+ }
+ }
+
+ stage("Publish Checkstyle & PMD & Findbugs Results"){
+ steps {
+ checkstyle canComputeNew: false, defaultEncoding: '', healthy: '', pattern: '**/checkstyle-result*.xml', unHealthy: '', unstableTotalAll:'0'
+ pmd canComputeNew: false, defaultEncoding: '', healthy: '', pattern: '**/target/pmd.xml', unHealthy: ''
+ findbugs canComputeNew: false, defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', pattern: '**/findbugsXml.xml', unHealthy: ''
+ }
+ }
+
+ stage("Publish Checkstyle & PMD & Findbugs Results"){
+ steps {
+ sh 'mvn -f dev/pom.xml -B clean install site -DskipTests'
+ }
+ }
+
+ stage ('deploy snapshot') {
+ when {
+ branch 'develop'
+ }
+ steps {
+ sh 'mvn -f dev/pom.xml -B deploy -DskipTests -Dcheckstyle.skip=true -Dfindbugs.skip=true -Dpmd.skip=true -DaltDeploymentRepository=repo.eclipse.org::default::https://repo.eclipse.org/content/repositories/openk-platform-snapshots/'
+ }
+ }
+
+ stage ('deploy release') {
+ when {
+ branch 'master'
+ }
+ steps {
+ sh 'mvn -f dev/pom.xml -B deploy -DskipTests -Dcheckstyle.skip=true -Dfindbugs.skip=true -Dpmd.skip=true -DaltDeploymentRepository=repo.eclipse.org::default::https://repo.eclipse.org/content/repositories/openk-platform-release/'
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/data/Measurments.xml b/data/Measurments.xml
new file mode 100644
index 0000000..360ff1b
--- /dev/null
+++ b/data/Measurments.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ResponseMessage>
+ <Header>
+ <Verb>reply</Verb>
+ <Noun>measurements</Noun>
+ <Revision>2</Revision>
+ <Timestamp>2018-10-09T17:42:06.160Z</Timestamp>
+ <Source>MockUpMeasurementService</Source>
+ <MessageID>4d73c742-eebb-4de4-a210-af5c835b8ca6</MessageID>
+ </Header>
+ <Reply>
+ <Result>OK</Result>
+ </Reply>
+ <Payload>
+ <Measurements>
+ <PowerSystemResource>
+ <mRID>ce9e868a-d575-4688-aef4-fb217919ec2e</mRID>
+ <Measurements>
+ <Analog>
+ <description>MeasurementValue (bc7a6811-5ed9-4590-becc-658dfd26766f)</description>
+ <mRID>bc7a6811-5ed9-4590-becc-658dfd26766f</mRID>
+ <name>MeasurementValue</name>
+ <measurementType>ThreePhaseActivePower</measurementType>
+ <unitMultiplier>none</unitMultiplier>
+ <unitSymbol>W</unitSymbol>
+ <AnalogValues>
+ <AnalogValue>
+ <timeStamp>2018-10-09T15:42:03.223Z</timeStamp>
+ <value>493273.7204895288</value>
+ </AnalogValue>
+ </AnalogValues>
+ </Analog>
+ <Analog>
+ <description>MeasurementValue (d990de6e-5e50-46bf-88cf-da0aa6db3d0b)</description>
+ <mRID>d990de6e-5e50-46bf-88cf-da0aa6db3d0b</mRID>
+ <name>MeasurementValue</name>
+ <measurementType>ThreePhaseActivePower</measurementType>
+ <unitMultiplier>none</unitMultiplier>
+ <unitSymbol>W</unitSymbol>
+ <AnalogValues>
+ <AnalogValue>
+ <timeStamp>2018-10-09T15:41:54.158Z</timeStamp>
+ <value>3502788.358828883</value>
+ </AnalogValue>
+ </AnalogValues>
+ </Analog>
+ </Measurements>
+ </PowerSystemResource>
+ <PowerSystemResource>
+ <mRID>043d903a-5702-4451-9613-4476e57e6a6d</mRID>
+ <Measurements>
+ <Analog>
+ <description>MeasurementValue (f7d360ea-ffdd-481a-8e18-29b2cdd03348)</description>
+ <mRID>f7d360ea-ffdd-481a-8e18-29b2cdd03348</mRID>
+ <name>MeasurementValue</name>
+ <measurementType>ThreePhaseActivePower</measurementType>
+ <unitMultiplier>none</unitMultiplier>
+ <unitSymbol>W</unitSymbol>
+ <AnalogValues>
+ <AnalogValue>
+ <timeStamp>2018-10-09T15:42:03.223Z</timeStamp>
+ <value>5211564.995472075</value>
+ </AnalogValue>
+ </AnalogValues>
+ </Analog>
+ <Analog>
+ <description>MeasurementValue (3ec1f0c7-7ec0-47b5-87b6-632d47624eda)</description>
+ <mRID>3ec1f0c7-7ec0-47b5-87b6-632d47624eda</mRID>
+ <name>MeasurementValue</name>
+ <measurementType>ThreePhaseActivePower</measurementType>
+ <unitMultiplier>none</unitMultiplier>
+ <unitSymbol>W</unitSymbol>
+ <AnalogValues>
+ <AnalogValue>
+ <timeStamp>2018-10-09T15:41:54.157Z</timeStamp>
+ <value>4549622.346439285</value>
+ </AnalogValue>
+ </AnalogValues>
+ </Analog>
+ </Measurements>
+ </PowerSystemResource>
+ <PowerSystemResource>
+ <mRID>1c0b7ae1-1d28-4599-8659-ddda708b31c1</mRID>
+ <Measurements>
+ <Analog>
+ <description>MeasurementValue (08eb71db-78cb-4cb6-b4e0-ae95a5f3816a)</description>
+ <mRID>08eb71db-78cb-4cb6-b4e0-ae95a5f3816a</mRID>
+ <name>MeasurementValue</name>
+ <measurementType>ThreePhaseActivePower</measurementType>
+ <unitMultiplier>none</unitMultiplier>
+ <unitSymbol>W</unitSymbol>
+ <AnalogValues>
+ <AnalogValue>
+ <timeStamp>2018-10-09T15:41:54.158Z</timeStamp>
+ <value>7825336.164771295</value>
+ </AnalogValue>
+ </AnalogValues>
+ </Analog>
+ <Analog>
+ <description>MeasurementValue (228259d1-6245-47ad-94e8-2d900afab573)</description>
+ <mRID>228259d1-6245-47ad-94e8-2d900afab573</mRID>
+ <name>MeasurementValue</name>
+ <measurementType>ThreePhaseActivePower</measurementType>
+ <unitMultiplier>none</unitMultiplier>
+ <unitSymbol>W</unitSymbol>
+ <AnalogValues>
+ <AnalogValue>
+ <timeStamp>2018-10-09T15:42:03.223Z</timeStamp>
+ <value>439128.49047589855</value>
+ </AnalogValue>
+ </AnalogValues>
+ </Analog>
+ </Measurements>
+ </PowerSystemResource>
+ </Measurements>
+ </Payload>
+</ResponseMessage> \ No newline at end of file
diff --git a/data/example-post-measurement-values.rdf b/data/example-post-measurement-values.rdf
new file mode 100644
index 0000000..b37efa5
--- /dev/null
+++ b/data/example-post-measurement-values.rdf
@@ -0,0 +1,46 @@
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:model="http://www.eclipse.org/openk/service/model#">
+ <MeasurementValue rdf:ID="a4ca4681-91c8-49d2-b662-3b617ea4fbef">
+ <AbstractEntity.description>MeasurementValue (a4ca4681-91c8-49d2-b662-3b617ea4fbef)</AbstractEntity.description>
+ <AbstractEntity.name>MeasurementValue</AbstractEntity.name>
+ <AbstractMeasurement.creation>2018-11-07T11:20:53.677Z</AbstractMeasurement.creation>
+ <AbstractMeasurement.measurementPoint rdf:resource="#55ee7075-0059-488e-84da-6cc4b0d9fd37" />
+ <AbstractMeasurement.measurementType>ThreePhaseActivePower</AbstractMeasurement.measurementType>
+ <MeasurementValue.value>3.9871805524166815E7</MeasurementValue.value>
+ </MeasurementValue>
+ <MeasurementValue rdf:ID="55b713ee-b611-45d3-b521-f79b72eff14e">
+ <AbstractEntity.description>MeasurementValue (55b713ee-b611-45d3-b521-f79b72eff14e)</AbstractEntity.description>
+ <AbstractEntity.name>MeasurementValue</AbstractEntity.name>
+ <AbstractMeasurement.creation>2018-11-07T11:20:53.677Z</AbstractMeasurement.creation>
+ <AbstractMeasurement.measurementPoint rdf:resource="#55ee7075-0059-488e-84da-6cc4b0d9fd37" />
+ <AbstractMeasurement.measurementType>LineToLineVoltage</AbstractMeasurement.measurementType>
+ <MeasurementValue.value>20463.554467193295</MeasurementValue.value>
+ </MeasurementValue>
+ <MeasurementValue rdf:ID="59c0c72d-d957-4089-b636-55e3c744a63a">
+ <AbstractEntity.description>MeasurementValue (59c0c72d-d957-4089-b636-55e3c744a63a)</AbstractEntity.description>
+ <AbstractEntity.name>MeasurementValue</AbstractEntity.name>
+ <AbstractMeasurement.creation>2018-11-07T11:20:53.677Z</AbstractMeasurement.creation>
+ <AbstractMeasurement.measurementPoint rdf:resource="#55ee7075-0059-488e-84da-6cc4b0d9fd37" />
+ <AbstractMeasurement.measurementType>LineCurrent</AbstractMeasurement.measurementType>
+ <MeasurementValue.value>1.6292341975538136</MeasurementValue.value>
+ </MeasurementValue>
+ <MeasurementPoint rdf:ID="55ee7075-0059-488e-84da-6cc4b0d9fd37">
+ <AbstractEntity.description>MeasurementPoint (55ee7075-0059-488e-84da-6cc4b0d9fd37)</AbstractEntity.description>
+ <AbstractEntity.name>MeasurementPoint</AbstractEntity.name>
+ <MeasurementPoint.measurementPointType>Terminal</MeasurementPoint.measurementPointType>
+ <MeasurementPoint.sensors rdf:resource="#050af21e-7b86-48ab-a78b-938a85b64864" />
+ <MeasurementPoint.sensors rdf:resource="#6e31346e-58be-43fe-9430-04a214e12fb2" />
+ <MeasurementPoint.sensors rdf:resource="#a5ccb61c-19c8-45a1-ae2b-c176ff234b01" />
+ </MeasurementPoint>
+ <Sensor rdf:ID="050af21e-7b86-48ab-a78b-938a85b64864">
+ <AbstractEntity.description>LineCurrent</AbstractEntity.description>
+ <Sensor.measurementType>LineCurrent</Sensor.measurementType>
+ </Sensor>
+ <Sensor rdf:ID="6e31346e-58be-43fe-9430-04a214e12fb2">
+ <AbstractEntity.description>LineToLineVoltage</AbstractEntity.description>
+ <Sensor.measurementType>LineToLineVoltage</Sensor.measurementType>
+ </Sensor>
+ <Sensor rdf:ID="a5ccb61c-19c8-45a1-ae2b-c176ff234b01">
+ <AbstractEntity.description>ThreePhaseActivePower</AbstractEntity.description>
+ <Sensor.measurementType>ThreePhaseActivePower</Sensor.measurementType>
+ </Sensor>
+</rdf:RDF>
diff --git a/dev/adapter/pom.xml b/dev/adapter/pom.xml
new file mode 100644
index 0000000..5965a8b
--- /dev/null
+++ b/dev/adapter/pom.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.eclipse.openk.source-system.mock-up-measurement</groupId>
+ <artifactId>mock-up-measurement-adapter</artifactId>
+ <version>2.20.0</version>
+ <packaging>jar</packaging>
+
+ <name>${project.groupId}.${project.artifactId}</name>
+
+ <parent>
+ <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+ <artifactId>build-parentpom-adapter</artifactId>
+ <version>2.20.0</version>
+ <relativePath></relativePath>
+ </parent>
+
+ <dependencies>
+ <!-- org.eclipse -->
+ <dependency>
+ <groupId>org.eclipse.openk.source-system.mock-up-measurement</groupId>
+ <artifactId>mock-up-measurement-logic</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.openk.service</groupId>
+ <artifactId>service-adapter</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+
+ </dependencies>
+</project> \ No newline at end of file
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/MeasurementPoints_4_ApplicationXml_Responder.java b/dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/MeasurementPoints_4_ApplicationXml_Responder.java
new file mode 100644
index 0000000..72d9696
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/MeasurementPoints_4_ApplicationXml_Responder.java
@@ -0,0 +1,98 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.measurement.adapter.responder;
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ */
+
+import java.util.Collection;
+
+import org.eclipse.openk.cim.cim17v07.Cim17v07;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+import org.eclipse.openk.common.dataexchange.MediaType;
+import org.eclipse.openk.common.dataexchange.cim.message.ICimHeaderParameters;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+import org.eclipse.openk.domain.measurement.core.MeasurementDefaults;
+import org.eclipse.openk.domain.measurement.logic.view.parameters.IMeasurementPointsQueryParameters;
+import org.eclipse.openk.domain.measurement.model.MeasurementModel;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementPoint;
+import org.eclipse.openk.service.adapter.responder.AbstractCimResponder;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.mapper.MapperInformation;
+import org.eclipse.openk.service.core.adapter.responder.IResponder;
+import org.eclipse.openk.service.core.adapter.responder.ResponderConfiguration;
+import org.eclipse.openk.service.core.adapter.responder.ResponderInformation;
+import org.eclipse.openk.service.core.adapter.serializer.SerializerInformation;
+import org.eclipse.openk.service.core.logic.view.ViewInformation;
+import org.eclipse.openk.sourcesystem.measurement.adapter.responder.parameters.MeasurementPoints_4_ApplicationXml_RequestParameters;
+
+/**
+ * The {@link IResponder} for {@link MeasurementPoint}s.
+ *
+ * @author 2018-10-09 Christian Brunzendorf
+ */
+@MapperInformation(scope = MeasurementDefaults.SCOPE_MEASUREMENT_POINTS, sourceModelDefinitionType = MeasurementModel.class, destinationModelDefinitionType = Cim17v07.class)
+@ResponderInformation(scope = MeasurementDefaults.SCOPE_MEASUREMENT_POINTS, exportModelDefinitionType = Cim17v07.class, version = 4, exportFormat = MediaType.ApplicationXml, parametersType = MeasurementPoints_4_ApplicationXml_RequestParameters.class)
+@SerializerInformation(scope = MeasurementDefaults.DOMAIN, outputFormat = MediaType.ApplicationXml, inputModelDefinitionType = Cim17v07.class, parametersType = ICimHeaderParameters.class)
+@ViewInformation(scope = MeasurementDefaults.SCOPE_MEASUREMENT_POINTS, parametersType = IMeasurementPointsQueryParameters.class)
+@SuppressWarnings("checkstyle:magicnumber")
+@SuppressWarningsReason(reasons = Reason.Checkstyle_MagicNumberAsComponentVersion)
+public final class MeasurementPoints_4_ApplicationXml_Responder extends AbstractCimResponder<ResponderConfiguration, Collection<MeasurementPoint>, Collection<IdentifiedObject>, MeasurementPoints_4_ApplicationXml_RequestParameters> {
+
+ // Constants
+ private static final ILogger LOGGER = LoggerFactory.createLogger(MeasurementPoints_4_ApplicationXml_Responder.class);
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public MeasurementPoints_4_ApplicationXml_Responder(IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ protected Object createQueryParameters(MeasurementPoints_4_ApplicationXml_RequestParameters requestParameters) throws IllegalArgumentException {
+
+ return requestParameters;
+ }
+
+ // Properties
+ @Override
+ public ILogger getLogger() {
+
+ return LOGGER;
+ }
+} \ No newline at end of file
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/MeasurementValues_4_ApplicationXml_Responder.java b/dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/MeasurementValues_4_ApplicationXml_Responder.java
new file mode 100644
index 0000000..8ab8b7a
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/MeasurementValues_4_ApplicationXml_Responder.java
@@ -0,0 +1,84 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.measurement.adapter.responder;
+
+import java.util.Collection;
+
+import org.eclipse.openk.cim.cim17v07.Cim17v07;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+import org.eclipse.openk.common.dataexchange.MediaType;
+import org.eclipse.openk.common.dataexchange.cim.message.ICimHeaderParameters;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+import org.eclipse.openk.domain.measurement.core.MeasurementDefaults;
+import org.eclipse.openk.domain.measurement.logic.view.parameters.MeasurementValues_1_QueryParameters;
+import org.eclipse.openk.domain.measurement.model.MeasurementModel;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementValue;
+import org.eclipse.openk.service.adapter.responder.AbstractCimResponder;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.mapper.MapperInformation;
+import org.eclipse.openk.service.core.adapter.responder.ResponderConfiguration;
+import org.eclipse.openk.service.core.adapter.responder.ResponderInformation;
+import org.eclipse.openk.service.core.adapter.serializer.SerializerInformation;
+import org.eclipse.openk.service.core.logic.view.ViewInformation;
+import org.eclipse.openk.sourcesystem.measurement.adapter.responder.parameters.MeasurementValues_4_ApplicationXml_RequestParameters;
+
+/**
+ * The measurements responder.
+ *
+ * @author 2018-10-10 Christian Brunzendorf
+ */
+@MapperInformation(scope = MeasurementDefaults.SCOPE_MEASUREMENT_VALUES, sourceModelDefinitionType = MeasurementModel.class, destinationModelDefinitionType = Cim17v07.class)
+@ResponderInformation(scope = MeasurementDefaults.SCOPE_MEASUREMENT_VALUES, version = 4, exportModelDefinitionType = Cim17v07.class, exportFormat = MediaType.ApplicationXml, parametersType = MeasurementValues_4_ApplicationXml_RequestParameters.class)
+@SerializerInformation(scope = MeasurementDefaults.DOMAIN, outputFormat = MediaType.ApplicationXml, inputModelDefinitionType = Cim17v07.class, parametersType = ICimHeaderParameters.class)
+@ViewInformation(scope = MeasurementDefaults.SCOPE_MEASUREMENT_VALUES, parametersType = MeasurementValues_1_QueryParameters.class)
+@SuppressWarnings("checkstyle:magicnumber")
+@SuppressWarningsReason(reasons = Reason.Checkstyle_MagicNumberAsComponentVersion)
+public final class MeasurementValues_4_ApplicationXml_Responder extends AbstractCimResponder<ResponderConfiguration, Collection<MeasurementValue>, Collection<IdentifiedObject>, MeasurementValues_4_ApplicationXml_RequestParameters> {
+
+ // Constants
+ private static final ILogger LOGGER = LoggerFactory.createLogger(MeasurementValues_4_ApplicationXml_Responder.class);
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public MeasurementValues_4_ApplicationXml_Responder(IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ protected Object createQueryParameters(MeasurementValues_4_ApplicationXml_RequestParameters requestParameters) throws IllegalArgumentException {
+
+ return requestParameters;
+ }
+
+ // Properties
+ @Override
+ public ILogger getLogger() {
+
+ return LOGGER;
+ }
+} \ No newline at end of file
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/parameters/MeasurementPoints_4_ApplicationXml_RequestParameters.java b/dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/parameters/MeasurementPoints_4_ApplicationXml_RequestParameters.java
new file mode 100644
index 0000000..0f8930d
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/parameters/MeasurementPoints_4_ApplicationXml_RequestParameters.java
@@ -0,0 +1,116 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.measurement.adapter.responder.parameters;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.UUID;
+
+import org.eclipse.openk.common.dataexchange.cim.message.CimMessageDefaults;
+import org.eclipse.openk.common.dataexchange.cim.message.ICimHeaderParameters;
+import org.eclipse.openk.common.date.DateDefaults;
+import org.eclipse.openk.common.model.attribute.value.annotations.IntegerValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.ListValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.LocalDateTimeValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.StringValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.Value;
+import org.eclipse.openk.common.model.attribute.value.definitions.items.ItemEncoder;
+import org.eclipse.openk.domain.measurement.logic.view.parameters.IMeasurementPointsQueryParameters;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementType;
+import org.eclipse.openk.sourcesystem.measurement.adapter.responder.MeasurementPoints_4_ApplicationXml_Responder;
+
+/**
+ * The request parameters for the {@link MeasurementPoints_4_ApplicationXml_Responder}.
+ *
+ * @author 2018-10-10 Christian Brunzendorf
+ */
+public final class MeasurementPoints_4_ApplicationXml_RequestParameters implements ICimHeaderParameters, IMeasurementPointsQueryParameters {
+
+ // Constants
+ public static final String NOUN = "get";
+
+ // Attributes
+ @ListValidator(itemType = MeasurementType.class, itemEncoder = ItemEncoder.class)
+ @Value(name = PARAMETER_MEASUREMENT_TYPES)
+ private List<MeasurementType> measurementTypes;
+
+ @Value(name = PARAMETER_MESSAGE_ID)
+ private UUID messageId;
+
+ @IntegerValidator(minValue = 1)
+ @Value(name = PARAMETER_REVISION, optional = false)
+ private int revision;
+
+ @StringValidator(minLength = 1, maxLength = CimMessageDefaults.MAX_SOURCE_LENGTH)
+ @Value(name = PARAMETER_SOURCE)
+ private String source;
+
+ @LocalDateTimeValidator(dateFormat = DateDefaults.DATE_TIME_FORMATTER_PATTERN_UTC_TIMESTAMP)
+ @Value(name = PARAMETER_TIMESTAMP)
+ private LocalDateTime timestamp;
+
+ @StringValidator(minLength = 1, maxLength = CimMessageDefaults.MAX_USER_ID_LENGTH)
+ @Value(name = PARAMETER_USER_ID, optional = true)
+ private String userId;
+
+ // Properties
+ @Override
+ public List<UUID> getEquipmentContainerIds() {
+
+ return null;
+ }
+
+ @Override
+ public List<MeasurementType> getMeasurementTypes() {
+
+ return measurementTypes;
+ }
+
+ @Override
+ public UUID getMessageId() {
+
+ return messageId;
+ }
+
+ @Override
+ public String getNoun() {
+
+ return NOUN;
+ }
+
+ @Override
+ public int getRevision() {
+
+ return revision;
+ }
+
+ @Override
+ public String getSource() {
+
+ return source;
+ }
+
+ @Override
+ public LocalDateTime getTimestamp() {
+
+ return timestamp;
+ }
+
+ @Override
+ public String getUserId() {
+
+ return userId;
+ }
+} \ No newline at end of file
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/parameters/MeasurementValues_4_ApplicationXml_RequestParameters.java b/dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/parameters/MeasurementValues_4_ApplicationXml_RequestParameters.java
new file mode 100644
index 0000000..29a9ef5
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/sourcesystem/measurement/adapter/responder/parameters/MeasurementValues_4_ApplicationXml_RequestParameters.java
@@ -0,0 +1,96 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.measurement.adapter.responder.parameters;
+
+import java.time.LocalDateTime;
+import java.util.UUID;
+
+import org.eclipse.openk.common.dataexchange.cim.message.CimMessageDefaults;
+import org.eclipse.openk.common.dataexchange.cim.message.ICimHeaderParameters;
+import org.eclipse.openk.common.date.DateDefaults;
+import org.eclipse.openk.common.model.attribute.value.annotations.IntegerValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.LocalDateTimeValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.StringValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.Value;
+import org.eclipse.openk.domain.measurement.logic.view.parameters.MeasurementValues_1_QueryParameters;
+import org.eclipse.openk.sourcesystem.measurement.adapter.responder.MeasurementValues_4_ApplicationXml_Responder;
+
+/**
+ * The request parameters for the {@link MeasurementValues_4_ApplicationXml_Responder}.
+ *
+ * @author 2018-10-10 Christian Brunzendorf
+ */
+public final class MeasurementValues_4_ApplicationXml_RequestParameters extends MeasurementValues_1_QueryParameters implements ICimHeaderParameters {
+
+ // Constants
+ public static final String NOUN = "get";
+
+ // Attributes
+ @Value(name = PARAMETER_MESSAGE_ID)
+ private UUID messageId;
+
+ @IntegerValidator(minValue = 1)
+ @Value(name = PARAMETER_REVISION, optional = false)
+ private int revision;
+
+ @StringValidator(minLength = 1, maxLength = CimMessageDefaults.MAX_SOURCE_LENGTH)
+ @Value(name = PARAMETER_SOURCE)
+ private String source;
+
+ @LocalDateTimeValidator(dateFormat = DateDefaults.DATE_TIME_FORMATTER_PATTERN_UTC_TIMESTAMP)
+ @Value(name = PARAMETER_TIMESTAMP)
+ private LocalDateTime timestamp;
+
+ @StringValidator(minLength = 1, maxLength = CimMessageDefaults.MAX_USER_ID_LENGTH)
+ @Value(name = PARAMETER_USER_ID, optional = true)
+ private String userId;
+
+ // Properties
+ @Override
+ public UUID getMessageId() {
+
+ return messageId;
+ }
+
+ @Override
+ public String getNoun() {
+
+ return NOUN;
+ }
+
+ @Override
+ public int getRevision() {
+
+ return revision;
+ }
+
+ @Override
+ public String getSource() {
+
+ return source;
+ }
+
+ @Override
+ public LocalDateTime getTimestamp() {
+
+ return timestamp;
+ }
+
+ @Override
+ public String getUserId() {
+
+ return userId;
+ }
+} \ No newline at end of file
diff --git a/dev/adapter/src/main/resources/.gitignore b/dev/adapter/src/main/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/adapter/src/main/resources/.gitignore
diff --git a/dev/adapter/src/test/java/.gitignore b/dev/adapter/src/test/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/adapter/src/test/java/.gitignore
diff --git a/dev/adapter/src/test/resources/.gitignore b/dev/adapter/src/test/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/adapter/src/test/resources/.gitignore
diff --git a/dev/core/pom.xml b/dev/core/pom.xml
new file mode 100644
index 0000000..b3e3c0f
--- /dev/null
+++ b/dev/core/pom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.eclipse.openk.source-system.mock-up-measurement</groupId>
+ <artifactId>mock-up-measurement-core</artifactId>
+ <version>2.20.0</version>
+ <name>${project.groupId}.${project.artifactId}</name>
+
+ <parent>
+ <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+ <artifactId>build-parentpom-core</artifactId>
+ <version>2.20.0</version>
+ <relativePath></relativePath>
+ </parent>
+
+ <dependencies>
+ <!-- org.eclipse.openk -->
+ <dependency>
+ <groupId>org.eclipse.openk.service</groupId>
+ <artifactId>service-core</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+ </dependencies>
+</project> \ No newline at end of file
diff --git a/dev/core/src/main/java/.gitignore b/dev/core/src/main/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/core/src/main/java/.gitignore
diff --git a/dev/core/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/core/MockUpMeasurementDefaults.java b/dev/core/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/core/MockUpMeasurementDefaults.java
new file mode 100644
index 0000000..4b1ba93
--- /dev/null
+++ b/dev/core/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/core/MockUpMeasurementDefaults.java
@@ -0,0 +1,43 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.core;
+
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+
+/**
+ * Defines some mock-up-measurement defaults.
+ *
+ * @author 2018-09-29 Felix Korb
+ * @author 2018-10-29 Renko Ortgies
+ */
+public final class MockUpMeasurementDefaults {
+
+ // Constants
+ /* domains */
+ public static final String DOMAIN = "mock-up-measurement";
+
+ /* tasks */
+ public static final String TASK_GENERATE_MEASUREMENTS = "generate-measurments";
+ public static final String TASK_RESET_MEASUREMENTS = "reset-measurments";
+
+ // Constructors
+ @SuppressWarnings("checkstyle:javadocmethod")
+ @SuppressWarningsReason(reasons = Reason.Checkstyle_ConstructorWithoutParameter)
+ private MockUpMeasurementDefaults() {
+
+ /* suppresses the instantiation! */
+ }
+} \ No newline at end of file
diff --git a/dev/core/src/main/resources/.gitignore b/dev/core/src/main/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/core/src/main/resources/.gitignore
diff --git a/dev/core/src/test/java/.gitignore b/dev/core/src/test/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/core/src/test/java/.gitignore
diff --git a/dev/core/src/test/resources/.gitignore b/dev/core/src/test/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/core/src/test/resources/.gitignore
diff --git a/dev/infrastructure/pom.xml b/dev/infrastructure/pom.xml
new file mode 100644
index 0000000..88c72df
--- /dev/null
+++ b/dev/infrastructure/pom.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.eclipse.openk.source-system.mock-up-measurement</groupId>
+ <artifactId>mock-up-measurement-infrastructure</artifactId>
+ <version>2.20.0</version>
+ <packaging>jar</packaging>
+
+ <name>${project.groupId}.${project.artifactId}</name>
+
+ <parent>
+ <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+ <artifactId>build-parentpom-infrastructure</artifactId>
+ <version>2.20.0</version>
+ <relativePath></relativePath>
+ </parent>
+
+ <build>
+ <finalName>${project.artifactId}-${project.version}</finalName>
+ </build>
+
+ <dependencies>
+ <!-- org.eclipse -->
+ <dependency>
+ <groupId>org.eclipse.openk.source-system.mock-up-measurement</groupId>
+ <artifactId>mock-up-measurement-adapter</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.openk.service</groupId>
+ <artifactId>service-infrastructure</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+ </dependencies>
+
+</project> \ No newline at end of file
diff --git a/dev/infrastructure/src/main/java/.gitignore b/dev/infrastructure/src/main/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/infrastructure/src/main/java/.gitignore
diff --git a/dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/measurement/MeasurementPoints_Get_Rest_EndPoint.java b/dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/measurement/MeasurementPoints_Get_Rest_EndPoint.java
new file mode 100644
index 0000000..65ed9d9
--- /dev/null
+++ b/dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/measurement/MeasurementPoints_Get_Rest_EndPoint.java
@@ -0,0 +1,83 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.infrastructure.endpoint.measurement;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.openk.common.dataexchange.MediaType;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.domain.measurement.core.MeasurementDefaults;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementPoint;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.infrastructure.endpoint.AbstractCimHttpGetRestEndPoint;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * The <i>http-REST GET</i> end point for {@link MeasurementPoint}s.
+ *
+ * @author 2018-10-09 Christian Brunzendorf
+ * @author 2018-04-22 Felix Korb
+ * @author 2017-10-24 Frank Jäger
+ */
+@Configurable
+@CrossOrigin
+@RequestMapping(path = "/source-system/electricity/measurement")
+@RestController(value = "source-system/electricity/measurement/measurement-points")
+public final class MeasurementPoints_Get_Rest_EndPoint extends AbstractCimHttpGetRestEndPoint {
+
+ // Constants
+ private static final ILogger LOGGER = LoggerFactory.createLogger(MeasurementPoints_Get_Rest_EndPoint.class);
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public MeasurementPoints_Get_Rest_EndPoint(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ @GetMapping(path = "/measurement-points", produces = "application/xml")
+ public void get(HttpServletRequest request, @PathVariable Map<String, String> pathVars, @RequestParam Map<String, String> requestProperties, HttpServletResponse response) {
+
+ processRequest(MeasurementDefaults.SCOPE_MEASUREMENT_POINTS, request, pathVars, requestProperties, MediaType.TextPlain, response, MediaType.ApplicationXml);
+ }
+
+ // Properties
+ @Override
+ public ILogger getLogger() {
+
+ return LOGGER;
+ }
+} \ No newline at end of file
diff --git a/dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/measurement/MeasurementValues_Get_Rest_EndPoint.java b/dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/measurement/MeasurementValues_Get_Rest_EndPoint.java
new file mode 100644
index 0000000..a6a43a5
--- /dev/null
+++ b/dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/measurement/MeasurementValues_Get_Rest_EndPoint.java
@@ -0,0 +1,83 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.infrastructure.endpoint.measurement;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.openk.common.dataexchange.MediaType;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.domain.measurement.core.MeasurementDefaults;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementValue;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.infrastructure.endpoint.AbstractCimHttpGetRestEndPoint;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * The <i>http-REST GET</i> end point for {@link MeasurementValue}s.
+ *
+ * @author 2018-10-09 Christian Brunzendorf
+ * @author 2018-04-22 Felix Korb
+ * @author 2017-10-24 Frank Jäger
+ */
+@Configurable
+@CrossOrigin
+@RequestMapping(path = "/source-system/electricity/measurement")
+@RestController(value = "source-system/electricity/measurement/measurement-values")
+public final class MeasurementValues_Get_Rest_EndPoint extends AbstractCimHttpGetRestEndPoint {
+
+ // Constants
+ private static final ILogger LOGGER = LoggerFactory.createLogger(MeasurementValues_Get_Rest_EndPoint.class);
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public MeasurementValues_Get_Rest_EndPoint(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ @GetMapping(path = "/measurement-values", produces = "application/xml")
+ public void get(HttpServletRequest request, @PathVariable Map<String, String> pathVars, @RequestParam Map<String, String> requestProperties, HttpServletResponse response) {
+
+ processRequest(MeasurementDefaults.SCOPE_MEASUREMENT_VALUES, request, pathVars, requestProperties, MediaType.TextPlain, response, MediaType.ApplicationXml);
+ }
+
+ // Properties
+ @Override
+ public ILogger getLogger() {
+
+ return LOGGER;
+ }
+} \ No newline at end of file
diff --git a/dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/topologystate/MeasurementPoints_Get_Rest_EndPoint.java b/dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/topologystate/MeasurementPoints_Get_Rest_EndPoint.java
new file mode 100644
index 0000000..1860596
--- /dev/null
+++ b/dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/topologystate/MeasurementPoints_Get_Rest_EndPoint.java
@@ -0,0 +1,83 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.infrastructure.endpoint.topologystate;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.openk.common.dataexchange.MediaType;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.domain.measurement.core.MeasurementDefaults;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementPoint;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.infrastructure.endpoint.AbstractCimHttpGetRestEndPoint;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * The <i>http-REST GET</i> end point for {@link MeasurementPoint}s.
+ *
+ * @author 2018-10-09 Christian Brunzendorf
+ * @author 2018-04-22 Felix Korb
+ * @author 2017-10-24 Frank Jäger
+ */
+@Configurable
+@CrossOrigin
+@RequestMapping(path = "/source-system/electricity/topology-state")
+@RestController(value = "source-system/electricity/topology-state/measurement-points")
+public final class MeasurementPoints_Get_Rest_EndPoint extends AbstractCimHttpGetRestEndPoint {
+
+ // Constants
+ private static final ILogger LOGGER = LoggerFactory.createLogger(MeasurementPoints_Get_Rest_EndPoint.class);
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public MeasurementPoints_Get_Rest_EndPoint(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ @GetMapping(path = "/measurement-points", produces = "application/xml")
+ public void get(HttpServletRequest request, @PathVariable Map<String, String> pathVars, @RequestParam Map<String, String> requestProperties, HttpServletResponse response) {
+
+ processRequest(MeasurementDefaults.SCOPE_MEASUREMENT_POINTS, request, pathVars, requestProperties, MediaType.TextPlain, response, MediaType.ApplicationXml);
+ }
+
+ // Properties
+ @Override
+ public ILogger getLogger() {
+
+ return LOGGER;
+ }
+} \ No newline at end of file
diff --git a/dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/topologystate/Measurements_Get_Rest_EndPoint.java b/dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/topologystate/Measurements_Get_Rest_EndPoint.java
new file mode 100644
index 0000000..b75f37c
--- /dev/null
+++ b/dev/infrastructure/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/infrastructure/endpoint/topologystate/Measurements_Get_Rest_EndPoint.java
@@ -0,0 +1,83 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.infrastructure.endpoint.topologystate;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.openk.common.dataexchange.MediaType;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.domain.measurement.core.MeasurementDefaults;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementValue;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.infrastructure.endpoint.AbstractCimHttpGetRestEndPoint;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * The <i>http-REST GET</i> end point for {@link MeasurementValue}s.
+ *
+ * @author 2018-10-09 Christian Brunzendorf
+ * @author 2018-04-22 Felix Korb
+ * @author 2017-10-24 Frank Jäger
+ */
+@Configurable
+@CrossOrigin
+@RequestMapping(path = "/source-system/electricity/topology-state")
+@RestController(value = "source-system/electricity/topology-state/measurements")
+public final class Measurements_Get_Rest_EndPoint extends AbstractCimHttpGetRestEndPoint {
+
+ // Constants
+ private static final ILogger LOGGER = LoggerFactory.createLogger(Measurements_Get_Rest_EndPoint.class);
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public Measurements_Get_Rest_EndPoint(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ @GetMapping(path = "/measurements", produces = "application/xml")
+ public void get(HttpServletRequest request, @PathVariable Map<String, String> pathVars, @RequestParam Map<String, String> requestProperties, HttpServletResponse response) {
+
+ processRequest(MeasurementDefaults.SCOPE_MEASUREMENTS, request, pathVars, requestProperties, MediaType.TextPlain, response, MediaType.ApplicationXml);
+ }
+
+ // Properties
+ @Override
+ public ILogger getLogger() {
+
+ return LOGGER;
+ }
+} \ No newline at end of file
diff --git a/dev/infrastructure/src/main/resources/.gitignore b/dev/infrastructure/src/main/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/infrastructure/src/main/resources/.gitignore
diff --git a/dev/infrastructure/src/test/java/.gitignore b/dev/infrastructure/src/test/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/infrastructure/src/test/java/.gitignore
diff --git a/dev/infrastructure/src/test/resources/.gitignore b/dev/infrastructure/src/test/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/infrastructure/src/test/resources/.gitignore
diff --git a/dev/logic/pom.xml b/dev/logic/pom.xml
new file mode 100644
index 0000000..73ee21f
--- /dev/null
+++ b/dev/logic/pom.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.eclipse.openk.source-system.mock-up-measurement</groupId>
+ <artifactId>mock-up-measurement-logic</artifactId>
+ <version>2.20.0</version>
+ <name>${project.groupId}.${project.artifactId}</name>
+
+ <parent>
+ <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+ <artifactId>build-parentpom-logic</artifactId>
+ <version>2.20.0</version>
+ <relativePath></relativePath>
+ </parent>
+
+ <dependencies>
+ <!-- org.eclipse -->
+ <dependency>
+ <groupId>org.eclipse.openk.source-system.mock-up-measurement</groupId>
+ <artifactId>mock-up-measurement-model</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.openk.domain.measurement</groupId>
+ <artifactId>measurement-logic</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+
+ <!-- scope: test -->
+ <!-- org.eclipse.openk -->
+ <dependency>
+ <groupId>org.eclipse.openk.service</groupId>
+ <artifactId>service-logic</artifactId>
+ <version>2.20.0</version>
+ <type>test-jar</type>
+ </dependency>
+ </dependencies>
+
+</project> \ No newline at end of file
diff --git a/dev/logic/src/main/java/.gitignore b/dev/logic/src/main/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/logic/src/main/java/.gitignore
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/AbstractMeasurementElementFactory.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/AbstractMeasurementElementFactory.java
new file mode 100644
index 0000000..c7f0fa7
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/AbstractMeasurementElementFactory.java
@@ -0,0 +1,129 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement;
+
+import java.util.UUID;
+
+import org.eclipse.openk.common.key.Key;
+import org.eclipse.openk.common.system.FatalException;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The base of all {@link IMeasurementElementFactory}s.
+ *
+ * @author 2017-10-24 Christian Brunzendorf
+ * @author 2017-01-01 Felix Korb
+ *
+ * @param <M>
+ * the measurement-element type
+ * @param <P>
+ * the factory parameters type
+ */
+public abstract class AbstractMeasurementElementFactory<M extends IEntity, P extends MeasurementElementFactoryParameters> implements IMeasurementElementFactory<M, P> {
+
+ // Attributes
+ private Class<?> type;
+
+ // Constructors
+ /**
+ * @param type
+ * the topology-element type
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>type</code> is <code>null</code></li>
+ * </ul>
+ */
+ protected AbstractMeasurementElementFactory(Class<?> type) throws IllegalArgumentException {
+
+ if(type == null)
+ throw new IllegalArgumentException("type", new NullPointerException());
+ else
+ this.type = type;
+ }
+
+ // Methods
+ @Override
+ public final M create(P factoryParameters) {
+
+ if(factoryParameters == null)
+ throw new IllegalArgumentException("factoryParameters", new NullPointerException());
+ else {
+ M result;
+
+ /* create result */
+ result = createInstance(factoryParameters);
+
+ /* set attributes */
+ setAttributes(result, factoryParameters);
+
+ return result;
+ }
+ }
+
+ /**
+ * Creates the measurement-element instance.
+ *
+ * @param factoryParameters
+ * the factory parameters, that are used to perform the creation; not <code>null</code>
+ * @return the measurement-element; not <code>null</code>
+ */
+ protected M createInstance(P factoryParameters) {
+
+ try {
+ return (M) type.newInstance();
+ }
+ catch(InstantiationException | IllegalAccessException exception) {
+ throw new FatalException(exception); /* should be unreachable code */
+ }
+ }
+
+ /**
+ * Sets the attributes of the specified measurement-element using the factory parameters.
+ *
+ * @param measurementElement
+ * the measurement-element; not <code>null</code>
+ * @param factoryParameters
+ * the factory parameters; not <code>null</code>
+ */
+ protected void setAttributes(M measurementElement, P factoryParameters) {
+
+ setKeyAndNameAndDescription(measurementElement, factoryParameters.getId(), factoryParameters.getName(), factoryParameters.getDescription());
+ }
+
+ /**
+ * Sets the key, name and description of the specified {@link IEntity} to the specified values.
+ *
+ * @param measurementElement
+ * the measurement-element; not <code>null</code>
+ * @param id
+ * the identifier of the measurement-element; can be <code>null</code>
+ * @param name
+ * the name; can be <code>null</code> or <code>""</code>
+ * @param description
+ * the description; can be <code>null</code> or <code>""</code>
+ */
+ protected final void setKeyAndNameAndDescription(M measurementElement, UUID id, String name, String description) {
+
+ /* description */
+ measurementElement.setDescription(description);
+
+ /* key */
+ measurementElement.setKey((id == null) ? null : new Key(type, id));
+
+ /* name */
+ measurementElement.setName(name);
+ }
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementElementFactory.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementElementFactory.java
new file mode 100644
index 0000000..a9c77e7
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementElementFactory.java
@@ -0,0 +1,45 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement;
+
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * Defines the commonalities of all measurement-element factories.
+ *
+ * @author 2018-02-20 Felix Korb
+ *
+ * @param <M>
+ * the measurement-element type
+ * @param <P>
+ * the factory parameters type
+ */
+public interface IMeasurementElementFactory<M extends IEntity, P> {
+
+ // Methods
+ /**
+ * Creates the measurement-element.
+ *
+ * @param factoryParameters
+ * the factory parameters, that are used to perform the creation
+ * @return the measurement-element; can be <code>null</code>
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>factoryParameters</code> is invalid and necessary for the specific creation</li>
+ * </ul>
+ */
+ M create(P factoryParameters) throws IllegalArgumentException;
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementFactory.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementFactory.java
new file mode 100644
index 0000000..8a53920
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementFactory.java
@@ -0,0 +1,45 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement;
+
+import org.eclipse.openk.domain.measurement.model.core.MeasurementValue;
+
+/**
+ * Defines the commonalities of all measurement factories.
+ *
+ * @author 2017-07-01 Christian Brunzendorf
+ * @author 2018-02-20 Felix Korb
+ *
+ * @param <P>
+ * the factory parameters type
+ *
+ */
+public interface IMeasurementFactory<P extends MeasurementFactoryParameters> {
+
+ // Methods
+ /**
+ * Creates the measurement-value.
+ *
+ * @param factoryParameters
+ * the factory parameters, that are used to perform the creation
+ * @return the measurement-value; can be <code>null</code>
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>factoryParameters</code> is invalid and necessary for the specific creation</li>
+ * </ul>
+ */
+ MeasurementValue create(P factoryParameters) throws IllegalArgumentException;
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementModelFactory.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementModelFactory.java
new file mode 100644
index 0000000..ca3f12c
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementModelFactory.java
@@ -0,0 +1,47 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.measurement.model.MeasurementModel;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * Defines the commonalities of all {@link MeasurementModel} factories.
+ *
+ * @author 2017-10-24 Christian Brunzendorf
+ * @author 2018-02-20 Felix Korb
+ *
+ * @param <P>
+ * the factory parameters type
+ */
+public interface IMeasurementModelFactory<P> {
+
+ // Methods
+ /**
+ * Creates the {@link MeasurementModel} model.
+ *
+ * @param factoryParameters
+ * the factory parameters, that are used to perform the creation
+ * @return the measurements; can be <code>null</code>
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>factoryParameters</code> is invalid and necessary for the specific creation</li>
+ * </ul>
+ */
+ List<? extends IEntity> create(P factoryParameters) throws IllegalArgumentException;
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementPointFactory.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementPointFactory.java
new file mode 100644
index 0000000..be3faf2
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/IMeasurementPointFactory.java
@@ -0,0 +1,44 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement;
+
+import org.eclipse.openk.domain.measurement.model.core.MeasurementPoint;
+
+/**
+ * Defines the commonalities of all {@link MeasurementPoint} factories.
+ *
+ * @author 2018-10-09 Christian Brunzendorf
+ * @author 2018-02-20 Felix Korb
+ *
+ * @param <P>
+ * the factory parameters type
+ */
+public interface IMeasurementPointFactory<P extends MeasurementPointFactoryParameters> {
+
+ // Methods
+ /**
+ * Creates the measurement.
+ *
+ * @param factoryParameters
+ * the factory parameters, that are used to perform the creation
+ * @return the measurement; can be <code>null</code>
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>factoryParameters</code> is invalid and necessary for the specific creation</li>
+ * </ul>
+ */
+ MeasurementPoint create(P factoryParameters) throws IllegalArgumentException;
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementElementFactoryParameters.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementElementFactoryParameters.java
new file mode 100644
index 0000000..b47f31c
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementElementFactoryParameters.java
@@ -0,0 +1,127 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement;
+
+import java.util.UUID;
+
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The {@link IMeasurementFactory} parameters.
+ *
+ * @author 2018-02-20 Felix Korb
+ */
+public class MeasurementElementFactoryParameters {
+
+ // Attributes
+ private String description;
+ private UUID id;
+ private String name;
+
+ // Constructors
+ /**
+ * @param type
+ * the type of the measurement-element
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>type</code> is <code>null</code></li>
+ * </ul>
+ */
+ public MeasurementElementFactoryParameters(Class<? extends IEntity> type) throws IllegalArgumentException {
+
+ this(type, UUID.randomUUID());
+ }
+
+ /**
+ * @param type
+ * the type of the measurement-element
+ * @param id
+ * the identifier of the measurement-element
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>type</code> is <code>null</code></li>
+ * <li><code>id</code> is <code>null</code></li>
+ * </ul>
+ */
+ public MeasurementElementFactoryParameters(Class<? extends IEntity> type, UUID id) throws IllegalArgumentException {
+
+ this(type, id, true, true);
+ }
+
+ /**
+ * @param type
+ * the type of the measurement-element
+ * @param id
+ * the identifier of the measurement-element
+ * @param createDefaultName
+ * specifies if a default will be used as name
+ * @param createDefaultDescription
+ * specifies if a default will be used as description
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>type</code> is <code>null</code></li>
+ * <li><code>id</code> is <code>null</code></li>
+ * </ul>
+ */
+ public MeasurementElementFactoryParameters(Class<? extends IEntity> type, UUID id, boolean createDefaultName, boolean createDefaultDescription) throws IllegalArgumentException {
+
+ if((type == null) || (id == null))
+ if(type == null)
+ throw new IllegalArgumentException("type", new NullPointerException());
+ else
+ throw new IllegalArgumentException("id", new NullPointerException());
+ else {
+ if(createDefaultDescription)
+ this.description = type.getSimpleName() + " (" + id.toString() + ')';
+ else
+ this.description = null;
+
+ this.id = id;
+
+ if(createDefaultName)
+ this.name = type.getSimpleName();
+ else
+ this.name = null;
+ }
+ }
+
+ // Methods
+ /**
+ * @return the description; can be <code>null</code> or <code>""</code>
+ */
+ public final String getDescription() {
+
+ return description;
+ }
+
+ /**
+ * @return the identifier of the measurement-element; not <code>null</code>
+ */
+ public final UUID getId() {
+
+ return id;
+ }
+
+ /**
+ * @return the name; can be <code>null</code> or <code>""</code>
+ */
+ public final String getName() {
+
+ return name;
+ }
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementFactory.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementFactory.java
new file mode 100644
index 0000000..3160eba
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementFactory.java
@@ -0,0 +1,50 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Meas.Measurement;
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementValue;
+
+/**
+ * The {@link Measurement} factory.
+ *
+ * @author 2018-02-20 Felix Korb
+ *
+ *
+ */
+public class MeasurementFactory extends AbstractMeasurementElementFactory<MeasurementValue, MeasurementFactoryParameters> implements IMeasurementFactory<MeasurementFactoryParameters> {
+
+ // Constructors
+ @SuppressWarnings("checkstyle:javadocmethod")
+ @SuppressWarningsReason(reasons = Reason.Checkstyle_ConstructorWithoutParameter)
+ public MeasurementFactory() {
+
+ super(MeasurementValue.class);
+ }
+
+ // Methods
+ @Override
+ protected void setAttributes(MeasurementValue measurementElement, MeasurementFactoryParameters factoryParameters) {
+
+ super.setAttributes(measurementElement, factoryParameters);
+
+ measurementElement.setCreation(factoryParameters.getCreation());
+ measurementElement.setMeasurementPoint(factoryParameters.getMeasurementPoint());
+ measurementElement.setMeasurementType(factoryParameters.getMeasurementType());
+ measurementElement.setValue(factoryParameters.getValue());
+ }
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementFactoryParameters.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementFactoryParameters.java
new file mode 100644
index 0000000..ee3dc6e
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementFactoryParameters.java
@@ -0,0 +1,114 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement;
+
+import java.sql.Timestamp;
+import java.util.UUID;
+
+import org.eclipse.openk.domain.measurement.model.core.MeasurementPoint;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementType;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The {@link IMeasurementFactory} parameters.
+ *
+ * @author 2018-10-09 Christian Brunzendorf
+ * @author 2018-02-20 Felix Korb
+ */
+public class MeasurementFactoryParameters extends MeasurementElementFactoryParameters {
+
+ // Attributes
+ private Timestamp creation;
+ private MeasurementPoint measurementPoint;
+ private MeasurementType measurementType;
+ private double value;
+
+ // Constructors
+ /**
+ * @param type
+ * the type of the measurement-element
+ * @param id
+ * the identifier of the measurement-element
+ * @param measurementPoint
+ * the {@link MeasurementPoint}
+ * @param measurementType
+ * the {@link MeasurementType}
+ * @param creation
+ * the creation of the measurement (in UTC)
+ * @param value
+ * the value
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>type</code> is <code>null</code></li>
+ * <li><code>id</code> is <code>null</code></li>
+ * <li><code>measurementPoint</code> is <code>null</code></li>
+ * <li><code>measurementType</code> is <code>null</code></li>
+ * <li><code>creation</code> is <code>null</code></li>
+ * <li><code>value</code> is <code>null</code></li>
+ * </ul>
+ */
+ public MeasurementFactoryParameters(Class<? extends IEntity> type, UUID id, MeasurementPoint measurementPoint, MeasurementType measurementType, Timestamp creation, double value) throws IllegalArgumentException {
+
+ super(type, id);
+
+ if((measurementPoint == null) || (measurementType == null) || (creation == null))
+ if(measurementPoint == null)
+ throw new IllegalArgumentException("measurementPoint", new NullPointerException());
+ else if(measurementType == null)
+ throw new IllegalArgumentException("measurementType", new NullPointerException());
+ else
+ throw new IllegalArgumentException("creation", new NullPointerException());
+ else {
+ this.creation = new Timestamp(creation.getTime());
+ this.measurementPoint = measurementPoint;
+ this.measurementType = measurementType;
+ this.value = value;
+ }
+ }
+
+ // Properties
+ /**
+ * @return the creation of the measurement (in UTC); not <code>null</code>
+ */
+ public final Timestamp getCreation() {
+
+ return new Timestamp(creation.getTime());
+ }
+
+ /**
+ * @return the {@link MeasurementPoint}; not <code>null</code>
+ */
+ public final MeasurementPoint getMeasurementPoint() {
+
+ return measurementPoint;
+ }
+
+ /**
+ * @return the {@link MeasurementType}; not <code>null</code>
+ */
+ public final MeasurementType getMeasurementType() {
+
+ return measurementType;
+ }
+
+ /**
+ * @return the value; not <code>null</code>
+ */
+ public final double getValue() {
+
+ return value;
+ }
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementPointFactory.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementPointFactory.java
new file mode 100644
index 0000000..93c8a57
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementPointFactory.java
@@ -0,0 +1,46 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement;
+
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementPoint;
+
+/**
+ * Factory for {@link MeasurementPoint}s.
+ *
+ * @author 2018-11-23 Christian Brunzendorf
+ * @author 2018-02-20 Felix Korb
+ */
+public class MeasurementPointFactory extends AbstractMeasurementElementFactory<MeasurementPoint, MeasurementPointFactoryParameters> implements IMeasurementPointFactory<MeasurementPointFactoryParameters> {
+
+ // Constructors
+ @SuppressWarnings("checkstyle:javadocmethod")
+ @SuppressWarningsReason(reasons = Reason.Checkstyle_ConstructorWithoutParameter)
+ public MeasurementPointFactory() {
+
+ super(MeasurementPoint.class);
+ }
+
+ // Methods
+ @Override
+ protected void setAttributes(MeasurementPoint measurementElement, MeasurementPointFactoryParameters factoryParameters) {
+
+ super.setAttributes(measurementElement, factoryParameters);
+
+ measurementElement.setPowerSystemResourceReference(factoryParameters.getPowerSystemResourceReference());
+ measurementElement.setTerminalReference(factoryParameters.getTerminalReference());
+ }
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementPointFactoryParameters.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementPointFactoryParameters.java
new file mode 100644
index 0000000..2fc9b9b
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/measurement/MeasurementPointFactoryParameters.java
@@ -0,0 +1,96 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.UUID;
+
+import org.eclipse.openk.common.value.Assertions;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementPoint;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementType;
+
+/**
+ * The {@link MeasurementPoint} parameters.
+ *
+ * @author 2018-11-23 Christian Brunzendorf
+ * @author 2018-02-20 Felix Korb
+ */
+public class MeasurementPointFactoryParameters extends MeasurementElementFactoryParameters {
+
+ // Attributes
+ private Set<MeasurementType> measurementTypes;
+ private UUID powerSystemResourceReference;
+ private UUID terminalReference;
+
+ // Constructors
+ /**
+ * @param id
+ * the identifier of the measurement-element
+ * @param powerSystemResourceReference
+ * the power-system-resource-reference
+ * @param terminalReference
+ * the terminal-reference; can be <code>null</code>
+ * @param measurementTypes
+ * the {@link MeasurementType}s
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>id</code> is <code>null</code></li>
+ * <li><code>powerSystemResourceReference</code> is <code>null</code></li>
+ * <li><code>measurementTypes</code> is <code>null</code> or empty</li>
+ * </ul>
+ */
+ public MeasurementPointFactoryParameters(UUID id, UUID powerSystemResourceReference, UUID terminalReference, MeasurementType... measurementTypes) throws IllegalArgumentException {
+
+ super(MeasurementPoint.class, id);
+
+ /* check preconditions */
+ {
+ Assertions.assertHasContent("measurementTypes", measurementTypes);
+ Assertions.assertNotNull("powerSystemResourceReference", powerSystemResourceReference);
+ }
+
+ this.measurementTypes = new HashSet<>(Arrays.asList(measurementTypes));
+ this.powerSystemResourceReference = powerSystemResourceReference;
+ this.terminalReference = terminalReference;
+ }
+
+ // Properties
+ /**
+ * @return the {@link MeasurementType}s; not <code>null</code> and not empty
+ */
+ public final Set<MeasurementType> getMeasurementTypes() {
+
+ return measurementTypes;
+ }
+
+ /**
+ * @return the powerSystemResourceReference
+ */
+ public UUID getPowerSystemResourceReference() {
+
+ return powerSystemResourceReference;
+ }
+
+ /**
+ * @return the terminalReference
+ */
+ public UUID getTerminalReference() {
+
+ return terminalReference;
+ }
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/referencefactories/ReferenceMeasurementValueFactory.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/referencefactories/ReferenceMeasurementValueFactory.java
new file mode 100644
index 0000000..53d7427
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/referencefactories/ReferenceMeasurementValueFactory.java
@@ -0,0 +1,485 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.referencefactories;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.ThreadLocalRandom;
+
+import org.eclipse.openk.common.date.DefaultTimer;
+import org.eclipse.openk.common.messaging.messages.FailedToFindException;
+import org.eclipse.openk.common.system.UnsupportedTypeException;
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementPoint;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementType;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementValue;
+import org.eclipse.openk.domain.measurement.model.core.Sensor;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement.IMeasurementFactory;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement.IMeasurementModelFactory;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement.IMeasurementPointFactory;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement.MeasurementFactory;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement.MeasurementFactoryParameters;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement.MeasurementPointFactory;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.measurement.MeasurementPointFactoryParameters;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.sensor.ISensorFactory;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.sensor.SensorFactory;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.sensor.SensorFactoryParameters;
+
+/**
+ * The reference measurement factory.
+ *
+ * @author 2018-11-23 Christian Brunzendorf
+ * @author 2017-01-01 Felix Korb
+ * @author 2019-02-05 Renko Ortgies
+ */
+@SuppressWarnings("checkstyle:magicnumber")
+@SuppressWarningsReason(reasons = Reason.Checkstyle_MagicNumberInInitializations)
+public class ReferenceMeasurementValueFactory implements IMeasurementModelFactory<IServiceContext> {
+
+ // Constants
+ private static final ReferenceMeasurementValueFactory INSTANCE = new ReferenceMeasurementValueFactory();
+
+ /* factories */
+ public static final IMeasurementFactory<MeasurementFactoryParameters> FACTORY_MEASUREMENT_VALUE = new MeasurementFactory();
+ public static final IMeasurementPointFactory<MeasurementPointFactoryParameters> FACTORY_MEASUREMENT_POINT = new MeasurementPointFactory();
+ public static final ISensorFactory<Sensor, SensorFactoryParameters> FACTORY_SENSOR = new SensorFactory();
+
+ /* ids from the static-topology reference model */
+ public static final UUID BREAKER_REFERENCE_UUID = UUID.fromString("043d903a-5702-4451-9613-4476e57e6a6d");
+ public static final UUID LOAD_BREAK_SWITCH_REFERENCE_UUID = UUID.fromString("ce9e868a-d575-4688-aef4-fb217919ec2e");
+ public static final UUID POWER_TRANSFORMER_TERMINAL_UUID = UUID.fromString("55ee7075-0059-488e-84da-6cc4b0d9fd37");
+ public static final UUID POWER_TRANSFORMER_UUID = UUID.fromString("abddaf44-13e6-46a3-8f87-0d675ea78659");
+
+ // Attributes
+ private Map<MeasurementType, Range> measurementValueRanges;
+
+ // Constructors
+ @SuppressWarnings("checkstyle:javadocmethod")
+ @SuppressWarningsReason(reasons = Reason.Checkstyle_ConstructorWithoutParameter)
+ protected ReferenceMeasurementValueFactory() {
+
+ /* NOOP */
+ }
+
+ // Methods
+ @Override
+ public List<IEntity> create(IServiceContext factoryParameters) {
+
+ List<IEntity> result = new ArrayList<>();
+
+ result.addAll(toMeasurementPoints(BREAKER_REFERENCE_UUID, null, MeasurementType.LineCurrent));
+ result.addAll(toMeasurementPoints(LOAD_BREAK_SWITCH_REFERENCE_UUID, null, MeasurementType.LineCurrent));
+ result.addAll(toMeasurementPoints(POWER_TRANSFORMER_UUID, POWER_TRANSFORMER_TERMINAL_UUID, MeasurementType.ThreePhaseActivePower));
+
+ return result;
+ }
+
+ /**
+ * Creates a random value from {@link Range}.
+ *
+ * @param range
+ * the {@link Range}
+ * @return the value; can be <code>null</code>
+ */
+ protected double createValue(Range range) {
+
+ double result;
+
+ if(range.useRange)
+ result = range.getCoreValueMultiplier() * ThreadLocalRandom.current().nextDouble(range.minValue.doubleValue(), range.maxValue.doubleValue());
+ else {
+ /* use random the min or the max value */
+ int decider = (int) (Math.random() + 0.5);
+ if(decider == 0)
+ result = range.minValue.doubleValue();
+ else
+ result = range.maxValue.doubleValue();
+ }
+
+ return result;
+ }
+
+ /**
+ * Creates the {@link MeasurementPoint}.
+ *
+ * @param measurementPointId
+ * the {@link MeasurementPoint}-{@link UUID}; not <code>null</code>
+ * @param powerSystemResourceReference
+ * the power-system-resource-reference; not <code>null</code>
+ * @param terminalReference
+ * the terminal-reference; can be <code>null</code>
+ * @param measurementTypes
+ * the {@link MeasurementType}s; not <code>null</code>
+ *
+ * @return the {@link MeasurementPoint}; can be <code>null</code>
+ */
+ protected MeasurementPoint createMeasurementPoint(UUID measurementPointId, UUID powerSystemResourceReference, UUID terminalReference, MeasurementType... measurementTypes) {
+
+ return FACTORY_MEASUREMENT_POINT.create(new MeasurementPointFactoryParameters(measurementPointId, powerSystemResourceReference, terminalReference, measurementTypes));
+ }
+
+ /**
+ * Creates the {@link MeasurementValue}.
+ *
+ * @param measurementPoint
+ * the measurement-point; not <code>null</code>
+ * @param measurementType
+ * the measurement-type; not <code>null</code>
+ * @param defaultTimer
+ * the default-timer; not <code>null</code>
+ * @param value
+ * the value; not <code>null</code>
+ *
+ * @return the {@link MeasurementValue}; can be <code>null</code>
+ */
+ protected MeasurementValue createMeasurmentValue(MeasurementPoint measurementPoint, MeasurementType measurementType, DefaultTimer defaultTimer, double value) {
+
+ return FACTORY_MEASUREMENT_VALUE.create(new MeasurementFactoryParameters(MeasurementValue.class, UUID.randomUUID(), measurementPoint, measurementType, new Timestamp(defaultTimer.getCurrentTimestamp().getTime()), value));
+ }
+
+ /**
+ * Creates a {@link MeasurementValue} with random active-power.
+ *
+ * @param measurementPoint
+ * the measurement-point; not <code>null</code>
+ * @param measurementType
+ * the {@link MeasurementType}; not <code>null</code>
+ * @return the {@link MeasurementValue}; not <code>null</code>
+ */
+ protected MeasurementValue createRandomMeasurementValue(MeasurementPoint measurementPoint, MeasurementType measurementType) {
+
+ MeasurementValue result;
+
+ DefaultTimer defaultTimer = new DefaultTimer();
+
+ Range range = fetchRange(measurementType);
+
+ double value = createValue(range);
+
+ result = createMeasurmentValue(measurementPoint, measurementType, defaultTimer, value);
+
+ return result;
+ }
+
+ /**
+ * Creates a {@link Sensor} with random value.
+ *
+ * @param measurementType
+ * the measurement type
+ *
+ * @return the {@link Sensor}; not <code>null</code>
+ */
+ protected Sensor createRandomSensor(MeasurementType measurementType) {
+
+ return FACTORY_SENSOR.create(new SensorFactoryParameters(measurementType));
+ }
+
+ /**
+ * Fetches the specified {@link MeasurementType} to the corresponding {@link MeasurementType}.
+ * <p>
+ * <b><i>NOTE:</i></b><br/>
+ * Since this is a performance critical operation, the parameter-check is skipped!<br/>
+ * It is assumed that
+ * <ul>
+ * <li><code>type</code> is not <code>null</code></li>
+ * </ul>
+ * </p>
+ *
+ * @param type
+ * the {@link MeasurementType}
+ * @return the corresponding {@link Range} type; not <code>null</code>
+ * @throws UnsupportedTypeException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>type</code> is not supported</li>
+ * </ul>
+ */
+ protected Range fetchRange(MeasurementType type) throws UnsupportedTypeException {
+
+ Range result = getMeasurementValueRanges().get(type);
+
+ if(result == null)
+ throw new FailedToFindException(type.name(), "check measurementValueRanges");
+
+ return result;
+ }
+
+ /**
+ * Creates the {@link Range}s.
+ *
+ * @return the {@link Range}s; not <code>null</code> but can be empty
+ */
+ private Map<MeasurementType, Range> createMeasurementValueRanges() {
+
+ Map<MeasurementType, Range> result;
+
+ result = new HashMap<>();
+
+ initializeMeasurementValueRanges(result);
+
+ return result;
+ }
+
+ /**
+ * Initializes the {@link Range}s.
+ *
+ * @param ranges
+ * the {@link Range}s; not <code>null</code> but can be empty
+ */
+ protected void initializeMeasurementValueRanges(Map<MeasurementType, Range> ranges) {
+
+ ranges.put(MeasurementType.LineCurrent, new Range(-20, 20, true));
+ ranges.put(MeasurementType.LineToLineVoltage, new Range(19.5, 20.5, true, 1000));
+ ranges.put(MeasurementType.PhaseVoltage, new Range(5, 10, false, 1000));
+ ranges.put(MeasurementType.ThreePhaseActivePower, new Range(-10, 10, true, 10000000));
+ ranges.put(MeasurementType.ThreePhaseReactivePower, new Range(0.5, 2, true, 10000000));
+ }
+
+ /**
+ * Creates {@link MeasurementPoint}s with random active-power ({@link MeasurementValue}s).
+ *
+ * @param measurementPointIds
+ * the {@link List} of {@link MeasurementPoint}-{@link UUID}s; can be <code>null</code>
+ * @param powerSystemResourceReference
+ * the power-system-resource-reference; not <code>null</code>
+ * @param terminalReference
+ * the terminal-reference; can be <code>null</code>
+ * @param measurementTypes
+ * the {@link MeasurementType}s; not <code>null</code>
+ * @return the {@link MeasurementPoint}s; can be <code>null</code>
+ */
+ public Collection<IEntity> toMeasurementPoints(Collection<UUID> measurementPointIds, UUID powerSystemResourceReference, UUID terminalReference, MeasurementType... measurementTypes) {
+
+ Collection<IEntity> result;
+
+ if(measurementPointIds == null)
+ result = null;
+ else {
+ result = new ArrayList<>(measurementPointIds.size());
+ MeasurementPoint measurementPoint;
+
+ for(UUID measurementPointId : measurementPointIds) {
+
+ /* create measurement-points */
+ measurementPoint = createMeasurementPoint(measurementPointId, powerSystemResourceReference, terminalReference, measurementTypes);
+ result.add(measurementPoint);
+
+ /* create sensors */
+ List<Sensor> sensors = new ArrayList<>(measurementTypes.length);
+ for(MeasurementType measurementType : measurementTypes) {
+ sensors.add(createRandomSensor(measurementType));
+ }
+
+ measurementPoint.setSensors(sensors);
+
+ /* create measurement-values */
+ for(MeasurementType measurementType : measurementTypes) {
+ result.add(createRandomMeasurementValue(measurementPoint, measurementType));
+ }
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Creates a {@link MeasurementPoint} with random active-power.
+ *
+ * @param powerSystemResourceReference
+ * the power-system-resource-reference; not <code>null</code>
+ * @param terminalReference
+ * the terminal-reference; can be <code>null</code>
+ * @param measurementTypes
+ * the {@link MeasurementType}s
+ * @return the {@link MeasurementPoint}s; can be <code>null</code>
+ */
+ protected Collection<IEntity> toMeasurementPoints(UUID powerSystemResourceReference, UUID terminalReference, MeasurementType... measurementTypes) {
+
+ Collection<IEntity> result;
+ Collection<UUID> measurementPointIds;
+
+ if(terminalReference == null)
+ measurementPointIds = Collections.singletonList(powerSystemResourceReference);
+ else
+ measurementPointIds = Collections.singletonList(terminalReference);
+
+ result = toMeasurementPoints(measurementPointIds, powerSystemResourceReference, terminalReference, measurementTypes);
+
+ return result;
+ }
+
+ // Properties
+ /**
+ * Gets the instance of the {@link ReferenceMeasurementValueFactory}.
+ *
+ * @return the instance; not <code>null</code>
+ */
+ public static ReferenceMeasurementValueFactory getInstace() {
+
+ return INSTANCE;
+ }
+
+ /**
+ * @return the {@link Range}s; not <code>null</code> but can be empty
+ */
+ protected final Map<MeasurementType, Range> getMeasurementValueRanges() {
+
+ if(measurementValueRanges == null)
+ measurementValueRanges = createMeasurementValueRanges();
+
+ return measurementValueRanges;
+ }
+
+ // inner Classes
+ /**
+ * The value range for {@link MeasurementType}s.
+ */
+ public static final class Range {
+
+ // Attributes
+ /* Multiplier */
+ private int coreValueMultiplier = 1;
+ /* min/max value */
+ private Double minValue;
+ private Double maxValue;
+ /* use value between the range */
+ private boolean useRange = true;
+
+ // Constructors
+ /**
+ * @param minValue
+ * the min value
+ *
+ * @param maxValue
+ * the max value
+ */
+ public Range(double minValue, double maxValue) {
+
+ this.minValue = Double.valueOf(minValue);
+ this.maxValue = Double.valueOf(maxValue);
+ }
+
+ /**
+ * @param minValue
+ * the min value
+ * @param maxValue
+ * the max value
+ * @param useRange
+ * if true, the value will be set between min and max value, otherwise the value is exact the min or the max value
+ */
+ public Range(double minValue, double maxValue, boolean useRange) {
+
+ this.minValue = Double.valueOf(minValue);
+ this.maxValue = Double.valueOf(maxValue);
+ this.useRange = useRange;
+ }
+
+ /**
+ * @param minValue
+ * the min range value
+ * @param maxValue
+ * the max range value
+ * @param useRange
+ * if true, the value will be set between min and max value, otherwise the value is exact the min or the max value
+ * @param coreValueMultiplier
+ * the core value multiplier
+ */
+ public Range(double minValue, double maxValue, boolean useRange, int coreValueMultiplier) {
+
+ this.coreValueMultiplier = coreValueMultiplier;
+ this.minValue = Double.valueOf(minValue);
+ this.maxValue = Double.valueOf(maxValue);
+ this.useRange = useRange;
+ }
+
+ // Properties
+ /**
+ * @return the core value multiplier
+ */
+ public double getCoreValueMultiplier() {
+
+ return coreValueMultiplier;
+ }
+
+ /**
+ * @return the minimum range value
+ */
+ public Double getMinValue() {
+
+ return minValue;
+ }
+
+ /**
+ * @return the minimum range value
+ */
+ public Double getMaxValue() {
+
+ return maxValue;
+ }
+
+ /**
+ * @return if true, the value will be set between min and max value, otherwise the value is exact the min or the max value
+ */
+ public boolean getUseRange() {
+
+ return useRange;
+ }
+
+ /**
+ * @param value
+ * the core value multiplier
+ */
+ public void setCoreValueMultiplier(int value) {
+
+ coreValueMultiplier = value;
+ }
+
+ /**
+ * @param value
+ * the minimum range value
+ */
+ public void setMinValue(Double value) {
+
+ minValue = value;
+ }
+
+ /**
+ * @param value
+ * the maximum range value
+ */
+ public void setMaxValue(Double value) {
+
+ minValue = value;
+ }
+
+ /**
+ * @param value
+ * if true, the value will be set between min and max value, otherwise the value is exact the min or the max value
+ */
+ public void setUseRange(boolean value) {
+
+ useRange = value;
+ }
+ }
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/AbstractSensorFactory.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/AbstractSensorFactory.java
new file mode 100644
index 0000000..ddf3efa
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/AbstractSensorFactory.java
@@ -0,0 +1,106 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.sensor;
+
+import org.eclipse.openk.common.system.FatalException;
+import org.eclipse.openk.common.value.Assertions;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The base of all {@link ISensorFactory}s.
+ *
+ * @author 2018-10-12 Renko Ortgies
+ *
+ * @param <S>
+ * the sensor-element type
+ * @param <P>
+ * the factory parameters type
+ */
+public abstract class AbstractSensorFactory<S extends IEntity, P extends ISensorFactoryParameters> implements ISensorFactory<S, P> {
+
+ // Attributes
+ private Class<?> type;
+
+ // Constructors
+ /**
+ * @param type
+ * the topology-element type
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>type</code> is <code>null</code></li>
+ * </ul>
+ */
+ protected AbstractSensorFactory(Class<?> type) throws IllegalArgumentException {
+
+ /* check preconditions */
+ {
+ Assertions.assertNotNull("type", type);
+ }
+ this.type = type;
+ }
+
+ // Methods
+ @Override
+ public final S create(P factoryParameters) {
+
+ /* check preconditions */
+ {
+ Assertions.assertNotNull("factoryParameters", factoryParameters);
+ }
+
+ S result;
+
+ /* create result */
+ result = createInstance(factoryParameters);
+
+ /* set attributes */
+ setAttributes(result, factoryParameters);
+
+ return result;
+
+ }
+
+ /**
+ * Creates the sensor-element instance.
+ *
+ * @param factoryParameters
+ * the factory parameters, that are used to perform the creation; not <code>null</code>
+ * @return the sensor-element; not <code>null</code>
+ */
+ protected S createInstance(P factoryParameters) {
+
+ try {
+ return (S) type.newInstance();
+ }
+ catch(InstantiationException | IllegalAccessException exception) {
+ throw new FatalException(exception); /* should be unreachable code */
+ }
+ }
+
+ /**
+ * Sets the attributes of the specified sensor-element using the factory parameters.
+ *
+ * @param sensor
+ * the sensor-element; not <code>null</code>
+ * @param factoryParameters
+ * the factory parameters; not <code>null</code>
+ */
+ protected void setAttributes(S sensor, P factoryParameters) {
+
+ sensor.setDescription(factoryParameters.getMeasurementType().toString());
+ }
+
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/ISensorFactory.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/ISensorFactory.java
new file mode 100644
index 0000000..9ca181d
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/ISensorFactory.java
@@ -0,0 +1,46 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.sensor;
+
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * Defines the commonalities of all sensor factories.
+ *
+ * @author 2018-10-12 Renko Ortgies
+ *
+ * @param <S>
+ * the sensor type
+ * @param <P>
+ * the factory parameters type
+ *
+ */
+public interface ISensorFactory<S extends IEntity, P extends ISensorFactoryParameters> {
+
+ // Methods
+ /**
+ * Creates the sensor.
+ *
+ * @param factoryParameters
+ * the factory parameters, that are used to perform the creation
+ * @return the sensor; can be <code>null</code>
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>factoryParameters</code> is invalid and necessary for the specific creation</li>
+ * </ul>
+ */
+ S create(P factoryParameters) throws IllegalArgumentException;
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/ISensorFactoryParameters.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/ISensorFactoryParameters.java
new file mode 100644
index 0000000..9c61920
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/ISensorFactoryParameters.java
@@ -0,0 +1,32 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.sensor;
+
+import org.eclipse.openk.domain.measurement.model.core.MeasurementType;
+
+/**
+ * Defines the commonalities of all sensor factories.
+ *
+ * @author 2018-10-19 Renko Ortgies
+ */
+public interface ISensorFactoryParameters {
+
+ // Properties
+ /**
+ * @return the {@link MeasurementType}; not <code>null</code>
+ */
+ MeasurementType getMeasurementType();
+
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/SensorFactory.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/SensorFactory.java
new file mode 100644
index 0000000..fec5b95
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/SensorFactory.java
@@ -0,0 +1,44 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.sensor;
+
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+import org.eclipse.openk.domain.measurement.model.core.Sensor;
+
+/**
+ * The sensor factory.
+ *
+ * @author 2018-10-12 Renko Ortgies
+ */
+public class SensorFactory extends AbstractSensorFactory<Sensor, SensorFactoryParameters> {
+
+ // Constructors
+ @SuppressWarnings("checkstyle:javadocmethod")
+ @SuppressWarningsReason(reasons = Reason.Checkstyle_ConstructorWithoutParameter)
+ public SensorFactory() {
+
+ super(Sensor.class);
+ }
+
+ // Methods
+ @Override
+ protected void setAttributes(Sensor sensorElement, SensorFactoryParameters factoryParameters) {
+
+ super.setAttributes(sensorElement, factoryParameters);
+
+ sensorElement.setMeasurementType(factoryParameters.getMeasurementType());
+ }
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/SensorFactoryParameters.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/SensorFactoryParameters.java
new file mode 100644
index 0000000..b8efe30
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/sensor/SensorFactoryParameters.java
@@ -0,0 +1,56 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.sensor;
+
+import org.eclipse.openk.common.value.Assertions;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementType;
+
+/**
+ * The {@link ISensorFactory} parameters.
+ *
+ * @author 2018-10-12 Renko Ortgies
+ */
+public class SensorFactoryParameters implements ISensorFactoryParameters {
+
+ // Attributes
+ private MeasurementType measurementType;
+
+ // Constructors
+ /**
+ * @param measurementType
+ * the measurement type
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>measurementType</code> is <code>null</code></li>
+ * </ul>
+ */
+ public SensorFactoryParameters(MeasurementType measurementType) throws IllegalArgumentException {
+
+ /* check preconditions */
+ {
+ Assertions.assertNotNull("measurementType", measurementType);
+ }
+
+ this.measurementType = measurementType;
+ }
+
+ // Properties
+ @Override
+ public final MeasurementType getMeasurementType() {
+
+ return measurementType;
+ }
+} \ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/GenerateMeasurements_1_Task.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/GenerateMeasurements_1_Task.java
new file mode 100644
index 0000000..1911dca
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/GenerateMeasurements_1_Task.java
@@ -0,0 +1,119 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.task;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.UUID;
+
+import org.eclipse.openk.common.Version;
+import org.eclipse.openk.common.collection.CollectionUtilities;
+import org.eclipse.openk.common.dataexchange.InvalidInputException;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.common.value.parameter.NoParameters;
+import org.eclipse.openk.domain.measurement.core.MeasurementDefaults;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementPoint;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementType;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementValue;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.logic.modifier.IModifier;
+import org.eclipse.openk.service.core.logic.task.TaskConfiguration;
+import org.eclipse.openk.service.core.logic.task.TaskInformation;
+import org.eclipse.openk.service.logic.IServiceLogicController;
+import org.eclipse.openk.service.logic.task.AbstractTask;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.core.MockUpMeasurementDefaults;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.referencefactories.ReferenceMeasurementValueFactory;
+
+/**
+ * Generates {@link MeasurementValue}s.
+ *
+ * @author 2018-05-14 Frank Jäger
+ * @author 2018-10-10 Renko Ortgies
+ */
+@TaskInformation(scope = MockUpMeasurementDefaults.TASK_GENERATE_MEASUREMENTS, parametersType = NoParameters.class)
+public final class GenerateMeasurements_1_Task extends AbstractTask<TaskConfiguration, Collection<UUID>, Void, NoParameters> {
+
+ // Constants
+ private static final ILogger LOGGER = LoggerFactory.createLogger(GenerateMeasurements_1_Task.class);
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public GenerateMeasurements_1_Task(IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ public Void execute(Collection<UUID> input, NoParameters executionParameters) throws IllegalArgumentException, IOException {
+
+ // REMIND 2018-11-23 Christian Brunzendorf: analysieren und refactorn
+ if(CollectionUtilities.hasContent(input)) {
+
+ /* create measurement-points with measurements from measurement-point-IDs */
+ // Collection<IEntity> measurements = ReferenceMeasurementValueFactory.getInstace().toMeasurementPoints(input, MeasurementPointType.PowerSystemResource, MeasurementType.ThreePhaseActivePower, MeasurementType.ThreePhaseReactivePower);
+ Collection<IEntity> measurements = ReferenceMeasurementValueFactory.getInstace().toMeasurementPoints(input, UUID.randomUUID(), null, MeasurementType.ThreePhaseActivePower, MeasurementType.ThreePhaseReactivePower);
+
+ Collection<MeasurementPoint> measurementPoints = new ArrayList<>(measurements.size());
+ Collection<MeasurementValue> measurementValues = new ArrayList<>(measurements.size());
+
+ /* split measurement-values and measurement-points */
+ for(IEntity entity : measurements) {
+ if(entity instanceof MeasurementPoint)
+ measurementPoints.add((MeasurementPoint) entity);
+ else if(entity instanceof MeasurementValue) {
+ measurementValues.add((MeasurementValue) entity);
+ }
+ else
+ getLogger().error(new InvalidInputException(entity.getClass().getSimpleName(), "Splitting measurement-values and measurement-points!"));
+ }
+
+ /* update the measurement-points repository */
+ {
+ IModifier<?, Collection<MeasurementPoint>, ?> modifier = ((IServiceLogicController<?>) getContext()).getModifierFactory().create(MeasurementDefaults.SCOPE_STORE_MEASUREMENT_POINTS, Version.valueOf(1));
+
+ modifier.modify(measurementPoints, null);
+ }
+
+ /* update the measurement-values repository */
+ {
+ IModifier<?, Collection<MeasurementValue>, ?> modifier = ((IServiceLogicController<?>) getContext()).getModifierFactory().create(MeasurementDefaults.SCOPE_STORE_MEASUREMENT_VALUES, Version.valueOf(1));
+
+ modifier.modify(measurementValues, null);
+ }
+ }
+
+ return null;
+ }
+
+ // Properties
+ @Override
+ public ILogger getLogger() {
+
+ return LOGGER;
+ }
+
+}
diff --git a/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/ResetMeasurements_1_Task.java b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/ResetMeasurements_1_Task.java
new file mode 100644
index 0000000..23f5c3f
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/ResetMeasurements_1_Task.java
@@ -0,0 +1,118 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.task;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.openk.common.Version;
+import org.eclipse.openk.common.collection.CollectionUtilities;
+import org.eclipse.openk.common.dataexchange.InvalidInputException;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.common.value.parameter.NoParameters;
+import org.eclipse.openk.domain.measurement.core.MeasurementDefaults;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementPoint;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementValue;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.logic.modifier.IModifier;
+import org.eclipse.openk.service.core.logic.task.TaskConfiguration;
+import org.eclipse.openk.service.core.logic.task.TaskInformation;
+import org.eclipse.openk.service.logic.IServiceLogicController;
+import org.eclipse.openk.service.logic.task.AbstractTask;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.core.MockUpMeasurementDefaults;
+
+/**
+ * Resets the {@link MeasurementPoint}s and {@link MeasurementValue}s.
+ *
+ * @author 2018-10-24 Renko Ortgies
+ */
+@TaskInformation(scope = MockUpMeasurementDefaults.TASK_RESET_MEASUREMENTS, parametersType = NoParameters.class)
+public final class ResetMeasurements_1_Task extends AbstractTask<TaskConfiguration, Collection<IEntity>, Void, NoParameters> {
+
+ // Constants
+ private static final ILogger LOGGER = LoggerFactory.createLogger(ResetMeasurements_1_Task.class);
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public ResetMeasurements_1_Task(IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ public Void execute(Collection<IEntity> input, NoParameters executionParameters) throws IllegalArgumentException, IOException {
+
+ if(CollectionUtilities.hasContent(input)) {
+
+ Collection<MeasurementPoint> measurementPoints = new ArrayList<>(input.size());
+ Collection<MeasurementValue> measurementValues = new ArrayList<>(input.size());
+
+ /* split measurement-values and measurement-points */
+ for(IEntity entity : input) {
+ if(entity instanceof MeasurementPoint)
+ measurementPoints.add((MeasurementPoint) entity);
+ else if(entity instanceof MeasurementValue) {
+ measurementValues.add((MeasurementValue) entity);
+ }
+ else
+ getLogger().error(new InvalidInputException(entity.getClass().getSimpleName(), "Splitting measurement-values and measurement-points!"));
+ }
+
+ /* clear the repositories */
+ {
+ // REMIND 2018-11-06 Renko => für clear einen eigenen Task und diesen auch als command im Service anbieten (CICA-663)
+ IModifier<?, Collection<IEntity>, ?> modifier = ((IServiceLogicController<?>) getContext()).getModifierFactory().create(MeasurementDefaults.SCOPE_CLEAR_MEASUREMENT_REPOSITORIES, Version.valueOf(1));
+
+ modifier.modify(null, null);
+ }
+
+ /* update the measurement-points repository */
+ {
+ IModifier<?, Collection<MeasurementPoint>, ?> modifier = ((IServiceLogicController<?>) getContext()).getModifierFactory().create(MeasurementDefaults.SCOPE_STORE_MEASUREMENT_POINTS, Version.valueOf(1));
+
+ modifier.modify(measurementPoints, null);
+ }
+
+ /* update the measurement-values repository */
+ {
+ IModifier<?, Collection<MeasurementValue>, ?> modifier = ((IServiceLogicController<?>) getContext()).getModifierFactory().create(MeasurementDefaults.SCOPE_STORE_MEASUREMENT_VALUES, Version.valueOf(1));
+
+ modifier.modify(measurementValues, null);
+ }
+ }
+
+ return null;
+ }
+
+ // Properties
+ @Override
+ public ILogger getLogger() {
+
+ return LOGGER;
+ }
+
+}
diff --git a/dev/logic/src/main/resources/.gitignore b/dev/logic/src/main/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/logic/src/main/resources/.gitignore
diff --git a/dev/logic/src/test/java/.gitignore b/dev/logic/src/test/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/logic/src/test/java/.gitignore
diff --git a/dev/logic/src/test/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/referencefactories/ReferenceMeasurementValueFactoryTest.java b/dev/logic/src/test/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/referencefactories/ReferenceMeasurementValueFactoryTest.java
new file mode 100644
index 0000000..1f65d06
--- /dev/null
+++ b/dev/logic/src/test/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/processor/referencefactories/ReferenceMeasurementValueFactoryTest.java
@@ -0,0 +1,239 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.referencefactories;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.UUID;
+
+import org.eclipse.openk.common.date.DefaultTimer;
+import org.eclipse.openk.common.messaging.messages.FailedToFindException;
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+import org.eclipse.openk.common.test.IUnitTest;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementPoint;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementType;
+import org.eclipse.openk.domain.measurement.model.core.MeasurementValue;
+import org.eclipse.openk.domain.measurement.model.core.Sensor;
+import org.eclipse.openk.service.logic.IServiceLogicController;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.referencefactories.ReferenceMeasurementValueFactory.Range;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.mockito.Mockito;
+
+/**
+ * The test for the {@link ReferenceMeasurementValueFactory}.
+ *
+ * @author 2018-11-02 Renko Ortgies
+ */
+@SuppressWarnings("checkstyle:magicnumber")
+@SuppressWarningsReason(reasons = Reason.Checkstyle_MagicNumberInTest)
+public final class ReferenceMeasurementValueFactoryTest implements IUnitTest {
+
+ // Constants
+ private static final IServiceLogicController<?> CONTEXT_MOCK = Mockito.spy(IServiceLogicController.class);
+
+ // Rules
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
+ // Methods
+ @Test
+ public void create_thenResultIsCorrect() {
+
+ /* Given */
+ ReferenceMeasurementValueFactory factory = new ReferenceMeasurementValueFactory();
+
+ /* When */
+ List<IEntity> result = factory.create(CONTEXT_MOCK);
+
+ /* Then */
+ assertThat(result).isNotNull();
+ for(IEntity entity : result)
+ assertThat(entity.hasKey()).isTrue();
+
+ assertThat(result.size()).isEqualTo(6);
+ }
+
+ @Test
+ public void createMeasurementPoint_whenMeasurementTypeIsAngle_thenResultIsMeasurementPoint() {
+
+ /* Given */
+ ReferenceMeasurementValueFactory factory = new ReferenceMeasurementValueFactory();
+
+ /* When */
+ MeasurementPoint result = factory.createMeasurementPoint(ReferenceMeasurementValueFactory.POWER_TRANSFORMER_TERMINAL_UUID, UUID.randomUUID(), UUID.randomUUID(), MeasurementType.Angle);
+
+ /* Then */
+ assertThat(result.getName()).isEqualTo("MeasurementPoint");
+ assertThat(result.getKey().getId()).isEqualTo(ReferenceMeasurementValueFactory.POWER_TRANSFORMER_TERMINAL_UUID);
+ }
+
+ @Test
+ public void createMeasurmentValue_thenResultIsMeasurementValue() {
+
+ /* Given */
+ ReferenceMeasurementValueFactory factory = new ReferenceMeasurementValueFactory();
+ MeasurementPoint measurementPoint = factory.createMeasurementPoint(ReferenceMeasurementValueFactory.POWER_TRANSFORMER_TERMINAL_UUID, UUID.randomUUID(), UUID.randomUUID(), MeasurementType.Angle);
+
+ /* When */
+ MeasurementValue result = factory.createMeasurmentValue(measurementPoint, MeasurementType.Angle, new DefaultTimer(), 33d);
+
+ /* Then */
+ assertThat(result.getName()).isEqualTo("MeasurementValue");
+ assertThat(result.getValue()).isEqualTo(33d);
+ }
+
+ @Test
+ public void createRandomSensor_thenResultIsSensor() {
+
+ /* Given */
+ ReferenceMeasurementValueFactory factory = new ReferenceMeasurementValueFactory();
+
+ /* When */
+ Sensor result = factory.createRandomSensor(MeasurementType.Angle);
+
+ /* Then */
+ assertThat(result.getDescription()).isEqualTo("Angle");
+ assertThat(result.getMeasurementType()).isEqualTo(MeasurementType.Angle);
+ }
+
+ @Test
+ public void createValue_whenRangeWithoutUseRange_thenResultIsBetween() {
+
+ /* Given */
+ ReferenceMeasurementValueFactory factory = new ReferenceMeasurementValueFactory();
+ Range range = new Range(-20, 20, true);
+
+ /* When */
+ double result = factory.createValue(range);
+
+ /* Then */
+ assertThat(result).isBetween(Double.valueOf(-20), Double.valueOf(20));
+ }
+
+ @Test
+ public void createValue_whenRangeWithUseRange_thenResultIsExact() {
+
+ /* Given */
+ ReferenceMeasurementValueFactory factory = new ReferenceMeasurementValueFactory();
+ Range range = new Range(0, 1, false);
+
+ /* When */
+ double result = factory.createValue(range);
+
+ /* Then */
+ assertThat(result).isGreaterThanOrEqualTo(0);
+ assertThat(result).isLessThanOrEqualTo(1);
+ }
+
+ @Test
+ public void fetchRange_whenMeasurementTypeIsAngle_thenThrowFailedToFindException() {
+
+ /* Given */
+ ReferenceMeasurementValueFactory factory = new ReferenceMeasurementValueFactory();
+
+ /* Then */
+ thrown.expect(FailedToFindException.class);
+
+ /* When */
+ factory.fetchRange(MeasurementType.Angle);
+ }
+
+ @Test
+ public void fetchRange_whenMeasurementTypeIsThreePhaseActivePower_thenResultIsCorrectRange() {
+
+ /* Given */
+ ReferenceMeasurementValueFactory factory = new ReferenceMeasurementValueFactory();
+
+ /* When */
+ Range result = factory.fetchRange(MeasurementType.ThreePhaseActivePower);
+
+ /* Then */
+ assertThat(result.getMinValue()).isEqualTo(-10d);
+ assertThat(result.getMaxValue()).isEqualTo(10d);
+ }
+
+ @Test
+ public void toMeasurementPoints_whenMeasurementIds_thenResultCorrect() {
+
+ /* Given */
+ ReferenceMeasurementValueFactory factory = new ReferenceMeasurementValueFactory();
+ Collection<UUID> measurementPointIds = new ArrayList<>();
+ measurementPointIds.add(ReferenceMeasurementValueFactory.POWER_TRANSFORMER_TERMINAL_UUID);
+
+ /* When */
+ List<IEntity> result = (List<IEntity>) factory.toMeasurementPoints(measurementPointIds, ReferenceMeasurementValueFactory.POWER_TRANSFORMER_UUID, ReferenceMeasurementValueFactory.POWER_TRANSFORMER_TERMINAL_UUID, MeasurementType.LineToLineVoltage, MeasurementType.LineToLineVoltage);
+
+ /* Then */
+ assertThat(result).isNotNull();
+ assertThat(result.size()).isEqualTo(3);
+ assertThat(result.get(0).getKey().getId()).isEqualTo(ReferenceMeasurementValueFactory.POWER_TRANSFORMER_TERMINAL_UUID);
+ assertThat(result.get(0).getDescription()).contains("MeasurementPoint");
+ assertThat(result.get(1).getDescription()).contains("MeasurementValue");
+ assertThat(result.get(2).getDescription()).contains("MeasurementValue");
+ }
+
+ @Test
+ public void toMeasurementPoints_whenMeasurementIdsIsNull_thenResultIsNull() {
+
+ /* Given */
+ ReferenceMeasurementValueFactory factory = new ReferenceMeasurementValueFactory();
+ Collection<UUID> measurementPointIds = null;
+
+ /* When */
+ Collection<IEntity> result = factory.toMeasurementPoints(measurementPointIds, UUID.randomUUID(), UUID.randomUUID(), MeasurementType.PhaseVoltage, MeasurementType.LineToLineVoltage);
+
+ /* Then */
+ assertThat(result).isNull();
+ }
+
+ @Test
+ public void toMeasurementPoints_whenNoTerminalId_thenResultCorrect() {
+
+ /* Given */
+ ReferenceMeasurementValueFactory factory = new ReferenceMeasurementValueFactory();
+
+ /* When */
+ List<IEntity> result = (List<IEntity>) factory.toMeasurementPoints(ReferenceMeasurementValueFactory.BREAKER_REFERENCE_UUID, null, MeasurementType.LineCurrent, MeasurementType.LineToLineVoltage);
+
+ /* Then */
+ assertThat(result).isNotNull();
+ assertThat(result.size()).isEqualTo(3);
+ assertThat(result.get(0).getKey().getId()).isEqualTo(ReferenceMeasurementValueFactory.BREAKER_REFERENCE_UUID);
+ assertThat(result.get(1).getDescription()).contains("MeasurementValue");
+ }
+
+ @Test
+ public void toMeasurementPoints_whenTerminalId_thenResultCorrect() {
+
+ /* Given */
+ ReferenceMeasurementValueFactory factory = new ReferenceMeasurementValueFactory();
+
+ /* When */
+ List<IEntity> result = (List<IEntity>) factory.toMeasurementPoints(ReferenceMeasurementValueFactory.POWER_TRANSFORMER_UUID, ReferenceMeasurementValueFactory.POWER_TRANSFORMER_TERMINAL_UUID, MeasurementType.LineCurrent, MeasurementType.LineToLineVoltage);
+
+ /* Then */
+ assertThat(result).isNotNull();
+ assertThat(result.size()).isEqualTo(3);
+ assertThat(result.get(0).getKey().getId()).isEqualTo(ReferenceMeasurementValueFactory.POWER_TRANSFORMER_TERMINAL_UUID);
+ assertThat(result.get(1).getDescription()).contains("MeasurementValue");
+ }
+} \ No newline at end of file
diff --git a/dev/logic/src/test/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/GenerateMeasurements_1_TaskTest.java b/dev/logic/src/test/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/GenerateMeasurements_1_TaskTest.java
new file mode 100644
index 0000000..f2c07ad
--- /dev/null
+++ b/dev/logic/src/test/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/GenerateMeasurements_1_TaskTest.java
@@ -0,0 +1,98 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.task;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.eclipse.openk.common.Version;
+import org.eclipse.openk.common.test.IUnitTest;
+import org.eclipse.openk.domain.measurement.core.MeasurementDefaults;
+import org.eclipse.openk.service.core.logic.modifier.IModifier;
+import org.eclipse.openk.service.core.logic.modifier.IModifierFactory;
+import org.eclipse.openk.service.core.logic.modifier.ModifierConfiguration;
+import org.eclipse.openk.service.logic.IServiceLogicController;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+/**
+ * The test for the {@link GenerateMeasurements_1_Task}.
+ *
+ * @author 2018-10-29 Renko Ortgies
+ */
+public final class GenerateMeasurements_1_TaskTest implements IUnitTest {
+
+ // Constants
+ private static final IServiceLogicController<?> CONTEXT_MOCK = Mockito.spy(IServiceLogicController.class);
+
+ @Before
+ public void setup() {
+
+ /* mock modifier factory */
+ IModifierFactory mockModifierFactory = Mockito.mock(IModifierFactory.class);
+
+ /* mock modifier for store measurement-points */
+ IModifier<ModifierConfiguration, Object, Object> mockStoreMeasurmentPointsModifier = Mockito.spy(IModifier.class);
+ Mockito.when(CONTEXT_MOCK.getModifierFactory()).thenReturn(mockModifierFactory);
+ Mockito.when(mockModifierFactory.create(MeasurementDefaults.SCOPE_STORE_MEASUREMENT_POINTS, Version.valueOf(1))).thenReturn(mockStoreMeasurmentPointsModifier);
+
+ /* mock modifier for store measurement-values */
+ IModifier<ModifierConfiguration, Object, Object> mockStoreMeasurmentValuesModifier = Mockito.spy(IModifier.class);
+ Mockito.when(CONTEXT_MOCK.getModifierFactory()).thenReturn(mockModifierFactory);
+ Mockito.when(mockModifierFactory.create(MeasurementDefaults.SCOPE_STORE_MEASUREMENT_VALUES, Version.valueOf(1))).thenReturn(mockStoreMeasurmentValuesModifier);
+
+ }
+
+ // Methods
+ @Test
+ public void executeTaks_whenMeasurmentsGiven_thenTaskCanBeExecuted() throws IllegalArgumentException, IOException {
+
+ /* Given */
+ GenerateMeasurements_1_Task task = new GenerateMeasurements_1_Task(CONTEXT_MOCK);
+
+ List<UUID> measurementPointIds = new ArrayList<>();
+
+ measurementPointIds.add(UUID.fromString("80b78485-4332-4d76-b8bb-1ce561a432f7"));
+ measurementPointIds.add(UUID.fromString("821a2d29-3e8f-4a9b-9ea4-6b465bfbcb7b"));
+ measurementPointIds.add(UUID.fromString("8265c2b5-5a0d-401b-8f4b-07994df8a663"));
+
+ /* When */
+ Void result = task.execute(measurementPointIds, null);
+
+ /* Then */
+ assertThat(result).isNull();
+
+ }
+
+ @Test
+ public void executeTaks_whenMeasurmentsNull_thenTaskCanBeExecuted() throws IllegalArgumentException, IOException {
+
+ /* Given */
+ GenerateMeasurements_1_Task task = new GenerateMeasurements_1_Task(CONTEXT_MOCK);
+
+ List<UUID> measurementPointIds = null;
+
+ /* When */
+ Void result = task.execute(measurementPointIds, null);
+
+ /* Then */
+ assertThat(result).isNull();
+ }
+} \ No newline at end of file
diff --git a/dev/logic/src/test/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/ResetMeasurements_1_TaskTest.java b/dev/logic/src/test/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/ResetMeasurements_1_TaskTest.java
new file mode 100644
index 0000000..6befa0f
--- /dev/null
+++ b/dev/logic/src/test/java/org/eclipse/openk/sourcesystem/mockupmeasurement/logic/task/ResetMeasurements_1_TaskTest.java
@@ -0,0 +1,95 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.logic.task;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.IOException;
+
+import org.eclipse.openk.common.Version;
+import org.eclipse.openk.common.test.IUnitTest;
+import org.eclipse.openk.domain.measurement.core.MeasurementDefaults;
+import org.eclipse.openk.service.core.logic.modifier.IModifier;
+import org.eclipse.openk.service.core.logic.modifier.IModifierFactory;
+import org.eclipse.openk.service.core.logic.modifier.ModifierConfiguration;
+import org.eclipse.openk.service.logic.IServiceLogicController;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.referencefactories.ReferenceMeasurementValueFactory;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+/**
+ * The test for the {@link ResetMeasurements_1_Task}.
+ *
+ * @author 2018-10-29 Renko Ortgies
+ */
+public final class ResetMeasurements_1_TaskTest implements IUnitTest {
+
+ // Constants
+ private static final IServiceLogicController<?> CONTEXT_MOCK = Mockito.spy(IServiceLogicController.class);
+
+ @Before
+ public void setup() {
+
+ /* mock modifier factory */
+ IModifierFactory mockModifierFactory = Mockito.mock(IModifierFactory.class);
+ Mockito.when(CONTEXT_MOCK.getModifierFactory()).thenReturn(mockModifierFactory);
+
+ /* mock modifier for store data */
+ IModifier<ModifierConfiguration, Object, Object> mockDeleteModifier = Mockito.spy(IModifier.class);
+ Mockito.when(mockModifierFactory.create(MeasurementDefaults.SCOPE_CLEAR_MEASUREMENT_REPOSITORIES, Version.valueOf(1))).thenReturn(mockDeleteModifier);
+
+ /* mock modifier for store measurement-points */
+ IModifier<ModifierConfiguration, Object, Object> mockStoreMeasurmentPointsModifier = Mockito.spy(IModifier.class);
+ Mockito.when(mockModifierFactory.create(MeasurementDefaults.SCOPE_STORE_MEASUREMENT_POINTS, Version.valueOf(1))).thenReturn(mockStoreMeasurmentPointsModifier);
+
+ /* mock modifier for store measurement-values */
+ IModifier<ModifierConfiguration, Object, Object> mockStoreMeasurmentValuesModifier = Mockito.spy(IModifier.class);
+ Mockito.when(mockModifierFactory.create(MeasurementDefaults.SCOPE_STORE_MEASUREMENT_VALUES, Version.valueOf(1))).thenReturn(mockStoreMeasurmentValuesModifier);
+
+ }
+
+ // Methods
+ @Test
+ public void executeTaks_whenMeasurmentsGiven_thenTaskCanBeExecuted() throws IllegalArgumentException, IOException {
+
+ /* Given */
+
+ ResetMeasurements_1_Task task = new ResetMeasurements_1_Task(CONTEXT_MOCK);
+
+ /* When */
+ Void result = task.execute(ReferenceMeasurementValueFactory.getInstace().create(CONTEXT_MOCK), null);
+
+ /* Then */
+ assertThat(result).isNull();
+
+ }
+
+ @Test
+ public void executeTaks_whenMeasurmentsNull_thenTaskCanBeExecuted() throws IllegalArgumentException, IOException {
+
+ /* Given */
+
+ ResetMeasurements_1_Task task = new ResetMeasurements_1_Task(CONTEXT_MOCK);
+
+ /* When */
+ Void result = task.execute(null, null);
+
+ /* Then */
+ assertThat(result).isNull();
+
+ }
+
+} \ No newline at end of file
diff --git a/dev/logic/src/test/resources/.gitignore b/dev/logic/src/test/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/logic/src/test/resources/.gitignore
diff --git a/dev/model/pom.xml b/dev/model/pom.xml
new file mode 100644
index 0000000..fa208ba
--- /dev/null
+++ b/dev/model/pom.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.eclipse.openk.source-system.mock-up-measurement</groupId>
+ <artifactId>mock-up-measurement-model</artifactId>
+ <version>2.20.0</version>
+ <name>${project.groupId}.${project.artifactId}</name>
+
+ <parent>
+ <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+ <artifactId>build-parentpom-model</artifactId>
+ <version>2.20.0</version>
+ <relativePath></relativePath>
+ </parent>
+
+ <dependencies>
+ <!-- org.eclipse -->
+ <dependency>
+ <groupId>org.eclipse.openk.source-system.mock-up-measurement</groupId>
+ <artifactId>mock-up-measurement-core</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.openk.cim.profile</groupId>
+ <artifactId>openkonsequenz</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+
+ <!-- org.eclipse.openk -->
+ <dependency>
+ <groupId>org.eclipse.openk.service</groupId>
+ <artifactId>service-model</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+ </dependencies>
+
+
+</project> \ No newline at end of file
diff --git a/dev/model/src/main/java/.gitignore b/dev/model/src/main/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/model/src/main/java/.gitignore
diff --git a/dev/model/src/main/resources/.gitignore b/dev/model/src/main/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/model/src/main/resources/.gitignore
diff --git a/dev/model/src/test/java/.gitignore b/dev/model/src/test/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/model/src/test/java/.gitignore
diff --git a/dev/model/src/test/resources/.gitignore b/dev/model/src/test/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/model/src/test/resources/.gitignore
diff --git a/dev/pom.xml b/dev/pom.xml
new file mode 100644
index 0000000..7b3f287
--- /dev/null
+++ b/dev/pom.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.eclipse.openk.source-system.mock-up-measurement</groupId>
+ <artifactId>mock-up-measurement</artifactId>
+ <version>0.0.1</version>
+ <packaging>pom</packaging>
+ <name>mock-up-measurement project aggregator</name>
+ <description>Aggregator POM for the mock-up-measurement modules</description>
+
+ <parent>
+ <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+ <artifactId>build-parentpom-aggregator-base</artifactId>
+ <version>0.0.1</version>
+ <relativePath></relativePath>
+ </parent>
+
+ <modules>
+ <!-- Sortierung nach Architektur -->
+ <module>service</module>
+ <module>infrastructure</module>
+ <module>adapter</module>
+ <module>logic</module>
+ <module>model</module>
+ <module>core</module>
+ </modules>
+</project>
diff --git a/dev/service/pom.xml b/dev/service/pom.xml
new file mode 100644
index 0000000..b5301d9
--- /dev/null
+++ b/dev/service/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.eclipse.openk.source-system.mock-up-measurement</groupId>
+ <artifactId>mock-up-measurement-service</artifactId>
+ <version>2.20.0</version>
+ <name>${project.groupId}.${project.artifactId}</name>
+
+ <parent>
+ <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+ <artifactId>build-parentpom-service</artifactId>
+ <version>2.20.0</version>
+ <relativePath></relativePath>
+ </parent>
+
+ <dependencies>
+ <!-- org.eclipse -->
+ <dependency>
+ <groupId>org.eclipse.openk.source-system.mock-up-measurement</groupId>
+ <artifactId>mock-up-measurement-infrastructure</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.openk.domain.measurement</groupId>
+ <artifactId>measurement-adapter</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.openk.service</groupId>
+ <artifactId>service-service</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+ </dependencies>
+
+</project> \ No newline at end of file
diff --git a/dev/service/src/main/java/.gitignore b/dev/service/src/main/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/service/src/main/java/.gitignore
diff --git a/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/MeasurementPointIds.java b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/MeasurementPointIds.java
new file mode 100644
index 0000000..1490aee
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/MeasurementPointIds.java
@@ -0,0 +1,288 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+
+/**
+ * The test class for {@link MeasurementPointIds}.
+ *
+ * @author 2018-05-14 Frank Jäger
+ * @author 2018-05-14 Renko Ortgies
+ */
+public final class MeasurementPointIds {
+
+ // Constructors
+ @SuppressWarnings("checkstyle:javadocmethod")
+ @SuppressWarningsReason(reasons = Reason.Checkstyle_ConstructorWithoutParameter)
+ private MeasurementPointIds() {
+
+ /* NoOp */
+ }
+
+ // Methods
+ /**
+ * Create a list of measurement-point-ids .
+ *
+ * @return
+ * the measurement-point-ids
+ */
+ @SuppressWarnings({ "checkstyle:magicnumber", "checkstyle:methodlength", "checkstyle:javancss" })
+ @SuppressWarningsReason(reasons = { Reason.Checkstyle_MagicNumberInInitializations, Reason.Checkstyle_UncriticalMethodLengthInInitializations, Reason.Checkstyle_UncriticalJavaNcssInInitializations })
+ public static List<UUID> create() {
+
+ List<UUID> result = new ArrayList<>(250);
+
+ result.add(UUID.fromString("80b78485-4332-4d76-b8bb-1ce561a432f7")); /* Disconnector */
+ result.add(UUID.fromString("821a2d29-3e8f-4a9b-9ea4-6b465bfbcb7b")); /* Breaker */
+ result.add(UUID.fromString("8265c2b5-5a0d-401b-8f4b-07994df8a663")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("860bbe70-8326-452b-9de1-67be9b1a6533")); /* Disconnector */
+ result.add(UUID.fromString("86689b8b-f053-470c-b8f6-6195b5dda450")); /* Breaker */
+ result.add(UUID.fromString("870014c7-381a-4e65-9d9c-da73b585a653")); /* Disconnector */
+ result.add(UUID.fromString("87450de3-6245-450e-9cbc-b5a0e787b026")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("8871898d-14f4-4484-8023-1edcd27ad36b")); /* Disconnector */
+ result.add(UUID.fromString("88b5bd83-05f1-4070-a259-95ff8c1a3aaa")); /* Disconnector */
+ result.add(UUID.fromString("8b169ce1-7432-4ce4-981c-b9c4d1bd1408")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("8bd96c16-f07f-436f-be72-cc58eb4ed123")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("8d43cf05-c754-45cd-bbae-2fa6f89d60b1")); /* Disconnector */
+ result.add(UUID.fromString("8e06f294-2746-44a2-8c95-f1b2196b3794")); /* Disconnector */
+ result.add(UUID.fromString("8e108691-d07c-4a11-a320-6caab3313cd3")); /* Breaker */
+ result.add(UUID.fromString("8f021f4e-223e-4362-8588-7b5f0cd3c781")); /* Breaker */
+ result.add(UUID.fromString("8f8c8437-a6a5-4009-87f5-f1585e47459b")); /* Disconnector */
+ result.add(UUID.fromString("90af910f-fc1d-4f95-a3ef-28e2ccd2919d")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("92a141ef-0fa0-4c20-a24e-42f5c0b121af")); /* Disconnector */
+ result.add(UUID.fromString("92a1dabf-a243-41cd-99c4-733135e0b368")); /* Disconnector */
+ result.add(UUID.fromString("9496ce6e-46a0-4881-b174-af5f614a70ff")); /* Disconnector */
+ result.add(UUID.fromString("94e6de7f-c97d-42f0-9b11-532fd67101b4")); /* Breaker */
+ result.add(UUID.fromString("978e75bb-cadb-4f34-a0f8-1a2e2c2c87a6")); /* Breaker */
+ result.add(UUID.fromString("97a5b15f-79e3-4b15-b879-2d6cfafa26c9")); /* Breaker */
+ result.add(UUID.fromString("9be803fc-54d8-4eed-910c-4bb584652f01")); /* Disconnector */
+ result.add(UUID.fromString("9c079812-f952-48f8-a593-93037293842f")); /* Disconnector */
+ result.add(UUID.fromString("9c8a8583-30b8-4621-866d-30aa027ba103")); /* Breaker */
+ result.add(UUID.fromString("9d6f5ce6-1427-4e0b-8d66-9cac68afd2eb")); /* Disconnector */
+ result.add(UUID.fromString("9f793721-a7f1-435e-a05f-79e679978f8d")); /* Disconnector */
+ result.add(UUID.fromString("a049cad1-c44f-4169-b13d-9acd722762a9")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("a0bd5445-d5eb-43fc-b3ba-8ae09fb4c4af")); /* Breaker */
+ result.add(UUID.fromString("a1e4c937-2022-4135-8403-4f7652069d18")); /* Disconnector */
+ result.add(UUID.fromString("a5067f21-5b0b-44f1-8951-a90733a13aed")); /* Breaker */
+ result.add(UUID.fromString("a5182b6d-3d3e-48ad-b742-1206bbd4479c")); /* Disconnector */
+ result.add(UUID.fromString("a5ea21e0-19cd-4865-ba47-09d3d24933b5")); /* Disconnector */
+ result.add(UUID.fromString("a613b2fc-b856-4559-814c-e96164196459")); /* Disconnector */
+ result.add(UUID.fromString("abd227bb-9c49-45e1-abc2-3094724b9166")); /* Disconnector */
+ result.add(UUID.fromString("ac86d06d-09af-4931-a98c-b31bb1416ded")); /* Breaker */
+ result.add(UUID.fromString("ac99ed32-2b2f-4952-bb91-57d999e051ec")); /* Breaker */
+ result.add(UUID.fromString("adf77ab3-fc36-4230-9309-472edc528821")); /* Disconnector */
+ result.add(UUID.fromString("ae215a42-0a58-4eff-81f6-8898bd8503d3")); /* Breaker */
+ result.add(UUID.fromString("af00209b-fd02-46a5-b3eb-5d00dd6d9c1a")); /* Disconnector */
+ result.add(UUID.fromString("b0a177c9-81b3-47ef-aa19-73ef459db73e")); /* Disconnector */
+ result.add(UUID.fromString("b112d5f8-da0c-427e-ab22-6156f96de914")); /* Disconnector */
+ result.add(UUID.fromString("b1568f92-c36c-427b-85d3-14131f1f62ce")); /* Disconnector */
+ result.add(UUID.fromString("b21357cd-35b1-4cf0-80da-de9cbcbc8013")); /* Breaker */
+ result.add(UUID.fromString("b4b55437-a817-420a-b61c-a710c303fe39")); /* Breaker */
+ result.add(UUID.fromString("b7225369-350a-4b63-8fb0-837c9331ac87")); /* Disconnector */
+ result.add(UUID.fromString("b747152a-13e3-4f88-bd2c-7f0bb04a2980")); /* Disconnector */
+ result.add(UUID.fromString("b8211112-0f61-4579-a337-b5f5d5e26925")); /* Breaker */
+ result.add(UUID.fromString("b87c9873-2f18-4b6c-a918-d7aa0e19857d")); /* Disconnector */
+ result.add(UUID.fromString("b98886e8-8b2d-47f1-9a80-ae9855e5adcf")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("bc6cb474-bc81-4e21-b248-0d3629b81049")); /* Disconnector */
+ result.add(UUID.fromString("bcb104df-ea69-42df-86e9-5b3fd6181a50")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("bf070308-9160-4e9b-99f4-f6befa2115f1")); /* Breaker */
+ result.add(UUID.fromString("c1cce72e-8119-40b9-96e2-bc073b762619")); /* Disconnector */
+ result.add(UUID.fromString("c28b4a6d-9ac3-44d7-883c-44cb7826d3cc")); /* Breaker */
+ result.add(UUID.fromString("c364ba68-8a4a-4e5a-98d2-05dc36de2ab2")); /* Breaker */
+ result.add(UUID.fromString("c4a7eeb3-8741-4d53-aa99-b4d4bf1b7563")); /* Disconnector */
+ result.add(UUID.fromString("c51f0c5e-01c9-4ff7-9297-6b9c70199c09")); /* Disconnector */
+ result.add(UUID.fromString("c5e455fa-8c59-4ed4-a5be-e126b47054be")); /* Breaker */
+ result.add(UUID.fromString("c69a3b9a-7d0b-4d39-8a96-17126c527a27")); /* Disconnector */
+ result.add(UUID.fromString("c827dca2-a5e8-437e-9659-eabcf19900c5")); /* Disconnector */
+ result.add(UUID.fromString("c97c435c-706a-4fe8-ba74-0c8ef9474f66")); /* Breaker */
+ result.add(UUID.fromString("c9e12a9c-b243-428f-b416-15fae2d9a9af")); /* Disconnector */
+ result.add(UUID.fromString("ca29218e-906e-43fb-a5b1-d1a8bbf67123")); /* Breaker */
+ result.add(UUID.fromString("cb109f7a-16f9-4212-ac60-fad51d715704")); /* Disconnector */
+ result.add(UUID.fromString("cca36822-b1d8-414a-a743-c649cb38404e")); /* Breaker */
+ result.add(UUID.fromString("ccd5bbca-431a-4269-bd81-c2643da59889")); /* Breaker */
+ result.add(UUID.fromString("cd59034c-6c38-43b8-8b89-89cfcf04b5d2")); /* Disconnector */
+ result.add(UUID.fromString("d0c0e4e7-3e33-4049-b701-51df62020aef")); /* Breaker */
+ result.add(UUID.fromString("d2a7313b-0e99-4d6f-b8d9-611ec1d79429")); /* Disconnector */
+ result.add(UUID.fromString("d316fce0-e4ca-448d-ac3c-c6c740476797")); /* Breaker */
+ result.add(UUID.fromString("d464c420-4b70-412e-b102-075a0cd6910b")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("d5dbedab-4900-4f3c-ba8e-e881dc2a83a6")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("d63ae13b-fba2-4eca-b22c-d511cfc65c66")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("d6f4690b-ba69-44dc-bf2e-420f809403d6")); /* Disconnector */
+ result.add(UUID.fromString("d8d9995e-a005-4f27-9acc-dba88bb203ec")); /* Disconnector */
+ result.add(UUID.fromString("da2a4bc7-8cd1-4071-90c2-5f57495f3812")); /* Disconnector */
+ result.add(UUID.fromString("da79cf5d-04d2-4e1a-82b1-3fcd42fc272d")); /* Disconnector */
+ result.add(UUID.fromString("dafb91f0-0d93-4b5a-afff-b85b02b9beba")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("db20c0b4-b0e5-4ce8-9b2b-023117208d44")); /* Disconnector */
+ result.add(UUID.fromString("dc6e30b5-fc57-47dd-9e6c-6514f610303d")); /* Breaker */
+ result.add(UUID.fromString("dd58027b-74e7-48b0-92ab-a96eca0e9429")); /* Disconnector */
+ result.add(UUID.fromString("ddd95cdd-4d65-4fa4-a192-3ebe76946348")); /* Breaker */
+ result.add(UUID.fromString("df05f2b4-75cd-4fc3-8116-449a32f24ecd")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("df49a28a-6baf-4b4b-9e20-aecbd41460cc")); /* Breaker */
+ result.add(UUID.fromString("e17fc389-e2fe-4b75-bac4-0c30862511dd")); /* Breaker */
+ result.add(UUID.fromString("e2700254-e7d9-478a-a977-8a374f4d9127")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("e371b52a-74ea-41f6-8baf-1df86cc8fda6")); /* Breaker */
+ result.add(UUID.fromString("e41dbe49-4233-4468-8751-18be2d91ea9a")); /* Disconnector */
+ result.add(UUID.fromString("e5041c57-f590-4795-a209-15ca2280fe02")); /* Disconnector */
+ result.add(UUID.fromString("e62ffb13-9cc5-4692-9328-e4053dc96b18")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("e7bd6801-cca5-44bf-9607-9d6ea31029bb")); /* Breaker */
+ result.add(UUID.fromString("e9e40d3c-5201-4aff-af67-f60e2822112b")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("ea6beaa3-c353-4cf9-af4b-67f031ada31d")); /* Disconnector */
+ result.add(UUID.fromString("ec9e5fd8-38a3-4e17-b1c2-335f5cd56fc4")); /* Disconnector */
+ result.add(UUID.fromString("ed69dee4-443d-4066-a670-88906fd8633a")); /* Disconnector */
+ result.add(UUID.fromString("ed9efced-d511-4796-a306-3f7c74df51e0")); /* Disconnector */
+ result.add(UUID.fromString("eda351dc-8a6e-4d48-902c-a573718ea806")); /* Disconnector */
+ result.add(UUID.fromString("ef2d0f2b-f3b0-41ef-8cfa-5ce62b74c1e2")); /* Disconnector */
+ result.add(UUID.fromString("f1776ad4-b7ef-4ed9-950e-bfca8349924b")); /* Breaker */
+ result.add(UUID.fromString("f3ad32a2-360b-4327-b116-82c4b0448e12")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("f4d0eba2-5410-45c5-8f39-9362d405caf7")); /* Breaker */
+ result.add(UUID.fromString("f5a4f022-99b0-4152-9a42-02e0e05fd93a")); /* Disconnector */
+ result.add(UUID.fromString("fcaf4ee5-65eb-4ed7-911c-31ee025b2b0d")); /* Disconnector */
+ result.add(UUID.fromString("ff079d64-a28a-48be-8653-7491d06d6723")); /* Breaker */
+ result.add(UUID.fromString("ff445039-419a-49a8-b19e-c130f9fe5886")); /* Disconnector */
+ result.add(UUID.fromString("ff63285b-78ce-4cf4-b0c5-dd4b948ebe26")); /* Disconnector */
+ result.add(UUID.fromString("00eca222-961a-4448-b869-262b370cf2f2")); /* Disconnector */
+ result.add(UUID.fromString("03061792-7da5-4c5f-a7fb-b645a7c73423")); /* Breaker */
+ result.add(UUID.fromString("030f30eb-a742-4c4d-9f06-9d0408a2fe20")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("0377593e-1838-4659-9e04-4eddab73629e")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("04ed974f-9ce2-42f7-99a2-c272b6bbad6f")); /* Disconnector */
+ result.add(UUID.fromString("05c1a5f2-9dea-4f2a-af08-34e6e7b07487")); /* Disconnector */
+ result.add(UUID.fromString("05f7cf8b-507a-4b82-b06e-1c860a3f4646")); /* Breaker */
+ result.add(UUID.fromString("070ea575-c4e6-45db-951c-01b14aa1b733")); /* Disconnector */
+ result.add(UUID.fromString("0819dc99-c320-4694-bde2-3909b5d47215")); /* Breaker */
+ result.add(UUID.fromString("0833e5d0-29dc-4224-a827-b319f3a0b7a4")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("088652f8-d872-418c-9316-0f65404b64a8")); /* Disconnector */
+ result.add(UUID.fromString("08ace007-6f55-4e15-9154-a0c5c3aa56a2")); /* Breaker */
+ result.add(UUID.fromString("0980e6c8-87c4-4d95-892e-5695f6503a84")); /* Breaker */
+ result.add(UUID.fromString("0c84a2c5-99f3-4396-92cc-381e857f3887")); /* Breaker */
+ result.add(UUID.fromString("0d3f8787-7d06-429d-95e7-caa2c5ba1d19")); /* Disconnector */
+ result.add(UUID.fromString("0d785eea-a73c-4e4b-a10a-765c49b2e9a0")); /* Disconnector */
+ result.add(UUID.fromString("1128011e-0347-42ed-8b29-7c952aa6b692")); /* Disconnector */
+ result.add(UUID.fromString("1146dcb5-99ae-4466-bb6e-ead08919cf19")); /* Disconnector */
+ result.add(UUID.fromString("128b545e-bfa2-4251-bed2-e996e81a6b63")); /* Disconnector */
+ result.add(UUID.fromString("143fcff1-a402-400a-b20c-ad3fae4426f4")); /* Breaker */
+ result.add(UUID.fromString("14964579-22f9-4ab9-9239-38fd4115476b")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("15c0faf3-b4a9-40d3-9393-54e59c28ab78")); /* Disconnector */
+ result.add(UUID.fromString("18b2c4a0-33f1-4fd2-ad09-c9d5101f6319")); /* Disconnector */
+ result.add(UUID.fromString("1c0aaf61-144e-436f-ba72-985b75cc3385")); /* Disconnector */
+ result.add(UUID.fromString("1c23e415-4e5e-4a2b-a0e2-c722d8835c8b")); /* Breaker */
+ result.add(UUID.fromString("1c3927f7-fa8e-49d6-a328-c164b1ca6b97")); /* Disconnector */
+ result.add(UUID.fromString("1cce6940-4c5d-4e31-abac-18443cccbe07")); /* Breaker */
+ result.add(UUID.fromString("1ea21c9a-dbd9-4402-a12a-0349ec8b7832")); /* Disconnector */
+ result.add(UUID.fromString("1ede29df-885f-4507-bca6-79ee91ae3c38")); /* Disconnector */
+ result.add(UUID.fromString("1f213d15-108c-44a4-afe2-c117c39866e8")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("1f9e43bd-aa79-49a0-b027-d2d4cd5cb594")); /* Disconnector */
+ result.add(UUID.fromString("208f1428-6e22-4929-9103-31c7e698e906")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("20a8f874-f1d0-44af-b54e-9b2feea23733")); /* Breaker */
+ result.add(UUID.fromString("223110e5-34f9-4b68-bbff-7f041169a2cf")); /* Disconnector */
+ result.add(UUID.fromString("24cd5e1a-edd6-4f67-a9ad-b4050b84f3a4")); /* Disconnector */
+ result.add(UUID.fromString("251bdb04-ddcc-415f-aaca-6cc7ae3cdead")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("26189f8a-6f32-425b-9aca-3654f11b37ab")); /* Disconnector */
+ result.add(UUID.fromString("2688ddee-4b98-4969-982b-85214c6a4299")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("26c626b1-1908-45f8-b409-8ce873807062")); /* Breaker */
+ result.add(UUID.fromString("2831459b-be4a-49bf-a871-97229e981a7b")); /* Breaker */
+ result.add(UUID.fromString("288a7e89-0cb7-4779-9ce7-ec31f5db65db")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("2966bac7-ef28-4d2f-86bd-949b9c1d2718")); /* Breaker */
+ result.add(UUID.fromString("29a5501a-f03c-4029-b4d9-1d1c46c4df48")); /* Breaker */
+ result.add(UUID.fromString("2aa4a6b4-7c75-4dd2-8299-3f21f6b429d3")); /* Breaker */
+ result.add(UUID.fromString("2b26b72e-151b-456f-956b-ca512ac604b6")); /* Breaker */
+ result.add(UUID.fromString("2bd7440c-aa85-4fec-a3d2-48cb935f728d")); /* Disconnector */
+ result.add(UUID.fromString("2dc5e50f-984e-4b31-82ef-2a7b375cc06a")); /* Disconnector */
+ result.add(UUID.fromString("2ffb1e4d-3559-4319-afb0-6c92f70a8be8")); /* Breaker */
+ result.add(UUID.fromString("30b27dd1-b66b-4372-8d90-0a88fa50d70b")); /* Breaker */
+ result.add(UUID.fromString("32a76256-07ed-4334-997f-620de2c6d737")); /* Breaker */
+ result.add(UUID.fromString("334dea7f-84b9-4b7f-9bbc-1ca7e62b61ee")); /* Disconnector */
+ result.add(UUID.fromString("3414d5aa-afe9-4608-a7fb-d73b97ba98bf")); /* Breaker */
+ result.add(UUID.fromString("34b7c3af-e4c1-4c4a-93b8-b55dc0aa7d2c")); /* Breaker */
+ result.add(UUID.fromString("362b757f-6901-406f-9712-28c4710d1169")); /* Disconnector */
+ result.add(UUID.fromString("382c3948-8312-4ac6-9335-1e61d35b58cc")); /* Disconnector */
+ result.add(UUID.fromString("38de8f70-13ee-4726-9445-295e5386611f")); /* Disconnector */
+ result.add(UUID.fromString("3a1ba3e3-e9c7-4fb4-984f-0f2f3748c25e")); /* Breaker */
+ result.add(UUID.fromString("3ab9b4f2-1237-450f-9734-6ea73d2fd7cc")); /* Disconnector */
+ result.add(UUID.fromString("3ba81876-a89f-41ec-b1a4-79f64006e83a")); /* Disconnector */
+ result.add(UUID.fromString("3bc56d34-c559-4020-be06-f833efa9d22e")); /* Disconnector */
+ result.add(UUID.fromString("3c236d85-5627-4ee2-bee3-dda771556aba")); /* Breaker */
+ result.add(UUID.fromString("3ca1e605-b2c5-4edc-ae04-20c2bf3db571")); /* Disconnector */
+ result.add(UUID.fromString("3d9397a5-2ef6-43c9-8746-cedd7faae39c")); /* Disconnector */
+ result.add(UUID.fromString("3ef7d07a-2af3-4b3c-8c63-f6e063af9f18")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("4146a00d-3167-4a9d-80da-e7a00105be22")); /* Disconnector */
+ result.add(UUID.fromString("4211eb07-3da3-4087-a3fb-027bb8537dbf")); /* Disconnector */
+ result.add(UUID.fromString("446ba588-4d11-4a13-9ba8-c0a33afe7a61")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("450d43ff-e063-4db0-a6fa-8e0a5705e77f")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("455eedb9-ca30-41df-81be-bb006caa4a5c")); /* Disconnector */
+ result.add(UUID.fromString("45f05600-1dfd-46be-8f88-78bcaefa6f52")); /* Disconnector */
+ result.add(UUID.fromString("47180edf-9e36-4c10-9e08-f37326a61071")); /* Breaker */
+ result.add(UUID.fromString("478c33d6-7353-40c8-babf-c0abadb82f5f")); /* Disconnector */
+ result.add(UUID.fromString("47baa251-7d83-4638-985d-9ef3b5db07cb")); /* Disconnector */
+ result.add(UUID.fromString("4c337f2b-15ea-4c45-9ef7-94e4c792302c")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("4c53699a-1478-4ed3-ae8a-a9269560808d")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("4e728ab3-b61f-49c5-af42-11d8126f79a4")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("50a15f6e-fca1-4e34-94ac-8ed8c5998b87")); /* Breaker */
+ result.add(UUID.fromString("50d2f9e2-c59a-4f80-84ae-b9a80759eac0")); /* Disconnector */
+ result.add(UUID.fromString("51051cfd-b79e-4357-a923-bb78f338fb73")); /* Disconnector */
+ result.add(UUID.fromString("5161c2ca-484d-4d16-a74d-1b8a01a4ca19")); /* Disconnector */
+ result.add(UUID.fromString("51ba3fd4-cc52-48fe-98f8-93edf5baa811")); /* Disconnector */
+ result.add(UUID.fromString("533a8816-570a-453f-974b-21412b43b4ad")); /* Disconnector */
+ result.add(UUID.fromString("53654cce-ede5-43c2-bdb5-becfde0a3e16")); /* Disconnector */
+ result.add(UUID.fromString("543703e7-85c5-45cd-837c-fa1d3183a8f0")); /* Disconnector */
+ result.add(UUID.fromString("54bbbaf4-d327-4836-a632-b518acd256c5")); /* Disconnector */
+ result.add(UUID.fromString("54f1e3f3-bc58-4f73-abc6-cb360a41e4e5")); /* Disconnector */
+ result.add(UUID.fromString("54f238ea-9a0a-42ec-aed8-261878288387")); /* Disconnector */
+ result.add(UUID.fromString("556ed0dc-1531-4b77-b8df-54cd329bac42")); /* Breaker */
+ result.add(UUID.fromString("563d3fde-c1c5-4ee9-9a42-d04fdc4f70aa")); /* Disconnector */
+ result.add(UUID.fromString("56b20a85-6e8c-471f-bd4a-f962b3f8bc9f")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("5935fe0d-7826-46b9-9d67-a20f33ef933f")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("5a0a71f6-1708-4f21-b0e3-2da7ff8e905e")); /* Disconnector */
+ result.add(UUID.fromString("5c525a4f-1d74-4c78-983f-8b693fc00e16")); /* Disconnector */
+ result.add(UUID.fromString("5dade95a-79bb-41ac-88b1-e079fccc859c")); /* Disconnector */
+ result.add(UUID.fromString("5e501ace-ab51-47c4-9a39-98b8113c01db")); /* Disconnector */
+ result.add(UUID.fromString("6048306d-4fba-4b5f-bdbe-b64575f1dbc9")); /* Disconnector */
+ result.add(UUID.fromString("60f7094a-2383-4e88-8450-f17a9c0bbc7b")); /* Disconnector */
+ result.add(UUID.fromString("6163a732-7718-420a-9685-c748dfba07ff")); /* Disconnector */
+ result.add(UUID.fromString("66b4e7c5-614d-4de8-98cb-d231def180f4")); /* Disconnector */
+ result.add(UUID.fromString("67814a2d-3c42-4285-bd1b-6e517be51e5f")); /* Disconnector */
+ result.add(UUID.fromString("69bb80ca-763e-48ac-af45-823dbe354341")); /* Breaker */
+ result.add(UUID.fromString("6b06acf4-9391-41ce-b2e8-143c73d7fe1d")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("6c05ea5c-a9a7-4267-9e83-d11a3145037c")); /* Disconnector */
+ result.add(UUID.fromString("6c0b944b-d11d-46d4-9470-6b548255ef84")); /* Breaker */
+ result.add(UUID.fromString("6c5da28f-7d4d-46c1-9a2c-e4023936c9ce")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("6ef75dc4-508c-4252-8af7-9966c3012725")); /* Disconnector */
+ result.add(UUID.fromString("7132d9ac-5e6e-48f4-b930-df7ce50f2d9e")); /* Breaker */
+ result.add(UUID.fromString("716ba537-509f-420d-b80d-2419fe7c2cd7")); /* Disconnector */
+ result.add(UUID.fromString("72bd68cd-9f8d-44e5-a8f5-5302c02c0d70")); /* Breaker */
+ result.add(UUID.fromString("74bdaa31-db6d-4048-bb56-d80308faaf20")); /* Disconnector */
+ result.add(UUID.fromString("75061e87-9bf2-4929-8fe7-3a077b2ad2ee")); /* Disconnector */
+ result.add(UUID.fromString("76498b6e-e1c8-4575-ba5e-c2c8557fd627")); /* Disconnector */
+ result.add(UUID.fromString("7761b674-71ec-4d7a-b052-950c5f119c21")); /* Disconnector */
+ result.add(UUID.fromString("7a486f45-e869-4b53-820e-c0992eec5c94")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("7a4b0ff5-94c2-45a8-b7f1-5db9555ea3b4")); /* Disconnector */
+ result.add(UUID.fromString("7ac4aa9a-de3e-41b5-a114-0071a7cd60c8")); /* Disconnector */
+ result.add(UUID.fromString("7af6a657-d6d7-4db6-82c1-c25c4ffd608d")); /* Breaker */
+ result.add(UUID.fromString("7b09467c-265c-44a0-aff7-767b4e80c874")); /* Disconnector */
+ result.add(UUID.fromString("7b447c03-41b7-4bd8-9077-b57c94a352c6")); /* Disconnector */
+ result.add(UUID.fromString("7b58727b-10e0-461c-814f-c5cea0cb4c10")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("7cbf43ce-af8f-4fc6-abf1-80f18ee31c71")); /* Disconnector */
+ result.add(UUID.fromString("7d18bf83-c591-4e60-8302-cd615619cd54")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("7ea02f25-7eb8-48c8-9e7e-2bb6f64630c2")); /* LoadBreakSwitch */
+ result.add(UUID.fromString("7fe53ce2-58d5-4149-871c-a2fd45058e80")); /* Disconnector */
+
+ return result;
+ }
+} \ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/MockUpMeasurementService.java b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/MockUpMeasurementService.java
new file mode 100644
index 0000000..cbd4cf3
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/MockUpMeasurementService.java
@@ -0,0 +1,251 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.service;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import javax.annotation.PostConstruct;
+
+import org.eclipse.openk.common.Version;
+import org.eclipse.openk.common.command.Command;
+import org.eclipse.openk.common.command.CommandType;
+import org.eclipse.openk.common.command.StartCommandExecutionMessage;
+import org.eclipse.openk.common.command.UnknownCommandException;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.common.messaging.ThrowableNotificationWrapper;
+import org.eclipse.openk.common.messaging.messages.FailedToCreateException;
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+import org.eclipse.openk.domain.measurement.core.MeasurementDefaults;
+import org.eclipse.openk.service.core.ServiceInformation;
+import org.eclipse.openk.service.core.adapter.deserializer.IDeserializerFactory;
+import org.eclipse.openk.service.core.adapter.mapper.IMapperFactory;
+import org.eclipse.openk.service.core.adapter.receiver.IReceiverFactory;
+import org.eclipse.openk.service.core.adapter.responder.IResponderFactory;
+import org.eclipse.openk.service.core.adapter.serializer.ISerializerFactory;
+import org.eclipse.openk.service.core.logic.modifier.IModifierFactory;
+import org.eclipse.openk.service.core.logic.task.ITask;
+import org.eclipse.openk.service.core.logic.task.ITaskFactory;
+import org.eclipse.openk.service.core.logic.view.IViewFactory;
+import org.eclipse.openk.service.infrastructure.AbstractServiceInfrastructureController;
+import org.eclipse.openk.service.infrastructure.ServiceInfrastructureControllerConfiguration;
+import org.eclipse.openk.service.model.repository.IRepository;
+import org.eclipse.openk.service.model.repository.InMemoryRepository;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.core.MockUpMeasurementDefaults;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.processor.referencefactories.ReferenceMeasurementValueFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.stereotype.Service;
+
+/**
+ * The application starts here.
+ *
+ * @author 2017-09-25 Christian Brunzendorf
+ * @author 2018-05-07 Felix Korb
+ * @author 2018-05-14 Frank Jäger
+ * @author 2019-02-05 Renko Ortgies
+ */
+@Service
+@ServiceInformation(domain = MockUpMeasurementDefaults.DOMAIN)
+@SpringBootApplication(scanBasePackages = { "org.eclipse.openk" })
+public class MockUpMeasurementService extends AbstractServiceInfrastructureController<ServiceInfrastructureControllerConfiguration> {
+
+ // Constants
+ private static final ILogger LOGGER = LoggerFactory.createLogger(MockUpMeasurementService.class);
+
+ public static final String COMMAND_ADD = "add";
+ public static final String COMMAND_RESET = "reset";
+
+ // Attributes
+ /* injected attributes */
+ @Autowired
+ private IDeserializerFactory deserializerFactory;
+ @Autowired
+ private IMapperFactory mapperFactory;
+ @Autowired
+ private IModifierFactory modifierFactory;
+ @Autowired
+ private IReceiverFactory receiverFactory;
+ @Autowired
+ private IResponderFactory responderFactory;
+ @Autowired
+ private ISerializerFactory serializerFactory;
+ @Autowired
+ private ITaskFactory taskFactory;
+ @Autowired
+ private IViewFactory viewFactory;
+
+ // Constructors
+ @SuppressWarnings("checkstyle:javadocmethod")
+ @SuppressWarningsReason(reasons = Reason.Checkstyle_ConstructorWithoutParameter)
+ public MockUpMeasurementService() {
+
+ super(MockUpMeasurementService.class);
+ }
+
+ // Methods
+ @Override
+ public void executeCommand(Command command) throws IOException {
+
+ if(command != null)
+ switch(command.getType().getName().toLowerCase()) {
+ case COMMAND_ADD:
+
+ getLogger().info(new StartCommandExecutionMessage(command, "Creates the measurements!"));
+
+ try {
+ ITask<?, List<UUID>, ?, ?> task = taskFactory.create(MockUpMeasurementDefaults.TASK_GENERATE_MEASUREMENTS, Version.valueOf(1));
+
+ task.execute(MeasurementPointIds.create(), null);
+ }
+ catch(IOException exception) {
+ getLogger().error(new FailedToCreateException("measurements", "Creation of the measurements failed!", exception));
+ }
+
+ break;
+
+ case COMMAND_RESET:
+
+ getLogger().info(new StartCommandExecutionMessage(command, "Reset the measurements!"));
+
+ try {
+ ITask<?, List<IEntity>, ?, ?> task = taskFactory.create(MockUpMeasurementDefaults.TASK_RESET_MEASUREMENTS, Version.valueOf(1));
+
+ List<IEntity> input = ReferenceMeasurementValueFactory.getInstace().create(getContext());
+ task.execute(input, null);
+ }
+ catch(IOException exception) {
+ getLogger().error(new FailedToCreateException("measurements", "Reset of the measurements failed!", exception));
+ }
+
+ break;
+ default:
+ getLogger().warn(new UnknownCommandException(command));
+ }
+ }
+
+ @Override
+ @PostConstruct
+ public void initializeService() {
+
+ super.initializeService();
+
+ try {
+ executeCommand(new Command(new CommandType(COMMAND_RESET), null));
+ }
+ catch(IOException exception) {
+ LOGGER.error(new ThrowableNotificationWrapper(exception));
+ }
+
+ }
+
+ @Override
+ protected void initializeRepositories(Map<String, IRepository<? extends IEntity>> repositories) {
+
+ super.initializeRepositories(repositories);
+
+ /* add measurement-point repository */
+ {
+ IRepository<IEntity> measurementPointRepository = new InMemoryRepository<>();
+
+ repositories.put(MeasurementDefaults.REPOSITORY_KEY_MEASUREMENT_POINT, measurementPointRepository);
+ }
+
+ /* add measurement-value repository */
+ {
+ IRepository<IEntity> measurementValueRepository = new InMemoryRepository<>();
+
+ repositories.put(MeasurementDefaults.REPOSITORY_KEY_MEASUREMENT_VALUE, measurementValueRepository);
+ }
+ }
+
+ /**
+ * Starts the application.
+ *
+ * @param args
+ * the application arguments; can be <code>null</code> or empty
+ */
+ public static void main(final String[] args) {
+
+ SpringApplication.run(MockUpMeasurementService.class, args);
+ }
+
+ // Properties
+ @Override
+ protected final Class<ServiceInfrastructureControllerConfiguration> getConfigurationType() {
+
+ return ServiceInfrastructureControllerConfiguration.class;
+ }
+
+ @Override
+ public final IDeserializerFactory getDeserializerFactory() {
+
+ return deserializerFactory;
+ }
+
+ @Override
+ public final ILogger getLogger() {
+
+ return LOGGER;
+ }
+
+ @Override
+ public final IMapperFactory getMapperFactory() {
+
+ return mapperFactory;
+ }
+
+ @Override
+ public final IModifierFactory getModifierFactory() {
+
+ return modifierFactory;
+ }
+
+ @Override
+ public final IReceiverFactory getReceiverFactory() {
+
+ return receiverFactory;
+ }
+
+ @Override
+ public final IResponderFactory getResponderFactory() {
+
+ return responderFactory;
+ }
+
+ @Override
+ public final ISerializerFactory getSerializerFactory() {
+
+ return serializerFactory;
+ }
+
+ @Override
+ public final ITaskFactory getTaskFactory() {
+
+ return taskFactory;
+ }
+
+ @Override
+ public final IViewFactory getViewFactory() {
+
+ return viewFactory;
+ }
+} \ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/DeserializerFactory.java b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/DeserializerFactory.java
new file mode 100644
index 0000000..8907173
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/DeserializerFactory.java
@@ -0,0 +1,61 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.measurement.adapter.deserializer.Measurement_1_ApplicationXml_Cim17v07_Deserializer;
+import org.eclipse.openk.domain.measurement.adapter.deserializer.ServiceModel_1_ApplicationRdf_MeasurementModel_Deserializer;
+import org.eclipse.openk.service.adapter.deserializer.AbstractDeserializerFactory;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.deserializer.IDeserializer;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link IDeserializer}s.
+ *
+ * @author 2018-05-07 Felix Korb
+ * @author 2018-10-10 Renko Ortgies
+ */
+@Service
+public final class DeserializerFactory extends AbstractDeserializerFactory {
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public DeserializerFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+ /* measurement */
+ serviceComponentTypes.add(Measurement_1_ApplicationXml_Cim17v07_Deserializer.class);
+
+ /* service-model */
+ serviceComponentTypes.add(ServiceModel_1_ApplicationRdf_MeasurementModel_Deserializer.class);
+ }
+} \ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/MapperFactory.java b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/MapperFactory.java
new file mode 100644
index 0000000..7289120
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/MapperFactory.java
@@ -0,0 +1,72 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.measurement.adapter.mapper.exportmapper.measurement.Measurements_Measurement_Cim17v07_Mapper;
+import org.eclipse.openk.domain.measurement.adapter.mapper.exportmapper.measurementpoint.MeasurementPoints_MeasurementModel_Cim17v07_Mapper;
+import org.eclipse.openk.domain.measurement.adapter.mapper.exportmapper.measurementvalue.MeasurementValue_MeasurementModel_Cim17v07_Mapper;
+import org.eclipse.openk.domain.measurement.adapter.mapper.exportmapper.measurementvalue.MeasurementValues_MeasurementModel_Cim17v07_Mapper;
+import org.eclipse.openk.service.adapter.mapper.AbstractMapperFactory;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.mapper.IMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link IMapper}s.
+ *
+ * @author 2017-07-01 Christian Brunzendorf
+ * @author 2018-10-10 Renko Ortgies
+ */
+@Service
+public final class MapperFactory extends AbstractMapperFactory {
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public MapperFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+ /* measurement-points */
+ {
+ serviceComponentTypes.add(MeasurementPoints_MeasurementModel_Cim17v07_Mapper.class);
+ }
+
+ /* measurement-values */
+ {
+ /* export */
+ serviceComponentTypes.add(MeasurementValue_MeasurementModel_Cim17v07_Mapper.class);
+ serviceComponentTypes.add(MeasurementValues_MeasurementModel_Cim17v07_Mapper.class);
+
+ /* measurements */
+ serviceComponentTypes.add(Measurements_Measurement_Cim17v07_Mapper.class);
+ }
+ }
+} \ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ModifierFactory.java b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ModifierFactory.java
new file mode 100644
index 0000000..31e6774
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ModifierFactory.java
@@ -0,0 +1,59 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.measurement.logic.modifier.ClearMeasurementsRepository_1_Modifier;
+import org.eclipse.openk.domain.measurement.logic.modifier.StoreMeasurementPoints_1_Modifier;
+import org.eclipse.openk.domain.measurement.logic.modifier.StoreMeasurementValues_1_Modifier;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.logic.modifier.IModifier;
+import org.eclipse.openk.service.logic.modifier.AbstractModifierFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link IModifier}s.
+ *
+ * @author 2018-10-24 Renko Ortgies
+ */
+@Service
+public final class ModifierFactory extends AbstractModifierFactory {
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public ModifierFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+ serviceComponentTypes.add(ClearMeasurementsRepository_1_Modifier.class);
+ serviceComponentTypes.add(StoreMeasurementPoints_1_Modifier.class);
+ serviceComponentTypes.add(StoreMeasurementValues_1_Modifier.class);
+ }
+} \ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ReceiverFactory.java b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ReceiverFactory.java
new file mode 100644
index 0000000..12a638d
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ReceiverFactory.java
@@ -0,0 +1,60 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.measurement.adapter.receiver.ServiceModel_1_ApplicationRdf_Receiver;
+import org.eclipse.openk.service.adapter.command.Command_1_TextPlain_Receiver;
+import org.eclipse.openk.service.adapter.receiver.AbstractReceiverFactory;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.receiver.IReceiver;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link IReceiver}s.
+ *
+ * @author 2018-05-07 Felix Korb
+ */
+@Service
+public final class ReceiverFactory extends AbstractReceiverFactory {
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public ReceiverFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+ /* command */
+ serviceComponentTypes.add(Command_1_TextPlain_Receiver.class);
+
+ /* service-model */
+ serviceComponentTypes.add(ServiceModel_1_ApplicationRdf_Receiver.class);
+ }
+} \ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ResponderFactory.java b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ResponderFactory.java
new file mode 100644
index 0000000..af57a80
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ResponderFactory.java
@@ -0,0 +1,73 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.measurement.adapter.responder.MeasurementPoints_1_ApplicationXml_Responder;
+import org.eclipse.openk.domain.measurement.adapter.responder.Measurements_2_ApplicationXml_Responder;
+import org.eclipse.openk.service.adapter.responder.AbstractResponderFactory;
+import org.eclipse.openk.service.adapter.responder.ServiceModel_1_ApplicationRdf_Responder;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.responder.IResponder;
+import org.eclipse.openk.sourcesystem.measurement.adapter.responder.MeasurementPoints_4_ApplicationXml_Responder;
+import org.eclipse.openk.sourcesystem.measurement.adapter.responder.MeasurementValues_4_ApplicationXml_Responder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link IResponder}s.
+ *
+ * @author 2017-01-01 Felix Korb
+ * @author 2017-09-25 Christian Brunzendorf
+ * @author 2017-11-03 Michael Korta
+ */
+@Service
+public final class ResponderFactory extends AbstractResponderFactory {
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public ResponderFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+ /* service-model */
+ serviceComponentTypes.add(ServiceModel_1_ApplicationRdf_Responder.class);
+
+ /* source-system */
+ {
+ /* measurement-points */
+ serviceComponentTypes.add(MeasurementPoints_1_ApplicationXml_Responder.class);
+ serviceComponentTypes.add(MeasurementPoints_4_ApplicationXml_Responder.class);
+
+ /* measurement-values */
+ serviceComponentTypes.add(Measurements_2_ApplicationXml_Responder.class);
+ serviceComponentTypes.add(MeasurementValues_4_ApplicationXml_Responder.class);
+ }
+ }
+} \ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/SerializerFactory.java b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/SerializerFactory.java
new file mode 100644
index 0000000..671e729
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/SerializerFactory.java
@@ -0,0 +1,61 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.measurement.adapter.serializer.Measurement_1_Cim17v07_ApplicationXml_Serializer;
+import org.eclipse.openk.service.adapter.serializer.AbstractSerializerFactory;
+import org.eclipse.openk.service.adapter.serializer.ServiceModelRdfSerializer;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.serializer.ISerializer;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link ISerializer}s.
+ *
+ * @author 2017-01-01 Felix Korb
+ * @author 2017-09-25 Christian Brunzendorf
+ */
+@Service
+public final class SerializerFactory extends AbstractSerializerFactory {
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public SerializerFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+ /* service-model */
+ serviceComponentTypes.add(ServiceModelRdfSerializer.class);
+
+ /* source-system */
+ serviceComponentTypes.add(Measurement_1_Cim17v07_ApplicationXml_Serializer.class);
+ }
+} \ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/TaskFactory.java b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/TaskFactory.java
new file mode 100644
index 0000000..9ea6821
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/TaskFactory.java
@@ -0,0 +1,60 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.logic.task.ITask;
+import org.eclipse.openk.service.logic.task.AbstractTaskFactory;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.task.GenerateMeasurements_1_Task;
+import org.eclipse.openk.sourcesystem.mockupmeasurement.logic.task.ResetMeasurements_1_Task;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link ITask} for defined versions and types.
+ *
+ * @author 2018-05-14 Frank Jäger
+ * @author 2018-10-29 Renko Ortgies
+ */
+@Service
+public final class TaskFactory extends AbstractTaskFactory {
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public TaskFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+ /* measurements */
+ serviceComponentTypes.add(GenerateMeasurements_1_Task.class);
+ serviceComponentTypes.add(ResetMeasurements_1_Task.class);
+
+ }
+} \ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ViewFactory.java b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ViewFactory.java
new file mode 100644
index 0000000..039a106
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/sourcesystem/mockupmeasurement/service/factories/ViewFactory.java
@@ -0,0 +1,62 @@
+/*
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * -----------------------------------------------------------------------------
+ *
+ */
+package org.eclipse.openk.sourcesystem.mockupmeasurement.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.measurement.logic.view.MeasurementPoints_1_View;
+import org.eclipse.openk.domain.measurement.logic.view.MeasurementValues_1_View;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.logic.view.IView;
+import org.eclipse.openk.service.logic.view.AbstractViewFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link IView} for defined versions and types.
+ *
+ * @author 2018-10-12 Christian Brunzendorf
+ * @author 2017-01-01 Felix Korb
+ * @author 2017-11-03 Michael Korta
+ */
+@Service
+public final class ViewFactory extends AbstractViewFactory {
+
+ // Constructors
+ /**
+ * @param context
+ * the context
+ * @throws IllegalArgumentException
+ * Is thrown in the following cases:
+ * <ul>
+ * <li><code>context</code> is <code>null</code></li>
+ * </ul>
+ */
+ public ViewFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+ super(context);
+ }
+
+ // Methods
+ @Override
+ protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+ /* measurement-points */
+ serviceComponentTypes.add(MeasurementPoints_1_View.class);
+
+ /* measurements */
+ serviceComponentTypes.add(MeasurementValues_1_View.class);
+ }
+} \ No newline at end of file
diff --git a/dev/service/src/main/resources/.gitignore b/dev/service/src/main/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/service/src/main/resources/.gitignore
diff --git a/dev/service/src/main/resources/application.properties b/dev/service/src/main/resources/application.properties
new file mode 100644
index 0000000..12c2734
--- /dev/null
+++ b/dev/service/src/main/resources/application.properties
@@ -0,0 +1,28 @@
+## Spring configuration file (will be packed in executable JAR, may be overriden by command line switch
+## --spring.config.location=application.properties
+
+# server properties
+server.port=9706
+
+# logger properties (org.slf4j.Logger)
+
+## path of the logger-configuration.xml file
+logging.config=./src/main/resources/logger-configuration.xml
+
+## name of the log-file
+logging.file=mock-up-measurement-service
+
+## path for the log-file
+logging.path=${java.io.tmpdir}/logs
+
+## custom log-levels
+## logging.level.root is defined in logging.config-file, but can be overridden here
+logging.level.root=INFO
+
+## custom log-levels (base path is root, other paths override root settings)
+logging.level.com.btc=DEBUG
+logging.level.org.eclipse.openk=DEBUG
+logging.level.org.hibernate=WARN
+logging.level.org.springframework=WARN
+logging.level.org.apache=WARN
+logging.level.org.eclipse.persistence=WARN
diff --git a/dev/service/src/main/resources/favicon.ico b/dev/service/src/main/resources/favicon.ico
new file mode 100644
index 0000000..cf3d1fd
--- /dev/null
+++ b/dev/service/src/main/resources/favicon.ico
Binary files differ
diff --git a/dev/service/src/main/resources/logger-configuration.xml b/dev/service/src/main/resources/logger-configuration.xml
new file mode 100644
index 0000000..e5083fd
--- /dev/null
+++ b/dev/service/src/main/resources/logger-configuration.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright © 2015-2019 PSI AG - http://www.psi.de
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+
+ http://www.eclipse.org/legal/epl-v10.html
+-->
+
+<configuration>
+ <!-- Properties -->
+ <property name="LOG_FILE_NAME" value="${LOG_FILE}" /><!-- from application.properties: logging.file -->
+ <property name="LOG_FILE_EXTENSION" value="log" />
+ <property name="LOG_FILE_PATH" value="${LOG_PATH}" /> <!-- from application.properties: logging.path -->
+ <property name="LOG_PATTERN" value="%d{HH:mm:ss.SSS} [%-5level] %logger{10} - %msg%n" /> <!-- logger{10} defines the length of logged package name -->
+
+ <!-- ConsoleAppender -->
+ <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>
+ ${LOG_PATTERN}
+ </pattern>
+ </encoder>
+ </appender>
+
+ <!-- RollingFileAppender -->
+ <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${LOG_FILE_PATH}/${LOG_FILE_NAME}.${LOG_FILE_EXTENSION}</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+
+ <!-- rollover daily -->
+ <fileNamePattern>${LOG_FILE_PATH}/${LOG_FILE_NAME}-%d{yyyy-MM-dd}.%i.${LOG_FILE_EXTENSION}</fileNamePattern>
+
+ <!-- The maxFileSize option can be specified in bytes, kilobytes, megabytes or gigabytes by suffixing a numeric value with KB, MB and respectively GB. For example, 5000000, 5000KB, 5MB and 2GB are all valid values, with the first three being equivalent. -->
+ <maxFileSize>1MB</maxFileSize>
+
+ <!-- The optional maxHistory property controls the maximum number of archive files to keep, asynchronously deleting older files. For example, if you specify monthly rollover, and set maxHistory to 6, then 6 months worth of archives files will be kept with files older than 6 months deleted. Note as old archived log files are removed, any folders which were created for the purpose of log file archiving will be removed as appropriate. -->
+ <maxHistory>60</maxHistory>
+
+ <!-- max size for all files: The optional totalSizeCap property controls the total size of all archive files. Oldest archives are deleted asynchronously when the total size cap is exceeded. The totalSizeCap property requires maxHistory property to be set as well. Moreover, the "max history" restriction is always applied first and the "total size cap" restriction applied second. -->
+ <totalSizeCap>5MB</totalSizeCap>
+
+ </rollingPolicy>
+ <encoder>
+ <pattern>${LOG_PATTERN}</pattern>
+ </encoder>
+ </appender>
+
+ <!-- log-level -->
+ <root level="ERROR">
+ <appender-ref ref="CONSOLE" />
+ <appender-ref ref="ROLLING_FILE" />
+ </root>
+
+</configuration>
diff --git a/dev/service/src/test/java/.gitignore b/dev/service/src/test/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/service/src/test/java/.gitignore
diff --git a/dev/service/src/test/resources/.gitignore b/dev/service/src/test/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/service/src/test/resources/.gitignore
diff --git a/doc/pom.xml b/doc/pom.xml
new file mode 100644
index 0000000..2faa983
--- /dev/null
+++ b/doc/pom.xml
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.eclipse.openk.source-system.measurement</groupId>
+ <artifactId>measurement-documentation</artifactId>
+ <version>2.20.0</version>
+
+ <packaging>pom</packaging>
+
+ <name>measurement-documentation</name>
+ <description>POM for the measurement-documentation.</description>
+
+ <properties>
+ <skip.asciidoc>false</skip.asciidoc>
+ <asciidoctor.maven.plugin.version>1.5.6</asciidoctor.maven.plugin.version>
+ <asciidoctorj.pdf.version>1.5.0-alpha.16</asciidoctorj.pdf.version>
+ <asciidoctorj.version>1.5.6</asciidoctorj.version>
+ <asciidoctorj-diagram.version>1.5.4.1</asciidoctorj-diagram.version>
+ <jruby.version>1.7.26</jruby.version>
+ <asciidoc.source.directory>src/main/</asciidoc.source.directory>
+ <asciidoc.test.directory>src/test/</asciidoc.test.directory>
+ </properties>
+
+ <parent>
+ <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+ <artifactId>build-parentpom-aggregator-base</artifactId>
+ <version>2.20.0</version>
+ <relativePath></relativePath>
+ </parent>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <!-- asciidoc -->
+ <plugin>
+ <groupId>org.asciidoctor</groupId>
+ <artifactId>asciidoctor-maven-plugin</artifactId>
+ <version>${asciidoctor.maven.plugin.version}</version>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+
+
+ <plugins>
+ <!-- asciidoc -->
+ <plugin>
+ <groupId>org.asciidoctor</groupId>
+ <artifactId>asciidoctor-maven-plugin</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>org.asciidoctor</groupId>
+ <artifactId>asciidoctorj-pdf</artifactId>
+ <version>${asciidoctorj.pdf.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jruby</groupId>
+ <artifactId>jruby-complete</artifactId>
+ <version>${jruby.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.asciidoctor</groupId>
+ <artifactId>asciidoctorj</artifactId>
+ <version>${asciidoctorj.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.asciidoctor</groupId>
+ <artifactId>asciidoctorj-diagram</artifactId>
+ <version>${asciidoctorj-diagram.version}</version>
+ </dependency>
+ </dependencies>
+
+ <configuration>
+ <requires>
+ <require>asciidoctor-diagram</require>
+ </requires>
+ <attributes>
+ </attributes>
+
+ <configuration>
+ <imagesDir>images</imagesDir>
+ </configuration>
+ </configuration>
+ <executions>
+
+ <execution>
+ <id>asciidoc-docs-to-html</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>process-asciidoc</goal>
+ </goals>
+ <configuration>
+ <sourceDirectory>${asciidoc.source.directory}/doc</sourceDirectory>
+ <outputDirectory>${project.build.directory}/generated-docs/html/doc</outputDirectory>
+ <skip>${skip.asciidoc}</skip>
+ <preserveDirectories>true</preserveDirectories>
+ <sourceHighlighter>coderay</sourceHighlighter>
+ <backend>html5</backend>
+
+ <requires>
+ <require>asciidoctor-diagram</require>
+ </requires>
+
+ <attributes>
+ <imagesDir>./images</imagesDir>
+ <toc>left</toc>
+ <icons>font</icons>
+ <sectanchors>true</sectanchors>
+ <!-- set the idprefix to blank -->
+ <idprefix />
+ <idseparator>-</idseparator>
+ <docinfo1>true</docinfo1>
+ </attributes>
+ </configuration>
+ </execution>
+
+ <execution>
+ <id>asciidoc-documentation-to-pdf</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>process-asciidoc</goal>
+ </goals>
+ <configuration>
+ <sourceDirectory>${asciidoc.source.directory}/doc</sourceDirectory>
+ <outputDirectory>${project.build.directory}/generated-docs/main/doc</outputDirectory>
+ <skip>${skip.asciidoc}</skip>
+ <preserveDirectories>true</preserveDirectories>
+ <sourceHighlighter>coderay</sourceHighlighter>
+ <backend>pdf</backend>
+
+ <requires>
+ <require>asciidoctor-diagram</require>
+ </requires>
+
+ <attributes>
+ <imagesDir>./images</imagesDir>
+ <icons>font</icons>
+ <pagenums />
+ <toc />
+ <idprefix />
+ <idseparator>-</idseparator>
+ </attributes>
+
+ </configuration>
+ </execution>
+
+ <execution>
+ <id>asciidoc-test-documentation-to-pdf</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>process-asciidoc</goal>
+ </goals>
+ <configuration>
+ <sourceDirectory>${asciidoc.test.directory}/doc</sourceDirectory>
+ <outputDirectory>${project.build.directory}/generated-docs/test/doc</outputDirectory>
+ <skip>${skip.asciidoc}</skip>
+ <preserveDirectories>true</preserveDirectories>
+ <sourceHighlighter>coderay</sourceHighlighter>
+ <backend>pdf</backend>
+
+ <requires>
+ <require>asciidoctor-diagram</require>
+ </requires>
+
+ <attributes>
+ <imagesDir>./images</imagesDir>
+ <icons>font</icons>
+ <pagenums />
+ <toc />
+ <idprefix />
+ <idseparator>-</idseparator>
+ </attributes>
+
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project> \ No newline at end of file
diff --git a/doc/src/main/doc/attributes.adoc b/doc/src/main/doc/attributes.adoc
new file mode 100644
index 0000000..f655267
--- /dev/null
+++ b/doc/src/main/doc/attributes.adoc
@@ -0,0 +1,30 @@
+:toc:
+:Author: Christian Brunzendorf; Frank Jäger; Michael Korta; Renko Ortgies
+//:Date: 2019-02-08
+:Email: info@psi.de
+:Company: PSI Software AG
+:ProjectNameID: mock-up-measurement-service
+:ProjectVersion: 2.20.0
+:stylesheet: common/html-skin.css
+:icons: font
+:lang: de
+:doctype: article
+:encoding: utf-8
+:source-highlighter: coderay
+:highlightjs-theme: solarized_dark
+:sectnums:
+:srcpath: {docdir}/../../../..
+:imagedir: {docdir}/images
+
+:NoteSeeServiceFramework: Siehe Service-Framework (org-eclipse-openk-service).
+
+// german translation
+ifeval::["{lang}" == "de"]
+:toc-title: Inhaltsverzeichnis
+:ProjectName: mock-up-measurement-service
+endif::[]
+
+// english translation
+ifeval::["{lang}" == "en"]
+:ProjectName: mock-up-measurement-service
+endif::[]
diff --git a/doc/src/main/doc/common/html-skin.css b/doc/src/main/doc/common/html-skin.css
new file mode 100644
index 0000000..409ddb2
--- /dev/null
+++ b/doc/src/main/doc/common/html-skin.css
@@ -0,0 +1,48 @@
+/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
+
+@import url(https://fonts.googleapis.com/css?family=Ubuntu);
+@import "asciidoctor.css"; /* Default asciidoc style framework - important */
+
+/* CUSTOMISATIONS */
+/* Change the values in root for quick customisation. If you want even more fine grain... venture further. */
+
+:root{
+--maincolor:#FFFFFF;
+--primarycolor:#E95420;
+--secondarycolor:#333333;
+--tertiarycolor: #772953;
+--sidebarbackground:#CCC;
+--linkcolor:#b71c1c;
+--linkcoloralternate:#f44336;
+--white:#FFFFFF;
+--black:#000000;
+}
+
+/* Text styles */
+body{font-family: "Ubuntu",sans-serif;}
+
+h1,h2{color:var(--primarycolor) !important;font-family:"Ubuntu",sans-serif;}
+h3,h4,h5,h6{color:var(--secondarycolor);font-family: "Ubuntu",sans-serif;}
+.title{color:(--primarycolor) !important;font-family:"Ubuntu",sans-serif;font-style: normal; font-weight: normal;}
+p{font-family: "Ubuntu",sans-serif ! important}
+#toc.toc2 a:link{color:white;}
+code{background-color: var(--secondarycolor) !important;color:var(--white)}
+
+
+/* Table styles */
+th{background-color: var(--tertiarycolor);color:var(--white) !important;}
+
+#toc.toc2{background-color:#2C001E;color:white;}
+#toc.toc2.a{color:white;}
+#toctitle{color:#E95420;}
+
+/* Responsiveness fixes */
+video {
+ max-width: 100%;
+}
+
+@media all and (max-width: 600px) {
+table {
+ width: 55vw!important;
+ font-size: 3vw;
+}
diff --git a/doc/src/main/doc/common/toc.adoc b/doc/src/main/doc/common/toc.adoc
new file mode 100644
index 0000000..b7232df
--- /dev/null
+++ b/doc/src/main/doc/common/toc.adoc
@@ -0,0 +1,3 @@
+ifeval::["{context}" == ""]
+include::{docdir}/attributes.adoc[]
+endif::[]
diff --git a/doc/src/main/doc/docs/appendix/appendix-assembly.adoc b/doc/src/main/doc/docs/appendix/appendix-assembly.adoc
new file mode 100644
index 0000000..770c451
--- /dev/null
+++ b/doc/src/main/doc/docs/appendix/appendix-assembly.adoc
@@ -0,0 +1,24 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/appendix
+
+// set document informations
+[id='appendix-{context}']
+:context: appendix
+
+// content
+= Anhang
+
+include::{path}/modules/concept_get_started.adoc[leveloffset=+1]
+
+include::{path}/modules/variations.adoc[leveloffset=+1]
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/appendix/modules/concept_get_started.adoc b/doc/src/main/doc/docs/appendix/modules/concept_get_started.adoc
new file mode 100644
index 0000000..9c9d392
--- /dev/null
+++ b/doc/src/main/doc/docs/appendix/modules/concept_get_started.adoc
@@ -0,0 +1,18 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/appendix/modules
+
+// set document informations
+[id='get-started-concept-{context}']
+= Get Started
+NOTE: {NoteSeeServiceFramework}
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/appendix/modules/variations.adoc b/doc/src/main/doc/docs/appendix/modules/variations.adoc
new file mode 100644
index 0000000..6d1fbae
--- /dev/null
+++ b/doc/src/main/doc/docs/appendix/modules/variations.adoc
@@ -0,0 +1,18 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/appendix/modules
+
+// set document informations
+[id='variations-{context}']
+= Variations
+NOTE: {NoteSeeServiceFramework}
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/architecture/architecture-assembly.adoc b/doc/src/main/doc/docs/architecture/architecture-assembly.adoc
new file mode 100644
index 0000000..380f87f
--- /dev/null
+++ b/doc/src/main/doc/docs/architecture/architecture-assembly.adoc
@@ -0,0 +1,25 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/architecture
+
+// set document informations
+[id='architecture-{context}']
+:context: architecture
+
+// content
+= Architektur Dokumentation
+include::{path}/modules/architecture-concept.adoc[leveloffset=+1]
+
+include::{path}/modules/architecture-reference.adoc[leveloffset=+1]
+
+include::{path}/modules/model-concept.adoc[leveloffset=+1]
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/architecture/modules/architecture-concept.adoc b/doc/src/main/doc/docs/architecture/modules/architecture-concept.adoc
new file mode 100644
index 0000000..85cdb5c
--- /dev/null
+++ b/doc/src/main/doc/docs/architecture/modules/architecture-concept.adoc
@@ -0,0 +1,19 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/architecture/modules
+
+// set document informations
+[id='architecture-concept-{context}']
+= Architektur
+
+NOTE: Die Architektur wird maßgeblich vom Service-Framework (org-eclipse-openk-service) vorgegeben.
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/architecture/modules/architecture-reference.adoc b/doc/src/main/doc/docs/architecture/modules/architecture-reference.adoc
new file mode 100644
index 0000000..61df4c9
--- /dev/null
+++ b/doc/src/main/doc/docs/architecture/modules/architecture-reference.adoc
@@ -0,0 +1,19 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/architecture/modules
+
+// set document informations
+[id='architecture-reference-{context}']
+
+= Architektur-Referenzen
+NOTE: {NoteSeeServiceFramework}
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/architecture/modules/model-concept.adoc b/doc/src/main/doc/docs/architecture/modules/model-concept.adoc
new file mode 100644
index 0000000..1eb73ea
--- /dev/null
+++ b/doc/src/main/doc/docs/architecture/modules/model-concept.adoc
@@ -0,0 +1,22 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/architecture/modules
+
+// set document informations
+[id='architecture-procedure-{context}']
+
+= Modell
+
+.Internes Datenmodell von {ProjectNameID}
+
+NOTE: siehe measurement-service
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/admin-assembly.adoc b/doc/src/main/doc/docs/documentation/admin-assembly.adoc
new file mode 100644
index 0000000..6404021
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/admin-assembly.adoc
@@ -0,0 +1,26 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation
+
+// set document informations
+[id='admin-{context}']
+:context: admin
+
+// content
+// = Administrator
+
+include::{path}/modules/admin-concept-de.adoc[leveloffset=+1]
+
+include::{path}/modules/admin-procedure-de.adoc[leveloffset=+1]
+
+include::{path}/modules/admin-reference-de.adoc[leveloffset=+1]
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/documentation-assembly.adoc b/doc/src/main/doc/docs/documentation/documentation-assembly.adoc
new file mode 100644
index 0000000..8f97694
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/documentation-assembly.adoc
@@ -0,0 +1,30 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation
+
+// set document informations
+[id='documentation-{context}']
+:context: documentation
+
+// content
+= Dokumentation
+
+include::{path}/modules/description-concept-de.adoc[leveloffset=+1]
+
+include::{path}/user-assembly.adoc[leveloffset=+1]
+
+include::{path}/admin-assembly.adoc[leveloffset=+1]
+
+include::{path}/modules/interface-concept-de.adoc[leveloffset=+1]
+
+include::{path}/modules/process-concept-de.adoc[leveloffset=+1]
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/admin-concept-de.adoc b/doc/src/main/doc/docs/documentation/modules/admin-concept-de.adoc
new file mode 100644
index 0000000..2db22fd
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/admin-concept-de.adoc
@@ -0,0 +1,19 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+// set document informations
+[id='admin-concept-{context}']
+
+// content
+// = Administration
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/admin-procedure-de.adoc b/doc/src/main/doc/docs/documentation/modules/admin-procedure-de.adoc
new file mode 100644
index 0000000..cf61c02
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/admin-procedure-de.adoc
@@ -0,0 +1,19 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+// set document informations
+[id='admin-procedure-{context}']
+
+// content
+// = Anweisungen zur Administration
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/admin-reference-de.adoc b/doc/src/main/doc/docs/documentation/modules/admin-reference-de.adoc
new file mode 100644
index 0000000..b6bb046
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/admin-reference-de.adoc
@@ -0,0 +1,19 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+// set document informations
+[id='admin-reference-{context}']
+
+// content
+// = Weiterführende Administrations-Dokumentation
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/description-concept-de.adoc b/doc/src/main/doc/docs/documentation/modules/description-concept-de.adoc
new file mode 100644
index 0000000..1f424c9
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/description-concept-de.adoc
@@ -0,0 +1,24 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+[id='description-concept-{context}']
+= Beschreibung
+
+Für Demonstrationszwecke wird in diesem Service ein kleines Referenzmodell aufgebaut, welches einige Messwerte und Messpunkte eines Energienetzes repräsentiert. In diesem Modell werden drei Messpunkte (Lastgangschalter, Lasttrennschalter und einen Transformator) mit analogen Messwerten modelliert. Die Messpunkte können direkt ein Bauteil ("PowerSystemResource") oder eine Messeinrichtung ("Terminal") am Bauteil referenzieren. Mit einer zusätzlichen Liste von Messpunkten können weitere zufällige Messwerte generiert werden.
+
+
+In diesem Dienst werden folgende Funktionalitäten bereitgestellt:
+
+* Aufbau eines Referenzmodells
+* Bereitstellung von REST-Services zum Abrufen des Referenzmodells
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/interface-concept-de.adoc b/doc/src/main/doc/docs/documentation/modules/interface-concept-de.adoc
new file mode 100644
index 0000000..94355b3
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/interface-concept-de.adoc
@@ -0,0 +1,104 @@
+[id='interface-concept-{context}']
+= Schnittstellenbeschreibung
+
+Die Kommunikation mit dem {ProjectName} erfolgt über REST-Schnittstellen, welche
+im http://wiki.openkonsequenz.de/Dom%C3%A4nen-API[OpenKonsequenz-Wiki] veröffentlicht sind.
+
+Von diesem Service angebotene Schnittstellen.
+
+
+
+[%header,cols=1*]
+|===
+|aktuelle Messwerte
+
+|Die Schnittstelle gibt die aktuellen Messwerte zurück, die den angegebenen Suchkriterien entsprechen. Es werden die Messwerte mit den angegebenen Messpunktschlüsseln (measurement-point-ids) berücksichtigt. Verschiedene Schlüssel können mit Hilfe des Zeichens '\|
+' getrennt werden. Weitere Suchkriterien sind der Startzeitpunkt in UTC (start-time) und der Endzeitpunkt in UTC (end-time) des betrachteten Zeitraums sowie die Typen der zurückgegebenen Messwerte (measurement-types). (Die zurückgegebenen Messswerte enthalten Messwerte >= dem Startzeitpunkt und <= dem Endzeitpunkt) Verschiedene measurement-types können mit Hilfe des Zeichens '\|
+' getrennt werden.
+|===
+
+[%header,cols=2*]
+|===
+|Beschreibung
+|Wert
+
+|http-Methode
+|GET
+
+|Bezeichnung
+|/measurement-values
+
+|aktuelle Version
+|Revision 4 (CIM 17v07)
+
+|Sprache (ISO 639-1)
+|de
+
+|Spezifikation
+|link:resources/api/source-system.electricity.measurement.measurement-values_GET_4_de.open-api.yaml[source-system.electricity.measurement.measurement-values_GET_4_de.open-api.yaml]
+|===
+
+[%header,cols=2*]
+|===
+|Status-Code
+|Beschreibung
+
+|200
+|Die CIM-Antwortnachricht.
+|400
+|Die Schnittstelle wurde mit ungültigen Parametern aufgerufen.
+|500
+|Es trat ein allgemeiner Fehler bei der Verarbeitung der Anfrage auf.
+
+
+
+|===
+'''
+<<<
+
+[%header,cols=1*]
+|===
+|Messpunkte
+
+|Die Schnittstelle gibt alle Messpunkte zurück, die den angegeben Suchkriterien entsprechen. Messpunkte können sowohl topologische Ressourcen als auch Terminals sein. Weiterhin können die Typen der Messwerte (measurement-types), die die zurückzugebenen Messpunkte unterstützen als Suchkriterien genutzt werden. Verschiedene measurement-types können mit Hilfe des Zeichens '\|
+' getrennt werden.
+|===
+
+[%header,cols=2*]
+|===
+|Beschreibung
+|Wert
+
+|http-Methode
+|GET
+
+|Bezeichnung
+|/measurement-points
+
+|aktuelle Version
+|Revision 4 (CIM 17v07)
+
+|Sprache (ISO 639-1)
+|de
+
+|Spezifikation
+|link:resources/api/source-system.electricity.measurement.measurement-points_GET_4_de.open-api.yaml[source-system.electricity.measurement.measurement-points_GET_4_de.open-api.yaml]
+|===
+
+[%header,cols=2*]
+|===
+|Status-Code
+|Beschreibung
+
+|200
+|Die CIM-Antwortnachricht.
+|400
+|Die Schnittstelle wurde mit ungültigen Parametern aufgerufen.
+|500
+|Es trat ein allgemeiner Fehler bei der Verarbeitung der Anfrage auf.
+
+
+
+|===
+'''
+<<<
diff --git a/doc/src/main/doc/docs/documentation/modules/process-concept-de.adoc b/doc/src/main/doc/docs/documentation/modules/process-concept-de.adoc
new file mode 100644
index 0000000..4ec9d9d
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/process-concept-de.adoc
@@ -0,0 +1,36 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+// set document informations
+[id='process-concept-{context}']
+
+// content
+= Prozessbeschreibung
+
+Zum Aufbau des Referenzmodells dient der Prozess "Messwerte aktualisieren". Darin werden zunächst die alten Messwerte und Messpunkte gelöscht und anschließend neue zufällige Messwerte erstellt. Weiterhin kann man mit einem zusätzlichen Referenz-Satz an Messpunkten weitere Messpunkte und Messwerte generieren, die zum aktuellen Modell hinzugefügt werden ("Messwerte hinzufügen"). Die beiden Prozesse "Messwerte abfragen" und "Messpunkte abfragen" stellen die erzeugten Daten über eine REST-Schnittstelle bereit.
+
+.00_mock-up-measurement-service_starten_1_de.png
+image::process/00_mock-up-measurement-service_starten_1_de.png[Figure 1]
+
+.01_Messwerte_aktualisierenl_1_de.png
+image::process/01_Messwerte_aktualisierenl_1_de.png[Figure 2]
+
+.02_Messwerte_hinzufügen_1_de.png
+image::process/02_Messwerte_hinzufügen_1_de.png[Figure 3]
+
+.03_Messwerte_abfragen.png
+image::process/03_Messwerte_abfragen.png[Figure 4]
+
+.04_Messpunkte_abfragen.png
+image::process/04_Messpunkte_abfragen.png[Figure 5]
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/user-concept-de.adoc b/doc/src/main/doc/docs/documentation/modules/user-concept-de.adoc
new file mode 100644
index 0000000..d0c57e8
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/user-concept-de.adoc
@@ -0,0 +1,21 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+// set document informations
+[id='user-concept-{context}']
+
+// content
+= Benutzung
+NOTE: {NoteSeeServiceFramework}
+
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/user-procedure-de.adoc b/doc/src/main/doc/docs/documentation/modules/user-procedure-de.adoc
new file mode 100644
index 0000000..a40e74d
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/user-procedure-de.adoc
@@ -0,0 +1,19 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+// set document informations
+[id='user-procedure-{context}']
+
+// content
+// = Benutzungsanweisungen
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/user-reference-de.adoc b/doc/src/main/doc/docs/documentation/modules/user-reference-de.adoc
new file mode 100644
index 0000000..07414b4
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/user-reference-de.adoc
@@ -0,0 +1,19 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+// set document informations
+[id='user-reference-{context}']
+
+// content
+// = Weiterführende Benutzungs-Dokumentation
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/user-assembly.adoc b/doc/src/main/doc/docs/documentation/user-assembly.adoc
new file mode 100644
index 0000000..66886fa
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/user-assembly.adoc
@@ -0,0 +1,25 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation
+
+// set document informations
+[id='user-{context}']
+:context: user
+
+// content
+
+include::{path}/modules/user-concept-de.adoc[leveloffset=+1]
+
+include::{path}/modules/user-procedure-de.adoc[leveloffset=+1]
+
+include::{path}/modules/user-reference-de.adoc[leveloffset=+1]
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/howto/howto-assembly.adoc b/doc/src/main/doc/docs/howto/howto-assembly.adoc
new file mode 100644
index 0000000..ce1ee93
--- /dev/null
+++ b/doc/src/main/doc/docs/howto/howto-assembly.adoc
@@ -0,0 +1,28 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/howto
+
+// set document informations
+[id='howto-{context}']
+:context: howto
+
+// content
+= HowTo
+
+ifeval::["{lang}" == "de"]
+include::{path}/modules/build-procedure-de.adoc[leveloffset=+1]
+include::{path}/modules/config-procedure-de.adoc[leveloffset=+1]
+include::{path}/modules/run-procedure-de.adoc[leveloffset=+1]
+include::{path}/modules/code-procedure-de.adoc[leveloffset=+1]
+include::{path}/modules/test-procedure-de.adoc[leveloffset=+1]
+endif::[]
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/howto/modules/build-procedure-de.adoc b/doc/src/main/doc/docs/howto/modules/build-procedure-de.adoc
new file mode 100644
index 0000000..f1209dc
--- /dev/null
+++ b/doc/src/main/doc/docs/howto/modules/build-procedure-de.adoc
@@ -0,0 +1,18 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/howto/modules
+
+[id='build-procedure-{context}']
+= Erstellen
+
+NOTE: {NoteSeeServiceFramework}
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/howto/modules/code-procedure-de.adoc b/doc/src/main/doc/docs/howto/modules/code-procedure-de.adoc
new file mode 100644
index 0000000..ea985c8
--- /dev/null
+++ b/doc/src/main/doc/docs/howto/modules/code-procedure-de.adoc
@@ -0,0 +1,20 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/howto/modules
+
+[id='code-procedure-{context}']
+:parent-image-dir: {imagesdir}
+
+= Code
+
+NOTE: {NoteSeeServiceFramework}
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/howto/modules/config-procedure-de.adoc b/doc/src/main/doc/docs/howto/modules/config-procedure-de.adoc
new file mode 100644
index 0000000..13e2f77
--- /dev/null
+++ b/doc/src/main/doc/docs/howto/modules/config-procedure-de.adoc
@@ -0,0 +1,22 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/howto/modules
+
+[id='config-procedure-{context}']
+
+= Konfiguration
+
+//.Ordnerstruktur erstellen
+// tbd
+
+NOTE: {NoteSeeServiceFramework}
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/howto/modules/run-procedure-de.adoc b/doc/src/main/doc/docs/howto/modules/run-procedure-de.adoc
new file mode 100644
index 0000000..2903dd3
--- /dev/null
+++ b/doc/src/main/doc/docs/howto/modules/run-procedure-de.adoc
@@ -0,0 +1,18 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/howto/modules
+
+[id='run-procedure-{context}']
+= Starten
+
+NOTE: {NoteSeeServiceFramework}
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/howto/modules/test-procedure-de.adoc b/doc/src/main/doc/docs/howto/modules/test-procedure-de.adoc
new file mode 100644
index 0000000..dca0b10
--- /dev/null
+++ b/doc/src/main/doc/docs/howto/modules/test-procedure-de.adoc
@@ -0,0 +1,18 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/howto/modules
+
+[id='test-procedure-{context}']
+//= Test
+
+//.Vorbereitung
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/test/modules/test-cases-report.csv b/doc/src/main/doc/docs/test/modules/test-cases-report.csv
new file mode 100644
index 0000000..d40d279
--- /dev/null
+++ b/doc/src/main/doc/docs/test/modules/test-cases-report.csv
@@ -0,0 +1,4 @@
+;Offen;In Ausführung;Erfolgreich;Fehlerhaft;Nicht ausführbar;Gestrichen;Testfälle
+Initialer Test;0;0;24;2;0;1;
+Regressionstest;0;0;2;0;0;0;
+Gesamt;0;0;26;0;0;1;27
diff --git a/doc/src/main/doc/docs/test/modules/test-scripts-concept.adoc b/doc/src/main/doc/docs/test/modules/test-scripts-concept.adoc
new file mode 100644
index 0000000..63c110a
--- /dev/null
+++ b/doc/src/main/doc/docs/test/modules/test-scripts-concept.adoc
@@ -0,0 +1,15 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/test/modules
+
+//= Testdrehbücher
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/test/test-assembly.adoc b/doc/src/main/doc/docs/test/test-assembly.adoc
new file mode 100644
index 0000000..9a1b321
--- /dev/null
+++ b/doc/src/main/doc/docs/test/test-assembly.adoc
@@ -0,0 +1,36 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/test
+
+// set document informations
+[id='test-{context}']
+:context: test
+
+= Test
+
+include::{path}/modules/test-scripts-concept.adoc[leveloffset=+1]
+
+== Auswertung Testdrehbuch
+
+.Ergebnis
+[%rotate, format="csv", separator=";", options="header"]
+|===
+include::{path}/modules/test-cases-report.csv[]
+|===
+
+
+== Testdrehbuch
+
+link:resources/test/test.ods[Link zu test.ods]
+
+NOTE: ODS-Format = Open Document Format for Office Applications
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/images/process/00_mock-up-measurement-service_starten_1_de.png b/doc/src/main/doc/images/process/00_mock-up-measurement-service_starten_1_de.png
new file mode 100644
index 0000000..f011433
--- /dev/null
+++ b/doc/src/main/doc/images/process/00_mock-up-measurement-service_starten_1_de.png
Binary files differ
diff --git a/doc/src/main/doc/images/process/01_Messwerte_aktualisierenl_1_de.png b/doc/src/main/doc/images/process/01_Messwerte_aktualisierenl_1_de.png
new file mode 100644
index 0000000..d870d57
--- /dev/null
+++ b/doc/src/main/doc/images/process/01_Messwerte_aktualisierenl_1_de.png
Binary files differ
diff --git a/doc/src/main/doc/images/process/02_Messwerte_hinzufügen_1_de.png b/doc/src/main/doc/images/process/02_Messwerte_hinzufügen_1_de.png
new file mode 100644
index 0000000..f3f1c34
--- /dev/null
+++ b/doc/src/main/doc/images/process/02_Messwerte_hinzufügen_1_de.png
Binary files differ
diff --git a/doc/src/main/doc/images/process/03_Messwerte_abfragen.png b/doc/src/main/doc/images/process/03_Messwerte_abfragen.png
new file mode 100644
index 0000000..ee4fd57
--- /dev/null
+++ b/doc/src/main/doc/images/process/03_Messwerte_abfragen.png
Binary files differ
diff --git a/doc/src/main/doc/images/process/04_Messpunkte_abfragen.png b/doc/src/main/doc/images/process/04_Messpunkte_abfragen.png
new file mode 100644
index 0000000..310d95b
--- /dev/null
+++ b/doc/src/main/doc/images/process/04_Messpunkte_abfragen.png
Binary files differ
diff --git a/doc/src/main/doc/resources/api/source-system.electricity.measurement.measurement-points_GET_4_de.open-api.yaml b/doc/src/main/doc/resources/api/source-system.electricity.measurement.measurement-points_GET_4_de.open-api.yaml
new file mode 100644
index 0000000..5b87b3a
--- /dev/null
+++ b/doc/src/main/doc/resources/api/source-system.electricity.measurement.measurement-points_GET_4_de.open-api.yaml
@@ -0,0 +1,240 @@
+swagger: '2.0'
+info:
+ title: Messpunkte
+ description: Diese Schnittstelle ist Teil der [oK](http://www.openkonsequenz.de) Quellsystem-API.
+ version: Revision 4 (CIM 17v07)
+ contact:
+ name: BTC AG
+ url: http://www.btc-ag.com
+ email: openk@btc-ag.com
+ license:
+ name: Eclipse Public License 1.0
+ url: https://www.eclipse.org/legal/epl-v10.html
+host: api.openk.de
+schemes:
+- http
+basePath: /source-system/electricity/measurement
+produces:
+- application/xml
+paths:
+ /measurement-points:
+ get:
+ summary: Die Schnittstelle gibt alle Messpunkte zurück, die den angegeben Suchkriterien entsprechen. Messpunkte können sowohl topologische Ressourcen als auch Terminals sein. Weiterhin können die Typen der Messwerte (measurement-types), die die zurückzugebenen Messpunkte unterstützen als Suchkriterien genutzt werden. Verschiedene measurement-types können mit Hilfe des Zeichens '|' getrennt werden.
+ parameters:
+ - name: revision
+ in: query
+ description: Version, die den Nachrichtenaustausch definiert. Dies ist nicht die CIM-Version.
+ required: true
+ type: integer
+ format: int32
+ minimum: 4
+ maximum: 4
+ - name: timestamp
+ in: query
+ description: Zeitpunkt, an dem die Nachricht versendet wurde (in UTC gemäß ISO-8601-Format YYYY-MM-DDTHH:mm:ss.SSSZ).
+ required: false
+ type: string
+ format: date-time
+ pattern: '^([0-9]{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|30|31)T(([0-1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{3}Z)$'
+ - name: source
+ in: query
+ description: Eindeutige Bezeichnung des Senders der Nachricht.
+ required: false
+ type: string
+ - name: user-id
+ in: query
+ description: Eindeutige Kennung des angemeldeten Nutzers (Sender).
+ required: false
+ type: string
+ - name: message-id
+ in: query
+ description: Eindeutige Kennung dieser Nachricht. Generiert vom Sender der Nachricht.
+ required: false
+ type: string
+ format: uuid
+ pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+ - name: measurement-types
+ in: query
+ description: Die Typen der Messwert, die die zurückzugebenden Messpunkte unterstützen. Verschiedene Schlüssel können mit Hilfe des Zeichens '|' getrennt werden. Wird dieser Wert nicht angegeben, werden alle Messwerttypen berücksichtigt. Unbekannte Typen werden ignoriert.
+ required: false
+ type: string
+ enum: [Angle, LineCurrent, LineToLineVoltage, PhaseVoltage, ThreePhaseActivePower, ThreePhasePower, ThreePhaseReactivePower]
+ responses:
+ 200:
+ description: Die CIM-Antwortnachricht.
+ schema:
+ $ref: '#/definitions/ResponseMessage'
+ 400:
+ description: Die Schnittstelle wurde mit ungültigen Parametern aufgerufen.
+ 500:
+ description: Es trat ein allgemeiner Fehler bei der Verarbeitung der Anfrage auf.
+### specific definitions ######################################################
+definitions:
+ Analog:
+ description: Die analoge Messung.
+ type: object
+ properties:
+ measurementType:
+ description: Beschreibt den Typ der Messung.
+ type: string
+ enum:
+ - Angle
+ - LineCurrent
+ - LineToLineVoltage
+ - PhaseVoltage
+ - ThreePhaseActivePower
+ - ThreePhasePower
+ - ThreePhaseReactivePower
+ required:
+ - measurementType
+ xml:
+ name: Analog
+ MeasurementPoints:
+ description: Die Messpunkte. Dies können topologische Ressourcen oder Terminals sein.
+ type: object
+ properties:
+ PowerSystemResources:
+ description: Die topologische Ressource an der gemessen wird.
+ type: array
+ minItems: 0
+ items:
+ $ref: '#/definitions/PowerSystemResource'
+ Terminals:
+ description: Das Terminal an dem gemessen wird.
+ type: array
+ minItems: 0
+ items:
+ $ref: '#/definitions/Terminal'
+ Measurement:
+ type: object
+ properties:
+ Analog:
+ type: array
+ minItems: 0
+ items:
+ $ref: '#/definitions/Analog'
+ Payload:
+ description: Der Inhalt der CIM-Antwortnachricht.
+ type: object
+ properties:
+ MeasurementPoints:
+ $ref: '#/definitions/MeasurementPoints'
+ required:
+ - MeasurementPoints
+ PowerSystemResource:
+ description: Die topologische Ressource an der gemessen wird.
+ type: object
+ properties:
+ mRID:
+ description: Die eindeutige Kennung der topologischen Ressource.
+ type: string
+ format: uuid
+ pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+ Measurements:
+ type: array
+ items:
+ $ref: '#/definitions/Measurement'
+ xml:
+ name: Measurements
+ required:
+ - mRID
+ - Measurements
+ xml:
+ name: PowerSystemResource
+ Terminal:
+ description: Das Terminal an dem gemessen wird.
+ type: object
+ properties:
+ mRID:
+ description: Die eindeutige Kennung des Terminals.
+ type: string
+ format: uuid
+ pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+ Measurements:
+ type: array
+ items:
+ $ref: '#/definitions/Measurement'
+ xml:
+ name: Measurements
+ required:
+ - mRID
+ - Measurements
+ xml:
+ name: Terminal
+### common definitions ########################################################
+ Header_Reply:
+ description: Der Kopf der CIM-Nachricht.
+ type: object
+ properties:
+ Verb:
+ description: Hinweis, um welche Art von Nachricht es sich handelt.
+ type: string
+ default: reply
+ Noun:
+ description: Hinweis auf den Nachrichteninhalt.
+ type: string
+ Revision:
+ description: Version, die den Nachrichtenaustausch definiert. Dies ist nicht die CIM-Version.
+ type: integer
+ format: int32
+ minimum: 4
+ maximum: 4
+ Timestamp:
+ description: Zeitpunkt, an dem die Nachricht versendet wurde (in UTC gemäß ISO-8601-Format YYYY-MM-DDThh:mm:ss.sssZ).
+ type: string
+ format: date-time
+ pattern: '^([0-9]{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|30|31)T(([0-1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{3}Z)$'
+ Source:
+ description: Eindeutige Bezeichnung des Senders der Nachricht.
+ type: string
+ User:
+ $ref: '#/definitions/User'
+ MessageID:
+ description: Eindeutige Kennung dieser Nachricht. Generiert vom Sender der Nachricht.
+ type: string
+ format: uuid
+ pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+ required:
+ - Verb
+ - Noun
+ - Revision
+ - Timestamp
+ - Source
+ - MessageID
+ xml:
+ name: Header
+ Reply_OK:
+ description: Die Antwort der CIM-Nachricht.
+ type: object
+ properties:
+ Result:
+ description: Antworttext
+ type: string
+ default: OK
+ required:
+ - Result
+ xml:
+ name: Reply
+ ResponseMessage:
+ description: Die CIM-Nachricht.
+ type: object
+ properties:
+ Header:
+ $ref: '#/definitions/Header_Reply'
+ Reply:
+ $ref: '#/definitions/Reply_OK'
+ Payload:
+ $ref: '#/definitions/Payload'
+ required:
+ - Header
+ - Reply
+ - Payload
+ User:
+ properties:
+ userId:
+ description: Eindeutige Kennung des angemeldeten Nutzers (Empfänger).
+ type: string
+ xml:
+ name: UserID
+ required:
+ - UserID \ No newline at end of file
diff --git a/doc/src/main/doc/resources/api/source-system.electricity.measurement.measurement-values_GET_4_de.open-api.yaml b/doc/src/main/doc/resources/api/source-system.electricity.measurement.measurement-values_GET_4_de.open-api.yaml
new file mode 100644
index 0000000..33725b0
--- /dev/null
+++ b/doc/src/main/doc/resources/api/source-system.electricity.measurement.measurement-values_GET_4_de.open-api.yaml
@@ -0,0 +1,319 @@
+swagger: '2.0'
+info:
+ title: aktuelle Messwerte
+ description: Diese Schnittstelle ist Teil der [oK](http://www.openkonsequenz.de) Quellsystem-API.
+ version: Revision 4 (CIM 17v07)
+ contact:
+ name: BTC AG
+ url: http://www.btc-ag.com
+ email: openk@btc-ag.com
+ license:
+ name: Eclipse Public License 1.0
+ url: https://www.eclipse.org/legal/epl-v10.html
+host: api.openk.de
+schemes:
+- http
+basePath: /source-system/electricity/measurement
+produces:
+- application/xml
+paths:
+ /measurement-values:
+ get:
+ summary: Die Schnittstelle gibt die aktuellen Messwerte zurück, die den angegebenen Suchkriterien entsprechen. Es werden die Messwerte mit den angegebenen Messpunktschlüsseln (measurement-point-ids) berücksichtigt. Verschiedene Schlüssel können mit Hilfe des Zeichens '|' getrennt werden. Weitere Suchkriterien sind der Startzeitpunkt in UTC (start-time) und der Endzeitpunkt in UTC (end-time) des betrachteten Zeitraums sowie die Typen der zurückgegebenen Messwerte (measurement-types). (Die zurückgegebenen Messswerte enthalten Messwerte >= dem Startzeitpunkt und <= dem Endzeitpunkt) Verschiedene measurement-types können mit Hilfe des Zeichens '|' getrennt werden.
+ parameters:
+ - name: revision
+ in: query
+ description: Version, die den Nachrichtenaustausch definiert. Dies ist nicht die CIM-Version.
+ required: true
+ type: integer
+ format: int32
+ minimum: 4
+ maximum: 4
+ - name: timestamp
+ in: query
+ description: Zeitpunkt, an dem die Nachricht versendet wurde (in UTC gemäß ISO-8601-Format YYYY-MM-DDTHH:mm:ss.SSSZ).
+ required: false
+ type: string
+ format: date-time
+ pattern: '^([0-9]{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|30|31)T(([0-1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{3}Z)$'
+ - name: source
+ in: query
+ description: Eindeutige Bezeichnung des Senders der Nachricht.
+ required: false
+ type: string
+ - name: user-id
+ in: query
+ description: Eindeutige Kennung des angemeldeten Nutzers (Sender).
+ required: false
+ type: string
+ - name: message-id
+ in: query
+ description: Eindeutige Kennung dieser Nachricht. Generiert vom Sender der Nachricht.
+ required: false
+ type: string
+ format: uuid
+ pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+ - name: measurement-point-ids
+ in: query
+ description: Die Schlüssel der Messpunkte, deren Messwerte zurückgegeben werden sollen. Verschiedene Schlüssel können mit Hilfe des Zeichens '|' getrennt werden. Wird kein Schlüssel angegeben, werden alle bekannten Messwerte zurückgegeben. Unbekannte Schlüssel werden ignoriert.
+ required: false
+ type: string
+ pattern: '^(([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})([|][0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})*)$'
+ - name: start-time
+ in: query
+ description: Der Anfangszeitpunkt des betrachteten Zeitraums (inklusive) in UTC gemäß ISO-8601-Format YYYY-MM-DDTHH:mm:ss.SSSZ. Wird dieser Wert nicht angegeben, werden alle Zeitpunkte bis zum Endzeitpunkt berücksichtigt.
+ required: false
+ type: string
+ format: date-time
+ pattern: '^([0-9]{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|30|31)T(([0-1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{3}Z)$'
+ - name: end-time
+ in: query
+ description: Der Endzeitpunkt des betrachteten Zeitraums (inklusive) in UTC gemäß ISO-8601-Format YYYY-MM-DDTHH:mm:ss.SSSZ. Wird dieser Wert nicht angegeben, werden alle Zeitpunkte ab dem Anfangszeitpunkt berücksichtigt.
+ required: false
+ type: string
+ format: date-time
+ pattern: '^([0-9]{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|30|31)T(([0-1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{3}Z)$'
+ - name: measurement-types
+ in: query
+ description: Die Typen der zurückzugebenden Messwerte. Verschiedene Schlüssel können mit Hilfe des Zeichens '|' getrennt werden. Wird dieser Wert nicht angegeben, werden alle Messwerttypen berücksichtigt. Unbekannte Typen werden ignoriert.
+ required: false
+ type: string
+ enum: [Angle, LineCurrent, LineToLineVoltage, PhaseVoltage, ThreePhaseActivePower, ThreePhasePower, ThreePhaseReactivePower]
+ responses:
+ 200:
+ description: Die CIM-Antwortnachricht.
+ schema:
+ $ref: '#/definitions/ResponseMessage'
+ 400:
+ description: Die Schnittstelle wurde mit ungültigen Parametern aufgerufen.
+ 500:
+ description: Es trat ein allgemeiner Fehler bei der Verarbeitung der Anfrage auf.
+definitions:
+### specific definitions ######################################################
+ Analog:
+ description: die analoge Messung
+ type: object
+ properties:
+ measurementType:
+ description: die Art der Messung (aus CGMES Version 2.4.15)
+ type: string
+ enum:
+ - Angle
+ - LineCurrent
+ - LineToLineVoltage
+ - PhaseVoltage
+ - ThreePhaseActivePower
+ - ThreePhasePower
+ - ThreePhaseReactivePower
+ unitSymbol:
+ description: die Einheit der Messung (CIM UnitSymbol)
+ type: string
+ enum:
+ - A
+ - deg
+ - V
+ - VA
+ - VAr
+ - W
+ unitMultiplier:
+ description: der Multiplikator der Messung (CIM UnitMultiplier)
+ type: string
+ default: none
+ enum:
+ - a
+ - c
+ - d
+ - da
+ - E
+ - f
+ - G
+ - h
+ - k
+ - m
+ - M
+ - micro
+ - n
+ - none
+ - p
+ - P
+ - T
+ - y
+ - Y
+ - z
+ - Z
+ AnalogValues:
+ type: array
+ minItems: 0
+ maxItems: 1
+ items:
+ $ref: '#/definitions/AnalogValue'
+ xml:
+ wrapped: true
+ required:
+ - measurementType
+ - unitSymbol
+ - unitMultiplier
+ - AnalogValues
+ xml:
+ name: Analog
+ AnalogValue:
+ description: der analoge Messwert
+ type: object
+ properties:
+ timeStamp:
+ type: string
+ format: date-time
+ pattern: '^([0-9]{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|30|31)T(([0-1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{3}Z)$'
+ value:
+ type: number
+ format: double
+ required:
+ - timeStamp
+ - value
+ xml:
+ name: AnalogValue
+ Measurements:
+ type: object
+ properties:
+ Analog:
+ type: array
+ minItems: 0
+ items:
+ $ref: '#/definitions/Analog'
+ Payload:
+ description: Der Inhalt der CIM-Nachricht.
+ type: object
+ properties:
+ MeasurementValues:
+ $ref: '#/definitions/Payload.MeasurementValues'
+ required:
+ - MeasurementValues
+ Payload.MeasurementValues:
+ description: |
+ Die Liste der Messungen. Diese können topologischen Ressourcen oder Terminals erfolgen.
+ type: object
+ properties:
+ PowerSystemResource:
+ description: Die Liste der topologischen Ressourcen an denen gemessen wird.
+ type: array
+ minItems: 0
+ items:
+ $ref: '#/definitions/PowerSystemResource'
+ Terminal:
+ description: Die Liste der Terminals an denen gemessen wird.
+ type: array
+ minItems: 0
+ items:
+ $ref: '#/definitions/Terminal'
+ PowerSystemResource:
+ description: Die topologische Ressource an der gemessen wird.
+ type: object
+ properties:
+ mRID:
+ description: Die eindeutige Kennung der topologischen Ressource.
+ type: string
+ format: uuid
+ pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+ Measurements:
+ type: array
+ items:
+ $ref: '#/definitions/Measurements'
+ required:
+ - mRID
+ - Measurements
+ xml:
+ name: PowerSystemResource
+ Terminal:
+ description: Das Terminal an dem gemessen wird.
+ type: object
+ properties:
+ mRID:
+ description: Die eindeutige Kennung des Terminals.
+ type: string
+ format: uuid
+ pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+ Measurements:
+ type: array
+ items:
+ $ref: '#/definitions/Measurements'
+ required:
+ - mRID
+ - Measurements
+ xml:
+ name: Terminal
+### common definitions ########################################################
+ Header_Reply:
+ description: Der Kopf der CIM-Nachricht.
+ type: object
+ properties:
+ Verb:
+ description: Hinweis, um welche Art von Nachricht es sich handelt.
+ type: string
+ default: reply
+ Noun:
+ description: Hinweis auf den Nachrichteninhalt.
+ type: string
+ Revision:
+ description: Version, die den Nachrichtenaustausch definiert. Dies ist nicht die CIM-Version.
+ type: integer
+ format: int32
+ minimum: 1
+ maximum: 1
+ Timestamp:
+ description: Zeitpunkt, an dem die Nachricht versendet wurde (in UTC gemäß ISO-8601-Format YYYY-MM-DDThh:mm:ss.sssZ).
+ type: string
+ format: date-time
+ pattern: '^([0-9]{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|30|31)T(([0-1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{3}Z)$'
+ Source:
+ description: Eindeutige Bezeichnung des Senders der Nachricht.
+ type: string
+ MessageID:
+ description: Eindeutige Kennung dieser Nachricht. Generiert vom Sender der Nachricht.
+ type: string
+ format: uuid
+ pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+ User:
+ $ref: '#/definitions/UserID'
+ required:
+ - Verb
+ - Noun
+ - Revision
+ - Timestamp
+ - Source
+ - MessageID
+ - User
+ xml:
+ name: Header
+ Reply_OK:
+ description: Die Antwort der CIM-Nachricht.
+ type: object
+ properties:
+ Result:
+ description: Antworttext
+ type: string
+ default: OK
+ required:
+ - Result
+ xml:
+ name: Reply
+ ResponseMessage:
+ description: Die CIM-Nachricht.
+ type: object
+ properties:
+ Header:
+ $ref: '#/definitions/Header_Reply'
+ Reply:
+ $ref: '#/definitions/Reply_OK'
+ Payload:
+ $ref: '#/definitions/Payload'
+ required:
+ - Header
+ - Reply
+ - Payload
+ UserID:
+ properties:
+ id:
+ description: Eindeutige Kennung des angemeldeten Nutzers (Empfänger).
+ type: string
+ xml:
+ name: UserID \ No newline at end of file
diff --git a/doc/src/main/doc/resources/process/00_mock-up-measurement-service_starten_1_de.bpmn b/doc/src/main/doc/resources/process/00_mock-up-measurement-service_starten_1_de.bpmn
new file mode 100644
index 0000000..ce60131
--- /dev/null
+++ b/doc/src/main/doc/resources/process/00_mock-up-measurement-service_starten_1_de.bpmn
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_0deedg3" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.0.0">
+ <bpmn:collaboration id="Collaboration_0joqp0s">
+ <bpmn:participant id="Participant_1y1o92i" name="mock-up-measurement" processRef="Process_0l881g4" />
+ </bpmn:collaboration>
+ <bpmn:process id="Process_0l881g4" isExecutable="false">
+ <bpmn:sequenceFlow id="SequenceFlow_1war6aj" sourceRef="IntermediateCatchEvent_0sdpzrx" targetRef="EndEvent_1ejqdvq" />
+ <bpmn:sequenceFlow id="SequenceFlow_0bvz69j" sourceRef="ExclusiveGateway_1gn02fq" targetRef="IntermediateCatchEvent_0sdpzrx" />
+ <bpmn:sequenceFlow id="SequenceFlow_1p82wkg" sourceRef="Task_1slx4h5" targetRef="ExclusiveGateway_1gn02fq" />
+ <bpmn:sequenceFlow id="SequenceFlow_1ekgkm6" sourceRef="IntermediateCatchEvent_0kc0nm7" targetRef="Task_1slx4h5" />
+ <bpmn:sequenceFlow id="SequenceFlow_0ek6e3j" sourceRef="ExclusiveGateway_1gn02fq" targetRef="IntermediateCatchEvent_0kc0nm7" />
+ <bpmn:sequenceFlow id="SequenceFlow_1dfd08d" sourceRef="Task_042yw4t" targetRef="EndEvent_1euyk2e" />
+ <bpmn:sequenceFlow id="SequenceFlow_0jib0ip" sourceRef="BoundaryEvent_1xuj20p" targetRef="Task_042yw4t" />
+ <bpmn:sequenceFlow id="SequenceFlow_0d0eakz" sourceRef="StartEvent_0fp8w8o" targetRef="Task_07ujgo6" />
+ <bpmn:endEvent id="EndEvent_1ejqdvq">
+ <bpmn:incoming>SequenceFlow_1war6aj</bpmn:incoming>
+ </bpmn:endEvent>
+ <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_0sdpzrx" name="Anwendung beenden">
+ <bpmn:incoming>SequenceFlow_0bvz69j</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1war6aj</bpmn:outgoing>
+ <bpmn:signalEventDefinition />
+ </bpmn:intermediateCatchEvent>
+ <bpmn:task id="Task_1slx4h5" name="Anfrage bearbeiten">
+ <bpmn:incoming>SequenceFlow_1ekgkm6</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1p82wkg</bpmn:outgoing>
+ </bpmn:task>
+ <bpmn:eventBasedGateway id="ExclusiveGateway_1gn02fq">
+ <bpmn:incoming>SequenceFlow_1p82wkg</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_1ih6qq2</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0bvz69j</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_0ek6e3j</bpmn:outgoing>
+ </bpmn:eventBasedGateway>
+ <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_0kc0nm7" name="Anfrage erhalten">
+ <bpmn:incoming>SequenceFlow_0ek6e3j</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1ekgkm6</bpmn:outgoing>
+ <bpmn:messageEventDefinition />
+ </bpmn:intermediateCatchEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_1ih6qq2" sourceRef="Task_07ujgo6" targetRef="ExclusiveGateway_1gn02fq" />
+ <bpmn:task id="Task_07ujgo6" name="leeres Datenmodell bereitstellen">
+ <bpmn:incoming>SequenceFlow_0d0eakz</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1ih6qq2</bpmn:outgoing>
+ <bpmn:property id="Property_0zbkv5j" name="__targetRef_placeholder" />
+ <bpmn:dataInputAssociation id="DataInputAssociation_1rbjr1j">
+ <bpmn:sourceRef>DataStoreReference_0ytsoq1</bpmn:sourceRef>
+ <bpmn:targetRef>Property_0zbkv5j</bpmn:targetRef>
+ </bpmn:dataInputAssociation>
+ <bpmn:dataOutputAssociation />
+ <bpmn:dataOutputAssociation />
+ </bpmn:task>
+ <bpmn:boundaryEvent id="BoundaryEvent_1xuj20p" attachedToRef="Task_07ujgo6">
+ <bpmn:outgoing>SequenceFlow_0jib0ip</bpmn:outgoing>
+ <bpmn:errorEventDefinition />
+ </bpmn:boundaryEvent>
+ <bpmn:dataStoreReference id="DataStoreReference_0ytsoq1" name="Datenquelle" />
+ <bpmn:startEvent id="StartEvent_0fp8w8o">
+ <bpmn:outgoing>SequenceFlow_0d0eakz</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:task id="Task_042yw4t" name="Fehler protokollieren&#10;(Fehler)">
+ <bpmn:incoming>SequenceFlow_0jib0ip</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1dfd08d</bpmn:outgoing>
+ <bpmn:dataOutputAssociation />
+ <bpmn:dataOutputAssociation />
+ <bpmn:dataOutputAssociation id="DataOutputAssociation_0cspiwq">
+ <bpmn:targetRef>DataStoreReference_0boc3n5</bpmn:targetRef>
+ </bpmn:dataOutputAssociation>
+ </bpmn:task>
+ <bpmn:dataStoreReference id="DataStoreReference_0boc3n5" name="Log" />
+ <bpmn:endEvent id="EndEvent_1euyk2e">
+ <bpmn:incoming>SequenceFlow_1dfd08d</bpmn:incoming>
+ <bpmn:errorEventDefinition />
+ </bpmn:endEvent>
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_0joqp0s">
+ <bpmndi:BPMNShape id="Participant_1y1o92i_di" bpmnElement="Participant_1y1o92i">
+ <dc:Bounds x="165" y="-129" width="982" height="568" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="StartEvent_0fp8w8o_di" bpmnElement="StartEvent_0fp8w8o" bioc:stroke="#43A047" bioc:fill="#C8E6C9">
+ <dc:Bounds x="236" y="232" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="16" y="268" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_1ejqdvq_di" bpmnElement="EndEvent_1ejqdvq" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+ <dc:Bounds x="1067" y="135" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="995" y="175" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_1euyk2e_di" bpmnElement="EndEvent_1euyk2e" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+ <dc:Bounds x="684" y="60" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="536" y="86" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Task_07ujgo6_di" bpmnElement="Task_07ujgo6" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="393" y="210" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="DataStoreReference_0ytsoq1_di" bpmnElement="DataStoreReference_0ytsoq1">
+ <dc:Bounds x="418" y="333" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="414" y="387" width="59" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="BoundaryEvent_1xuj20p_di" bpmnElement="BoundaryEvent_1xuj20p" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+ <dc:Bounds x="475" y="192" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="322" y="232" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0jib0ip_di" bpmnElement="SequenceFlow_0jib0ip">
+ <di:waypoint x="493" y="192" />
+ <di:waypoint x="493" y="118" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="337" y="122" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0d0eakz_di" bpmnElement="SequenceFlow_0d0eakz">
+ <di:waypoint x="272" y="250" />
+ <di:waypoint x="393" y="250" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="151" y="229" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="DataInputAssociation_1rbjr1j_di" bpmnElement="DataInputAssociation_1rbjr1j">
+ <di:waypoint x="443" y="333" />
+ <di:waypoint x="443" y="290" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="DataStoreReference_0boc3n5_di" bpmnElement="DataStoreReference_0boc3n5">
+ <dc:Bounds x="468" y="-59" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="483" y="-83" width="19" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Task_042yw4t_di" bpmnElement="Task_042yw4t" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="443" y="38" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="DataOutputAssociation_0cspiwq_di" bpmnElement="DataOutputAssociation_0cspiwq">
+ <di:waypoint x="492" y="38" />
+ <di:waypoint x="494" y="-9" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1dfd08d_di" bpmnElement="SequenceFlow_1dfd08d">
+ <di:waypoint x="543" y="78" />
+ <di:waypoint x="684" y="78" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="605" y="43" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="EventBasedGateway_0d2g6b9_di" bpmnElement="ExclusiveGateway_1gn02fq">
+ <dc:Bounds x="677" y="225" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="657" y="278" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="IntermediateCatchEvent_0sdpzrx_di" bpmnElement="IntermediateCatchEvent_0sdpzrx" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+ <dc:Bounds x="800" y="135" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="789" y="175" width="58" height="24" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0bvz69j_di" bpmnElement="SequenceFlow_0bvz69j">
+ <di:waypoint x="702" y="225" />
+ <di:waypoint x="702" y="153" />
+ <di:waypoint x="800" y="153" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="672" y="183" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1war6aj_di" bpmnElement="SequenceFlow_1war6aj">
+ <di:waypoint x="836" y="153" />
+ <di:waypoint x="1067" y="153" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="907" y="132" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="IntermediateCatchEvent_0kc0nm7_di" bpmnElement="IntermediateCatchEvent_0kc0nm7" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+ <dc:Bounds x="800" y="232" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="778" y="272" width="81" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Task_1slx4h5_di" bpmnElement="Task_1slx4h5" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="893" y="210" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1ekgkm6_di" bpmnElement="SequenceFlow_1ekgkm6">
+ <di:waypoint x="836" y="250" />
+ <di:waypoint x="893" y="250" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="820" y="229" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1p82wkg_di" bpmnElement="SequenceFlow_1p82wkg">
+ <di:waypoint x="943" y="290" />
+ <di:waypoint x="943" y="350" />
+ <di:waypoint x="702" y="350" />
+ <di:waypoint x="702" y="275" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="778" y="329" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0ek6e3j_di" bpmnElement="SequenceFlow_0ek6e3j">
+ <di:waypoint x="727" y="250" />
+ <di:waypoint x="800" y="250" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="719" y="229" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1ih6qq2_di" bpmnElement="SequenceFlow_1ih6qq2">
+ <di:waypoint x="493" y="250" />
+ <di:waypoint x="677" y="250" />
+ </bpmndi:BPMNEdge>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/doc/src/main/doc/resources/process/01_Messwerte_aktualisierenl_1_de.bpmn b/doc/src/main/doc/resources/process/01_Messwerte_aktualisierenl_1_de.bpmn
new file mode 100644
index 0000000..0490598
--- /dev/null
+++ b/doc/src/main/doc/resources/process/01_Messwerte_aktualisierenl_1_de.bpmn
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.0.3">
+ <bpmn:collaboration id="Collaboration_1fvocef">
+ <bpmn:participant id="Participant_0qer4u2" name="mock-up-measureement" processRef="Process_1" />
+ </bpmn:collaboration>
+ <bpmn:process id="Process_1" isExecutable="true">
+ <bpmn:startEvent id="StartEvent_08hya4q">
+ <bpmn:outgoing>SequenceFlow_1fekpog</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:task id="SubProcess_00lxtv7" name="Messwerte löschen und hinzufügen   (01-T1)&#10;">
+ <bpmn:incoming>SequenceFlow_1fekpog</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1sk4o45</bpmn:outgoing>
+ </bpmn:task>
+ <bpmn:task id="Task_1j04dtv" name="Fehler protokollieren&#10;(Fehler)">
+ <bpmn:incoming>SequenceFlow_187d01t</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0tjyp93</bpmn:outgoing>
+ <bpmn:dataOutputAssociation id="DataOutputAssociation_1yg5w0y">
+ <bpmn:targetRef>DataStoreReference_1oh1dd8</bpmn:targetRef>
+ </bpmn:dataOutputAssociation>
+ </bpmn:task>
+ <bpmn:dataStoreReference id="DataStoreReference_1oh1dd8" name="Log" />
+ <bpmn:task id="Task_0gq108k" name="Speichern des Referenz-modells">
+ <bpmn:incoming>SequenceFlow_1sk4o45</bpmn:incoming>
+ <bpmn:dataOutputAssociation id="DataOutputAssociation_0ka84zh">
+ <bpmn:targetRef>DataStoreReference_0a0dtyx</bpmn:targetRef>
+ </bpmn:dataOutputAssociation>
+ </bpmn:task>
+ <bpmn:dataStoreReference id="DataStoreReference_0a0dtyx" name="measurement-Repository" />
+ <bpmn:endEvent id="EndEvent_1lnj3ll">
+ <bpmn:incoming>SequenceFlow_0tjyp93</bpmn:incoming>
+ <bpmn:errorEventDefinition id="ErrorEventDefinition_0ulbrwu" />
+ </bpmn:endEvent>
+ <bpmn:boundaryEvent id="BoundaryEvent_0es5xtd" name="01-E1" attachedToRef="SubProcess_00lxtv7">
+ <bpmn:outgoing>SequenceFlow_187d01t</bpmn:outgoing>
+ <bpmn:errorEventDefinition id="ErrorEventDefinition_11gj0z8" />
+ </bpmn:boundaryEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_1sk4o45" sourceRef="SubProcess_00lxtv7" targetRef="Task_0gq108k" />
+ <bpmn:sequenceFlow id="SequenceFlow_187d01t" sourceRef="BoundaryEvent_0es5xtd" targetRef="Task_1j04dtv" />
+ <bpmn:sequenceFlow id="SequenceFlow_1fekpog" sourceRef="StartEvent_08hya4q" targetRef="SubProcess_00lxtv7" />
+ <bpmn:sequenceFlow id="SequenceFlow_0tjyp93" sourceRef="Task_1j04dtv" targetRef="EndEvent_1lnj3ll" />
+ <bpmn:textAnnotation id="TextAnnotation_071yf6w">
+ <bpmn:text>reset</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:textAnnotation id="TextAnnotation_1t78mzk">
+ <bpmn:text>01-E1</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:textAnnotation id="TextAnnotation_0iqlfp0">
+ <bpmn:text>service.execute_POST_1_de.open-api.yaml</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0ch6pav" sourceRef="SubProcess_00lxtv7" targetRef="TextAnnotation_071yf6w" />
+ <bpmn:association id="Association_028qk6u" sourceRef="EndEvent_1lnj3ll" targetRef="TextAnnotation_1t78mzk" />
+ <bpmn:association id="Association_0ftgj63" sourceRef="SubProcess_00lxtv7" targetRef="TextAnnotation_0iqlfp0" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_1fvocef">
+ <bpmndi:BPMNShape id="Participant_0qer4u2_di" bpmnElement="Participant_0qer4u2">
+ <dc:Bounds x="47" y="30" width="914" height="638" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="StartEvent_08hya4q_di" bpmnElement="StartEvent_08hya4q" bioc:stroke="#43A047" bioc:fill="#C8E6C9">
+ <dc:Bounds x="97" y="414" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="36" y="142" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Task_0gq108k_di" bpmnElement="Task_0gq108k" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="624" y="392" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="DataStoreReference_0a0dtyx_di" bpmnElement="DataStoreReference_0a0dtyx">
+ <dc:Bounds x="649" y="535" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="638" y="589" width="72" height="27" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="DataOutputAssociation_0ka84zh_di" bpmnElement="DataOutputAssociation_0ka84zh">
+ <di:waypoint x="674" y="472" />
+ <di:waypoint x="673" y="535" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_0iqlfp0_di" bpmnElement="TextAnnotation_0iqlfp0">
+ <dc:Bounds x="84" y="315" width="265" height="26" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1fekpog_di" bpmnElement="SequenceFlow_1fekpog">
+ <di:waypoint x="133" y="432" />
+ <di:waypoint x="387" y="432" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="Association_0ftgj63_di" bpmnElement="Association_0ftgj63">
+ <di:waypoint x="389" y="396" />
+ <di:waypoint x="250" y="341" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="Task_1j04dtv_di" bpmnElement="Task_1j04dtv" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="387" y="204" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="DataStoreReference_1oh1dd8_di" bpmnElement="DataStoreReference_1oh1dd8">
+ <dc:Bounds x="412" y="116" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="428" y="92" width="19" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="DataOutputAssociation_1yg5w0y_di" bpmnElement="DataOutputAssociation_1yg5w0y">
+ <di:waypoint x="437" y="204" />
+ <di:waypoint x="437" y="166" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="BoundaryEvent_0es5xtd_di" bpmnElement="BoundaryEvent_0es5xtd" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+ <dc:Bounds x="418" y="374" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="460" y="364" width="30" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_187d01t_di" bpmnElement="SequenceFlow_187d01t">
+ <di:waypoint x="436" y="374" />
+ <di:waypoint x="436" y="244" />
+ <di:waypoint x="436" y="284" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1sk4o45_di" bpmnElement="SequenceFlow_1sk4o45">
+ <di:waypoint x="487" y="432" />
+ <di:waypoint x="624" y="432" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_071yf6w_di" bpmnElement="TextAnnotation_071yf6w">
+ <dc:Bounds x="192" y="352" width="50" height="26" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0ch6pav_di" bpmnElement="Association_0ch6pav">
+ <di:waypoint x="387" y="416" />
+ <di:waypoint x="242" y="372" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="Task_052k3pn_di" bpmnElement="SubProcess_00lxtv7" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="387" y="392" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_1lnj3ll_di" bpmnElement="EndEvent_1lnj3ll" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+ <dc:Bounds x="688" y="226" width="36" height="36" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0tjyp93_di" bpmnElement="SequenceFlow_0tjyp93">
+ <di:waypoint x="487" y="244" />
+ <di:waypoint x="688" y="244" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_1t78mzk_di" bpmnElement="TextAnnotation_1t78mzk">
+ <dc:Bounds x="731" y="274" width="60" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_028qk6u_di" bpmnElement="Association_028qk6u">
+ <di:waypoint x="720" y="255" />
+ <di:waypoint x="743" y="274" />
+ </bpmndi:BPMNEdge>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/doc/src/main/doc/resources/process/02_Messwerte_hinzufügen_1_de.bpmn b/doc/src/main/doc/resources/process/02_Messwerte_hinzufügen_1_de.bpmn
new file mode 100644
index 0000000..fc9e84e
--- /dev/null
+++ b/doc/src/main/doc/resources/process/02_Messwerte_hinzufügen_1_de.bpmn
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.0.3">
+ <bpmn:collaboration id="Collaboration_1fvocef">
+ <bpmn:participant id="Participant_0qer4u2" name="mock-up-measureement" processRef="Process_1" />
+ </bpmn:collaboration>
+ <bpmn:process id="Process_1" isExecutable="true">
+ <bpmn:startEvent id="StartEvent_08hya4q">
+ <bpmn:outgoing>SequenceFlow_1fekpog</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:dataStoreReference id="DataStoreReference_1oh1dd8" name="Log" />
+ <bpmn:task id="Task_1j04dtv" name="Fehler protokollieren&#10;(Fehler)">
+ <bpmn:incoming>SequenceFlow_0z8wp5o</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0nmgxhz</bpmn:outgoing>
+ <bpmn:dataOutputAssociation id="DataOutputAssociation_1yg5w0y">
+ <bpmn:targetRef>DataStoreReference_1oh1dd8</bpmn:targetRef>
+ </bpmn:dataOutputAssociation>
+ </bpmn:task>
+ <bpmn:task id="Task_0gq108k" name="Speichern des Referenz-Modells">
+ <bpmn:incoming>SequenceFlow_07dw0hq</bpmn:incoming>
+ <bpmn:dataOutputAssociation id="DataOutputAssociation_0ka84zh">
+ <bpmn:targetRef>DataStoreReference_0a0dtyx</bpmn:targetRef>
+ </bpmn:dataOutputAssociation>
+ </bpmn:task>
+ <bpmn:dataStoreReference id="DataStoreReference_0a0dtyx" name="measurement-Repository" />
+ <bpmn:task id="SubProcess_00lxtv7" name="                    Messwerte hinzufügen   (02-T1)&#10;">
+ <bpmn:incoming>SequenceFlow_1fekpog</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_07dw0hq</bpmn:outgoing>
+ </bpmn:task>
+ <bpmn:endEvent id="EndEvent_03jc6ur">
+ <bpmn:incoming>SequenceFlow_0nmgxhz</bpmn:incoming>
+ <bpmn:errorEventDefinition id="ErrorEventDefinition_0nnkkxr" />
+ </bpmn:endEvent>
+ <bpmn:boundaryEvent id="BoundaryEvent_0es5xtd" name="02-E1" attachedToRef="SubProcess_00lxtv7">
+ <bpmn:outgoing>SequenceFlow_0z8wp5o</bpmn:outgoing>
+ <bpmn:errorEventDefinition id="ErrorEventDefinition_11gj0z8" />
+ </bpmn:boundaryEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_07dw0hq" sourceRef="SubProcess_00lxtv7" targetRef="Task_0gq108k" />
+ <bpmn:sequenceFlow id="SequenceFlow_0z8wp5o" sourceRef="BoundaryEvent_0es5xtd" targetRef="Task_1j04dtv" />
+ <bpmn:sequenceFlow id="SequenceFlow_1fekpog" sourceRef="StartEvent_08hya4q" targetRef="SubProcess_00lxtv7" />
+ <bpmn:sequenceFlow id="SequenceFlow_0nmgxhz" sourceRef="Task_1j04dtv" targetRef="EndEvent_03jc6ur" />
+ <bpmn:textAnnotation id="TextAnnotation_0iqlfp0">
+ <bpmn:text>service.execute_POST_1_de.open-api.yaml</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:textAnnotation id="TextAnnotation_1nfwpj0">
+ <bpmn:text>add</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0ftgj63" sourceRef="SubProcess_00lxtv7" targetRef="TextAnnotation_0iqlfp0" />
+ <bpmn:association id="Association_1mxbpd8" sourceRef="SubProcess_00lxtv7" targetRef="TextAnnotation_1nfwpj0" />
+ <bpmn:association id="Association_1n4mzar" sourceRef="EndEvent_03jc6ur" targetRef="TextAnnotation_1na2sa9" />
+ <bpmn:textAnnotation id="TextAnnotation_1na2sa9">
+ <bpmn:text>02-E1</bpmn:text>
+ </bpmn:textAnnotation>
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_1fvocef">
+ <bpmndi:BPMNShape id="Participant_0qer4u2_di" bpmnElement="Participant_0qer4u2">
+ <dc:Bounds x="29" y="22" width="918" height="605" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="StartEvent_08hya4q_di" bpmnElement="StartEvent_08hya4q" bioc:stroke="#43A047" bioc:fill="#C8E6C9">
+ <dc:Bounds x="79" y="364" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="36" y="142" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Task_0gq108k_di" bpmnElement="Task_0gq108k" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="609" y="342" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="DataStoreReference_0a0dtyx_di" bpmnElement="DataStoreReference_0a0dtyx">
+ <dc:Bounds x="634" y="472" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="623" y="526" width="72" height="27" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="DataOutputAssociation_0ka84zh_di" bpmnElement="DataOutputAssociation_0ka84zh">
+ <di:waypoint x="658" y="422" />
+ <di:waypoint x="658" y="472" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_0iqlfp0_di" bpmnElement="TextAnnotation_0iqlfp0">
+ <dc:Bounds x="90" y="296" width="265" height="26" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1fekpog_di" bpmnElement="SequenceFlow_1fekpog">
+ <di:waypoint x="115" y="382" />
+ <di:waypoint x="369" y="382" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="Association_0ftgj63_di" bpmnElement="Association_0ftgj63">
+ <di:waypoint x="369" y="344" />
+ <di:waypoint x="277" y="322" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="Task_1j04dtv_di" bpmnElement="Task_1j04dtv" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="368" y="190" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="DataStoreReference_1oh1dd8_di" bpmnElement="DataStoreReference_1oh1dd8">
+ <dc:Bounds x="393" y="86" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="409" y="62" width="19" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0z8wp5o_di" bpmnElement="SequenceFlow_0z8wp5o">
+ <di:waypoint x="418" y="324" />
+ <di:waypoint x="418" y="230" />
+ <di:waypoint x="418" y="270" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="DataOutputAssociation_1yg5w0y_di" bpmnElement="DataOutputAssociation_1yg5w0y">
+ <di:waypoint x="418" y="190" />
+ <di:waypoint x="418" y="136" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="BoundaryEvent_0es5xtd_di" bpmnElement="BoundaryEvent_0es5xtd" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+ <dc:Bounds x="400" y="324" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="447" y="316" width="30" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_07dw0hq_di" bpmnElement="SequenceFlow_07dw0hq">
+ <di:waypoint x="469" y="382" />
+ <di:waypoint x="609" y="382" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="Task_03i4nis_di" bpmnElement="SubProcess_00lxtv7" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="369" y="342" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_1nfwpj0_di" bpmnElement="TextAnnotation_1nfwpj0">
+ <dc:Bounds x="141" y="327" width="50" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_1mxbpd8_di" bpmnElement="Association_1mxbpd8">
+ <di:waypoint x="369" y="374" />
+ <di:waypoint x="191" y="346" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="EndEvent_03jc6ur_di" bpmnElement="EndEvent_03jc6ur" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+ <dc:Bounds x="641" y="212" width="36" height="36" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0nmgxhz_di" bpmnElement="SequenceFlow_0nmgxhz">
+ <di:waypoint x="468" y="230" />
+ <di:waypoint x="641" y="230" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_1na2sa9_di" bpmnElement="TextAnnotation_1na2sa9">
+ <dc:Bounds x="698" y="256" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_1n4mzar_di" bpmnElement="Association_1n4mzar">
+ <di:waypoint x="675" y="237" />
+ <di:waypoint x="715" y="256" />
+ </bpmndi:BPMNEdge>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/doc/src/main/doc/resources/process/03_Messwerte_abfragen.bpmn b/doc/src/main/doc/resources/process/03_Messwerte_abfragen.bpmn
new file mode 100644
index 0000000..6888fa2
--- /dev/null
+++ b/doc/src/main/doc/resources/process/03_Messwerte_abfragen.bpmn
@@ -0,0 +1,549 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_0deedg3" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.0.3">
+ <bpmn:collaboration id="Collaboration_0joqp0s">
+ <bpmn:participant id="Participant_0ru0snc" name="nutzendes System" processRef="Process_04uvgkj" />
+ <bpmn:participant id="Participant_1y1o92i" name="mock-up-topology-state" processRef="Process_0l881g4" />
+ <bpmn:messageFlow id="MessageFlow_0xybizg" name="" sourceRef="SendTask_0xvv6ys" targetRef="IntermediateCatchEvent_1qvwsps" />
+ <bpmn:messageFlow id="MessageFlow_06rblkd" name="" sourceRef="SendTask_1aqsod6" targetRef="StartEvent_0pdpn6v" />
+ <bpmn:messageFlow id="MessageFlow_1t1pkfy" sourceRef="SendTask_1ppgc3w" targetRef="IntermediateCatchEvent_01jgmxq" />
+ <bpmn:messageFlow id="MessageFlow_06fsrzq" name="" sourceRef="SendTask_1rq0tql" targetRef="IntermediateCatchEvent_1uo7ts7" />
+ </bpmn:collaboration>
+ <bpmn:process id="Process_04uvgkj" isExecutable="false">
+ <bpmn:sequenceFlow id="SequenceFlow_0qerq2c" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1qvwsps" />
+ <bpmn:sequenceFlow id="SequenceFlow_18gank5" sourceRef="IntermediateCatchEvent_1qvwsps" targetRef="ExclusiveGateway_1m42ue4" />
+ <bpmn:sequenceFlow id="SequenceFlow_0knug4f" sourceRef="StartEvent_0fp8w8o" targetRef="SendTask_1aqsod6" />
+ <bpmn:sequenceFlow id="SequenceFlow_05n3vpz" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1q59ol0" />
+ <bpmn:sequenceFlow id="SequenceFlow_11lghfk" sourceRef="SendTask_1aqsod6" targetRef="EventBasedGateway_0i1bam8" />
+ <bpmn:sequenceFlow id="SequenceFlow_1t1jnhl" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_01jgmxq" />
+ <bpmn:sequenceFlow id="SequenceFlow_0ob8om2" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1uo7ts7" />
+ <bpmn:sequenceFlow id="SequenceFlow_09zdna4" sourceRef="IntermediateCatchEvent_1q59ol0" targetRef="ExclusiveGateway_1m42ue4" />
+ <bpmn:sequenceFlow id="SequenceFlow_1jyvnwc" sourceRef="ExclusiveGateway_1m42ue4" targetRef="Task_03zzd93" />
+ <bpmn:sequenceFlow id="SequenceFlow_1fhomia" sourceRef="Task_03zzd93" targetRef="EndEvent_1yxgs4z" />
+ <bpmn:sequenceFlow id="SequenceFlow_1h003t8" sourceRef="IntermediateCatchEvent_01jgmxq" targetRef="EndEvent_0d9oh1l" />
+ <bpmn:sequenceFlow id="SequenceFlow_1989n8w" sourceRef="IntermediateCatchEvent_1uo7ts7" targetRef="ExclusiveGateway_1m42ue4" />
+ <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1qvwsps">
+ <bpmn:incoming>SequenceFlow_0qerq2c</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_18gank5</bpmn:outgoing>
+ <bpmn:messageEventDefinition />
+ </bpmn:intermediateCatchEvent>
+ <bpmn:startEvent id="StartEvent_0fp8w8o">
+ <bpmn:outgoing>SequenceFlow_0knug4f</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:eventBasedGateway id="EventBasedGateway_0i1bam8">
+ <bpmn:incoming>SequenceFlow_11lghfk</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0qerq2c</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_05n3vpz</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_1t1jnhl</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_0ob8om2</bpmn:outgoing>
+ </bpmn:eventBasedGateway>
+ <bpmn:sendTask id="SendTask_1aqsod6" name="Messwerte abfragen">
+ <bpmn:incoming>SequenceFlow_0knug4f</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_11lghfk</bpmn:outgoing>
+ </bpmn:sendTask>
+ <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1q59ol0" name="Timeout&#10;03-E1">
+ <bpmn:incoming>SequenceFlow_05n3vpz</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_09zdna4</bpmn:outgoing>
+ <bpmn:timerEventDefinition />
+ </bpmn:intermediateCatchEvent>
+ <bpmn:task id="Task_03zzd93" name="Fehler auslösen">
+ <bpmn:incoming>SequenceFlow_1jyvnwc</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1fhomia</bpmn:outgoing>
+ </bpmn:task>
+ <bpmn:dataObjectReference id="DataObjectReference_09m8tpv" name="Messwerte" dataObjectRef="DataObject_08tipr2" />
+ <bpmn:dataObject id="DataObject_08tipr2" />
+ <bpmn:endEvent id="EndEvent_0d9oh1l">
+ <bpmn:incoming>SequenceFlow_1h003t8</bpmn:incoming>
+ </bpmn:endEvent>
+ <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_01jgmxq">
+ <bpmn:incoming>SequenceFlow_1t1jnhl</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1h003t8</bpmn:outgoing>
+ <bpmn:messageEventDefinition />
+ </bpmn:intermediateCatchEvent>
+ <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1uo7ts7">
+ <bpmn:incoming>SequenceFlow_0ob8om2</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1989n8w</bpmn:outgoing>
+ <bpmn:messageEventDefinition />
+ </bpmn:intermediateCatchEvent>
+ <bpmn:exclusiveGateway id="ExclusiveGateway_1m42ue4">
+ <bpmn:incoming>SequenceFlow_18gank5</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_09zdna4</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_1989n8w</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1jyvnwc</bpmn:outgoing>
+ </bpmn:exclusiveGateway>
+ <bpmn:endEvent id="EndEvent_1yxgs4z" name="">
+ <bpmn:incoming>SequenceFlow_1fhomia</bpmn:incoming>
+ <bpmn:errorEventDefinition />
+ </bpmn:endEvent>
+ <bpmn:association id="Association_152nrvv" sourceRef="SendTask_1aqsod6" targetRef="TextAnnotation_05j86bx" />
+ <bpmn:textAnnotation id="TextAnnotation_05j86bx">
+ <bpmn:text>source-system.electricity.measurement.measurement-values_GET_4_de.open-api.yaml</bpmn:text>
+ </bpmn:textAnnotation>
+ </bpmn:process>
+ <bpmn:process id="Process_0l881g4" isExecutable="false">
+ <bpmn:sequenceFlow id="SequenceFlow_0jh0ukt" sourceRef="SendTask_0xvv6ys" targetRef="EndEvent_1ds1wq2" />
+ <bpmn:sequenceFlow id="SequenceFlow_0s423p9" sourceRef="Task_1wn1rf0" targetRef="SendTask_0xvv6ys" />
+ <bpmn:sequenceFlow id="SequenceFlow_1bvdk9t" sourceRef="StartEvent_0pdpn6v" targetRef="Task_0x9cdxx" />
+ <bpmn:sequenceFlow id="SequenceFlow_13txgld" name="[03-T1.2 Abfrage unzulässig]" sourceRef="ExclusiveGateway_0hz34e9" targetRef="Task_1wn1rf0" />
+ <bpmn:sequenceFlow id="SequenceFlow_0yv4x43" sourceRef="Task_0x9cdxx" targetRef="ExclusiveGateway_0hz34e9" />
+ <bpmn:sendTask id="SendTask_0xvv6ys" name="Fehler versenden&#10;(03-E2)">
+ <bpmn:incoming>SequenceFlow_0s423p9</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0jh0ukt</bpmn:outgoing>
+ </bpmn:sendTask>
+ <bpmn:endEvent id="EndEvent_1ds1wq2">
+ <bpmn:incoming>SequenceFlow_0jh0ukt</bpmn:incoming>
+ <bpmn:errorEventDefinition />
+ </bpmn:endEvent>
+ <bpmn:dataStoreReference id="DataStoreReference_1lft3mu" name="Log" />
+ <bpmn:task id="Task_1wn1rf0" name="Fehler protokollieren&#10;(Warnung)">
+ <bpmn:incoming>SequenceFlow_13txgld</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0s423p9</bpmn:outgoing>
+ <bpmn:dataOutputAssociation />
+ <bpmn:dataOutputAssociation id="DataOutputAssociation_16nt68n">
+ <bpmn:targetRef>DataStoreReference_1lft3mu</bpmn:targetRef>
+ </bpmn:dataOutputAssociation>
+ </bpmn:task>
+ <bpmn:task id="Task_0x9cdxx" name="Abfrage prüfen (03-T1)">
+ <bpmn:incoming>SequenceFlow_1bvdk9t</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0yv4x43</bpmn:outgoing>
+ </bpmn:task>
+ <bpmn:startEvent id="StartEvent_0pdpn6v">
+ <bpmn:outgoing>SequenceFlow_1bvdk9t</bpmn:outgoing>
+ <bpmn:messageEventDefinition />
+ </bpmn:startEvent>
+ <bpmn:exclusiveGateway id="ExclusiveGateway_0hz34e9">
+ <bpmn:incoming>SequenceFlow_0yv4x43</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_13txgld</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_1l3iovs</bpmn:outgoing>
+ </bpmn:exclusiveGateway>
+ <bpmn:sequenceFlow id="SequenceFlow_1l3iovs" name="[03-T1.1 Abfrage zulässig]" sourceRef="ExclusiveGateway_0hz34e9" targetRef="Task_06czalg" />
+ <bpmn:dataStoreReference id="DataStoreReference_1lmfcdf" name="Log" />
+ <bpmn:sendTask id="SendTask_1rq0tql" name="Fehler versenden&#10;(03-E3)">
+ <bpmn:incoming>SequenceFlow_04x4myr</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0r3t0qt</bpmn:outgoing>
+ </bpmn:sendTask>
+ <bpmn:task id="Task_0dcs0n6" name="Fehler protokollieren&#10;(Fehler)">
+ <bpmn:incoming>SequenceFlow_01qqibk</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_04x4myr</bpmn:outgoing>
+ <bpmn:dataOutputAssociation />
+ <bpmn:dataOutputAssociation id="DataOutputAssociation_0gsk5pr">
+ <bpmn:targetRef>DataStoreReference_1lmfcdf</bpmn:targetRef>
+ </bpmn:dataOutputAssociation>
+ </bpmn:task>
+ <bpmn:endEvent id="EndEvent_1ejqdvq">
+ <bpmn:incoming>SequenceFlow_1bm4k7w</bpmn:incoming>
+ </bpmn:endEvent>
+ <bpmn:endEvent id="EndEvent_0ijxku7">
+ <bpmn:incoming>SequenceFlow_0r3t0qt</bpmn:incoming>
+ <bpmn:errorEventDefinition />
+ </bpmn:endEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_04x4myr" sourceRef="Task_0dcs0n6" targetRef="SendTask_1rq0tql" />
+ <bpmn:sequenceFlow id="SequenceFlow_0r3t0qt" sourceRef="SendTask_1rq0tql" targetRef="EndEvent_0ijxku7" />
+ <bpmn:sequenceFlow id="SequenceFlow_01qqibk" sourceRef="BoundaryEvent_0omkth5" targetRef="Task_0dcs0n6" />
+ <bpmn:sequenceFlow id="SequenceFlow_0n06oz6" sourceRef="Task_06czalg" targetRef="SendTask_1ppgc3w" />
+ <bpmn:sequenceFlow id="SequenceFlow_1bm4k7w" sourceRef="SendTask_1ppgc3w" targetRef="EndEvent_1ejqdvq" />
+ <bpmn:task id="Task_06czalg" name="Messwerte ermitteln">
+ <bpmn:incoming>SequenceFlow_1l3iovs</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0n06oz6</bpmn:outgoing>
+ <bpmn:property id="Property_0qw2zgf" name="__targetRef_placeholder" />
+ <bpmn:dataInputAssociation id="DataInputAssociation_0h48n1c">
+ <bpmn:sourceRef>DataStoreReference_0p5l3xx</bpmn:sourceRef>
+ <bpmn:targetRef>Property_0qw2zgf</bpmn:targetRef>
+ </bpmn:dataInputAssociation>
+ </bpmn:task>
+ <bpmn:boundaryEvent id="BoundaryEvent_0omkth5" attachedToRef="Task_06czalg">
+ <bpmn:outgoing>SequenceFlow_01qqibk</bpmn:outgoing>
+ <bpmn:errorEventDefinition id="ErrorEventDefinition_11olaoy" />
+ </bpmn:boundaryEvent>
+ <bpmn:dataStoreReference id="DataStoreReference_0p5l3xx" name="Datenquelle" />
+ <bpmn:sendTask id="SendTask_1ppgc3w" name="Messwerte versenden">
+ <bpmn:incoming>SequenceFlow_0n06oz6</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1bm4k7w</bpmn:outgoing>
+ </bpmn:sendTask>
+ <bpmn:association id="Association_0jstqgh" sourceRef="SendTask_0xvv6ys" targetRef="TextAnnotation_0x17maz" />
+ <bpmn:textAnnotation id="TextAnnotation_0x17maz">
+ <bpmn:text>http-Status: 400</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:textAnnotation id="TextAnnotation_1nlozdn">
+ <bpmn:text>http-Status: 500</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_1wojxqf" sourceRef="SendTask_1rq0tql" targetRef="TextAnnotation_1nlozdn" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_0joqp0s">
+ <bpmndi:BPMNShape id="Participant_0ru0snc_di" bpmnElement="Participant_0ru0snc">
+ <dc:Bounds x="-948" y="-802" width="1762" height="417" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Participant_1y1o92i_di" bpmnElement="Participant_1y1o92i">
+ <dc:Bounds x="-948" y="-317" width="1766" height="515" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="IntermediateCatchEvent_1qvwsps_di" bpmnElement="IntermediateCatchEvent_1qvwsps" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+ <dc:Bounds x="-401" y="-453" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-428" y="-440" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="StartEvent_0fp8w8o_di" bpmnElement="StartEvent_0fp8w8o" bioc:stroke="#43A047" bioc:fill="#C8E6C9">
+ <dc:Bounds x="-871" y="-628" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-898" y="-592" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="IntermediateCatchEvent_1q59ol0_di" bpmnElement="IntermediateCatchEvent_1q59ol0" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+ <dc:Bounds x="-216" y="-628" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-218" y="-588" width="41" height="27" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EventBasedGateway_0i1bam8_di" bpmnElement="EventBasedGateway_0i1bam8">
+ <dc:Bounds x="-577" y="-635" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-597" y="-581" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="SendTask_1aqsod6_di" bpmnElement="SendTask_1aqsod6" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="-755" y="-650" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Task_03zzd93_di" bpmnElement="Task_03zzd93" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="394" y="-560" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_1yxgs4z_di" bpmnElement="EndEvent_1yxgs4z" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+ <dc:Bounds x="533" y="-538" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="898" y="-498" width="86" height="24" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="DataObjectReference_09m8tpv_di" bpmnElement="DataObjectReference_09m8tpv">
+ <dc:Bounds x="710" y="-660" width="36" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="701" y="-604" width="54" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_0d9oh1l_di" bpmnElement="EndEvent_0d9oh1l" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+ <dc:Bounds x="710" y="-719" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1071" y="-679" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="IntermediateCatchEvent_01jgmxq_di" bpmnElement="IntermediateCatchEvent_01jgmxq" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+ <dc:Bounds x="584" y="-719" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="945" y="-679" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="IntermediateCatchEvent_1uo7ts7_di" bpmnElement="IntermediateCatchEvent_1uo7ts7" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+ <dc:Bounds x="135" y="-538" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="496" y="-498" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ExclusiveGateway_1m42ue4_di" bpmnElement="ExclusiveGateway_1m42ue4" isMarkerVisible="true">
+ <dc:Bounds x="315" y="-545" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="683" y="-491" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_05j86bx_di" bpmnElement="TextAnnotation_05j86bx">
+ <dc:Bounds x="-889" y="-771" width="505" height="26" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ExclusiveGateway_0hz34e9_di" bpmnElement="ExclusiveGateway_0hz34e9" isMarkerVisible="true">
+ <dc:Bounds x="-411" y="11" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-431" y="65" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="StartEvent_0pdpn6v_di" bpmnElement="StartEvent_0pdpn6v" bioc:stroke="#43A047" bioc:fill="#C8E6C9">
+ <dc:Bounds x="-724" y="18" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-751" y="58" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Task_0x9cdxx_di" bpmnElement="Task_0x9cdxx" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="-589" y="-4" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_0ijxku7_di" bpmnElement="EndEvent_0ijxku7" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+ <dc:Bounds x="286" y="-219" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="647" y="-179" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_1ejqdvq_di" bpmnElement="EndEvent_1ejqdvq" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+ <dc:Bounds x="710" y="18" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1071" y="58" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="SendTask_1ppgc3w_di" bpmnElement="SendTask_1ppgc3w" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="552" y="-4" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Task_0dcs0n6_di" bpmnElement="Task_0dcs0n6" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="-60" y="-241" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Task_1wn1rf0_di" bpmnElement="Task_1wn1rf0" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="-436" y="-126" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="DataStoreReference_1lft3mu_di" bpmnElement="DataStoreReference_1lft3mu">
+ <dc:Bounds x="-297" y="-111" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-280" y="-57" width="18" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_1ds1wq2_di" bpmnElement="EndEvent_1ds1wq2" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+ <dc:Bounds x="-290" y="-219" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-318" y="-179" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="SendTask_1rq0tql_di" bpmnElement="SendTask_1rq0tql" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="103" y="-241" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="SendTask_0xvv6ys_di" bpmnElement="SendTask_0xvv6ys" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="-436" y="-241" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="DataStoreReference_1lmfcdf_di" bpmnElement="DataStoreReference_1lmfcdf">
+ <dc:Bounds x="-35" y="-137" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-18" y="-83" width="19" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_1nlozdn_di" bpmnElement="TextAnnotation_1nlozdn">
+ <dc:Bounds x="211" y="-303" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_0x17maz_di" bpmnElement="TextAnnotation_0x17maz">
+ <dc:Bounds x="-322" y="-293" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0qerq2c_di" bpmnElement="SequenceFlow_0qerq2c">
+ <di:waypoint x="-552" y="-585" />
+ <di:waypoint x="-552" y="-435" />
+ <di:waypoint x="-401" y="-435" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-582" y="-516" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="MessageFlow_0xybizg_di" bpmnElement="MessageFlow_0xybizg">
+ <di:waypoint x="-385" y="-241" />
+ <di:waypoint x="-385" y="-329" />
+ <di:waypoint x="-385" y="-329" />
+ <di:waypoint x="-385" y="-418" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-477" y="-285" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_18gank5_di" bpmnElement="SequenceFlow_18gank5">
+ <di:waypoint x="-365" y="-435" />
+ <di:waypoint x="340" y="-435" />
+ <di:waypoint x="340" y="-495" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="137.5" y="-456" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0knug4f_di" bpmnElement="SequenceFlow_0knug4f">
+ <di:waypoint x="-835" y="-610" />
+ <di:waypoint x="-755" y="-610" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-840" y="-631" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_05n3vpz_di" bpmnElement="SequenceFlow_05n3vpz">
+ <di:waypoint x="-527" y="-610" />
+ <di:waypoint x="-216" y="-610" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-275.5" y="-631" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_09zdna4_di" bpmnElement="SequenceFlow_09zdna4">
+ <di:waypoint x="-180" y="-610" />
+ <di:waypoint x="340" y="-610" />
+ <di:waypoint x="340" y="-545" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="369" y="-631" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_11lghfk_di" bpmnElement="SequenceFlow_11lghfk">
+ <di:waypoint x="-655" y="-610" />
+ <di:waypoint x="-577" y="-610" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-661" y="-631" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1t1jnhl_di" bpmnElement="SequenceFlow_1t1jnhl">
+ <di:waypoint x="-552" y="-635" />
+ <di:waypoint x="-552" y="-701" />
+ <di:waypoint x="584" y="-701" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-582" y="-674" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0ob8om2_di" bpmnElement="SequenceFlow_0ob8om2">
+ <di:waypoint x="-552" y="-585" />
+ <di:waypoint x="-552" y="-520" />
+ <di:waypoint x="135" y="-520" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-582" y="-557.5" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="Association_152nrvv_di" bpmnElement="Association_152nrvv">
+ <di:waypoint x="-674" y="-650" />
+ <di:waypoint x="-640" y="-745" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="MessageFlow_06rblkd_di" bpmnElement="MessageFlow_06rblkd">
+ <di:waypoint x="-705" y="-570" />
+ <di:waypoint x="-706" y="18" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-710.5" y="-198" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1jyvnwc_di" bpmnElement="SequenceFlow_1jyvnwc">
+ <di:waypoint x="365" y="-520" />
+ <di:waypoint x="394" y="-520" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="723.5" y="-541" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1fhomia_di" bpmnElement="SequenceFlow_1fhomia">
+ <di:waypoint x="494" y="-520" />
+ <di:waypoint x="533" y="-520" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="901.5" y="-541" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1h003t8_di" bpmnElement="SequenceFlow_1h003t8">
+ <di:waypoint x="620" y="-701" />
+ <di:waypoint x="710" y="-701" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1008" y="-722" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="MessageFlow_1t1pkfy_di" bpmnElement="MessageFlow_1t1pkfy">
+ <di:waypoint x="602" y="-4" />
+ <di:waypoint x="603" y="-683" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="946.5" y="-363.5" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="MessageFlow_06fsrzq_di" bpmnElement="MessageFlow_06fsrzq">
+ <di:waypoint x="153" y="-241" />
+ <di:waypoint x="153" y="-502" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="546" y="-282.5" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1989n8w_di" bpmnElement="SequenceFlow_1989n8w">
+ <di:waypoint x="171" y="-520" />
+ <di:waypoint x="315" y="-520" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="586" y="-541" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0yv4x43_di" bpmnElement="SequenceFlow_0yv4x43">
+ <di:waypoint x="-489" y="36" />
+ <di:waypoint x="-411" y="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-495" y="15" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_13txgld_di" bpmnElement="SequenceFlow_13txgld">
+ <di:waypoint x="-386" y="11" />
+ <di:waypoint x="-386" y="-46" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-377" y="-11" width="83" height="27" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1bvdk9t_di" bpmnElement="SequenceFlow_1bvdk9t">
+ <di:waypoint x="-688" y="36" />
+ <di:waypoint x="-589" y="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-682.5" y="15" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0r3t0qt_di" bpmnElement="SequenceFlow_0r3t0qt">
+ <di:waypoint x="203" y="-201" />
+ <di:waypoint x="286" y="-201" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="588.5" y="-222" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1bm4k7w_di" bpmnElement="SequenceFlow_1bm4k7w">
+ <di:waypoint x="652" y="36" />
+ <di:waypoint x="710" y="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1024" y="15" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_04x4myr_di" bpmnElement="SequenceFlow_04x4myr">
+ <di:waypoint x="40" y="-201" />
+ <di:waypoint x="103" y="-201" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="415.5" y="-222" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="DataOutputAssociation_0gsk5pr_di" bpmnElement="DataOutputAssociation_0gsk5pr">
+ <di:waypoint x="-10" y="-161" />
+ <di:waypoint x="-9" y="-137" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="DataOutputAssociation_16nt68n_di" bpmnElement="DataOutputAssociation_16nt68n">
+ <di:waypoint x="-336" y="-83" />
+ <di:waypoint x="-297" y="-81" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0s423p9_di" bpmnElement="SequenceFlow_0s423p9">
+ <di:waypoint x="-386" y="-126" />
+ <di:waypoint x="-386" y="-161" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-416" y="-148.5" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0jh0ukt_di" bpmnElement="SequenceFlow_0jh0ukt">
+ <di:waypoint x="-336" y="-201" />
+ <di:waypoint x="-290" y="-201" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-358" y="-222" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="Association_1wojxqf_di" bpmnElement="Association_1wojxqf">
+ <di:waypoint x="197" y="-237" />
+ <di:waypoint x="242" y="-273" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="Association_0jstqgh_di" bpmnElement="Association_0jstqgh">
+ <di:waypoint x="-338" y="-233" />
+ <di:waypoint x="-294" y="-263" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1l3iovs_di" bpmnElement="SequenceFlow_1l3iovs">
+ <di:waypoint x="-361" y="36" />
+ <di:waypoint x="-192" y="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-351" y="48" width="83" height="27" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_01qqibk_di" bpmnElement="SequenceFlow_01qqibk">
+ <di:waypoint x="-142" y="-22" />
+ <di:waypoint x="-142" y="-201" />
+ <di:waypoint x="-60" y="-201" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="261" y="-108.5" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0n06oz6_di" bpmnElement="SequenceFlow_0n06oz6">
+ <di:waypoint x="-92" y="36" />
+ <di:waypoint x="552" y="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="618" y="15" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="Task_06czalg_di" bpmnElement="Task_06czalg" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="-192" y="-4" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="DataStoreReference_0p5l3xx_di" bpmnElement="DataStoreReference_0p5l3xx">
+ <dc:Bounds x="-167" y="103" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-171" y="157" width="59" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="BoundaryEvent_0omkth5_di" bpmnElement="BoundaryEvent_0omkth5" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+ <dc:Bounds x="-160" y="-22" width="36" height="36" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="DataInputAssociation_0h48n1c_di" bpmnElement="DataInputAssociation_0h48n1c">
+ <di:waypoint x="-143" y="103" />
+ <di:waypoint x="-144" y="76" />
+ </bpmndi:BPMNEdge>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/doc/src/main/doc/resources/process/04_Messpunkte_abfragen.bpmn b/doc/src/main/doc/resources/process/04_Messpunkte_abfragen.bpmn
new file mode 100644
index 0000000..a9beba7
--- /dev/null
+++ b/doc/src/main/doc/resources/process/04_Messpunkte_abfragen.bpmn
@@ -0,0 +1,549 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_0deedg3" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.0.3">
+ <bpmn:collaboration id="Collaboration_0joqp0s">
+ <bpmn:participant id="Participant_0ru0snc" name="nutzendes System" processRef="Process_04uvgkj" />
+ <bpmn:participant id="Participant_1y1o92i" name="mock-up-measurement" processRef="Process_0l881g4" />
+ <bpmn:messageFlow id="MessageFlow_0xybizg" name="" sourceRef="SendTask_0xvv6ys" targetRef="IntermediateCatchEvent_1qvwsps" />
+ <bpmn:messageFlow id="MessageFlow_06rblkd" name="" sourceRef="SendTask_1aqsod6" targetRef="StartEvent_0pdpn6v" />
+ <bpmn:messageFlow id="MessageFlow_1t1pkfy" sourceRef="SendTask_1ppgc3w" targetRef="IntermediateCatchEvent_01jgmxq" />
+ <bpmn:messageFlow id="MessageFlow_06fsrzq" name="" sourceRef="SendTask_1rq0tql" targetRef="IntermediateCatchEvent_1uo7ts7" />
+ </bpmn:collaboration>
+ <bpmn:process id="Process_04uvgkj" isExecutable="false">
+ <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1qvwsps">
+ <bpmn:incoming>SequenceFlow_0qerq2c</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_18gank5</bpmn:outgoing>
+ <bpmn:messageEventDefinition />
+ </bpmn:intermediateCatchEvent>
+ <bpmn:startEvent id="StartEvent_0fp8w8o">
+ <bpmn:outgoing>SequenceFlow_0knug4f</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:eventBasedGateway id="EventBasedGateway_0i1bam8">
+ <bpmn:incoming>SequenceFlow_11lghfk</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0qerq2c</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_05n3vpz</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_1t1jnhl</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_0ob8om2</bpmn:outgoing>
+ </bpmn:eventBasedGateway>
+ <bpmn:sendTask id="SendTask_1aqsod6" name="Messpunkte abfragen">
+ <bpmn:incoming>SequenceFlow_0knug4f</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_11lghfk</bpmn:outgoing>
+ </bpmn:sendTask>
+ <bpmn:sequenceFlow id="SequenceFlow_0qerq2c" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1qvwsps" />
+ <bpmn:sequenceFlow id="SequenceFlow_18gank5" sourceRef="IntermediateCatchEvent_1qvwsps" targetRef="ExclusiveGateway_1m42ue4" />
+ <bpmn:sequenceFlow id="SequenceFlow_0knug4f" sourceRef="StartEvent_0fp8w8o" targetRef="SendTask_1aqsod6" />
+ <bpmn:sequenceFlow id="SequenceFlow_05n3vpz" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1q59ol0" />
+ <bpmn:sequenceFlow id="SequenceFlow_11lghfk" sourceRef="SendTask_1aqsod6" targetRef="EventBasedGateway_0i1bam8" />
+ <bpmn:sequenceFlow id="SequenceFlow_1t1jnhl" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_01jgmxq" />
+ <bpmn:sequenceFlow id="SequenceFlow_0ob8om2" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1uo7ts7" />
+ <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1q59ol0" name="Timeout&#10;04-E1">
+ <bpmn:incoming>SequenceFlow_05n3vpz</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_09zdna4</bpmn:outgoing>
+ <bpmn:timerEventDefinition />
+ </bpmn:intermediateCatchEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_09zdna4" sourceRef="IntermediateCatchEvent_1q59ol0" targetRef="ExclusiveGateway_1m42ue4" />
+ <bpmn:task id="Task_03zzd93" name="Fehler auslösen">
+ <bpmn:incoming>SequenceFlow_1jyvnwc</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1fhomia</bpmn:outgoing>
+ </bpmn:task>
+ <bpmn:dataObjectReference id="DataObjectReference_09m8tpv" name="Messpunkte" dataObjectRef="DataObject_08tipr2" />
+ <bpmn:dataObject id="DataObject_08tipr2" />
+ <bpmn:endEvent id="EndEvent_0d9oh1l">
+ <bpmn:incoming>SequenceFlow_1h003t8</bpmn:incoming>
+ </bpmn:endEvent>
+ <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_01jgmxq">
+ <bpmn:incoming>SequenceFlow_1t1jnhl</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1h003t8</bpmn:outgoing>
+ <bpmn:messageEventDefinition />
+ </bpmn:intermediateCatchEvent>
+ <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1uo7ts7">
+ <bpmn:incoming>SequenceFlow_0ob8om2</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1989n8w</bpmn:outgoing>
+ <bpmn:messageEventDefinition />
+ </bpmn:intermediateCatchEvent>
+ <bpmn:exclusiveGateway id="ExclusiveGateway_1m42ue4">
+ <bpmn:incoming>SequenceFlow_18gank5</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_09zdna4</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_1989n8w</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1jyvnwc</bpmn:outgoing>
+ </bpmn:exclusiveGateway>
+ <bpmn:endEvent id="EndEvent_1yxgs4z" name="">
+ <bpmn:incoming>SequenceFlow_1fhomia</bpmn:incoming>
+ <bpmn:errorEventDefinition />
+ </bpmn:endEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_1jyvnwc" sourceRef="ExclusiveGateway_1m42ue4" targetRef="Task_03zzd93" />
+ <bpmn:sequenceFlow id="SequenceFlow_1fhomia" sourceRef="Task_03zzd93" targetRef="EndEvent_1yxgs4z" />
+ <bpmn:sequenceFlow id="SequenceFlow_1h003t8" sourceRef="IntermediateCatchEvent_01jgmxq" targetRef="EndEvent_0d9oh1l" />
+ <bpmn:sequenceFlow id="SequenceFlow_1989n8w" sourceRef="IntermediateCatchEvent_1uo7ts7" targetRef="ExclusiveGateway_1m42ue4" />
+ <bpmn:textAnnotation id="TextAnnotation_05j86bx">
+ <bpmn:text>source-system.electricity.measurement.measurement-points_GET_4_de.open-api.yaml</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_152nrvv" sourceRef="SendTask_1aqsod6" targetRef="TextAnnotation_05j86bx" />
+ </bpmn:process>
+ <bpmn:process id="Process_0l881g4" isExecutable="false">
+ <bpmn:sequenceFlow id="SequenceFlow_0jh0ukt" sourceRef="SendTask_0xvv6ys" targetRef="EndEvent_1ds1wq2" />
+ <bpmn:sequenceFlow id="SequenceFlow_0s423p9" sourceRef="Task_1wn1rf0" targetRef="SendTask_0xvv6ys" />
+ <bpmn:sequenceFlow id="SequenceFlow_1bvdk9t" sourceRef="StartEvent_0pdpn6v" targetRef="Task_0x9cdxx" />
+ <bpmn:sequenceFlow id="SequenceFlow_13txgld" name="[04-T1.2 Abfrage unzulässig]" sourceRef="ExclusiveGateway_0hz34e9" targetRef="Task_1wn1rf0" />
+ <bpmn:sequenceFlow id="SequenceFlow_0yv4x43" sourceRef="Task_0x9cdxx" targetRef="ExclusiveGateway_0hz34e9" />
+ <bpmn:sendTask id="SendTask_0xvv6ys" name="Fehler versenden&#10;(04-E2)">
+ <bpmn:incoming>SequenceFlow_0s423p9</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0jh0ukt</bpmn:outgoing>
+ </bpmn:sendTask>
+ <bpmn:endEvent id="EndEvent_1ds1wq2">
+ <bpmn:incoming>SequenceFlow_0jh0ukt</bpmn:incoming>
+ <bpmn:errorEventDefinition />
+ </bpmn:endEvent>
+ <bpmn:dataStoreReference id="DataStoreReference_1lft3mu" name="Log" />
+ <bpmn:task id="Task_1wn1rf0" name="Fehler protokollieren&#10;(Warnung)">
+ <bpmn:incoming>SequenceFlow_13txgld</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0s423p9</bpmn:outgoing>
+ <bpmn:dataOutputAssociation />
+ <bpmn:dataOutputAssociation id="DataOutputAssociation_16nt68n">
+ <bpmn:targetRef>DataStoreReference_1lft3mu</bpmn:targetRef>
+ </bpmn:dataOutputAssociation>
+ </bpmn:task>
+ <bpmn:task id="Task_0x9cdxx" name="Abfrage prüfen (04-T1)">
+ <bpmn:incoming>SequenceFlow_1bvdk9t</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0yv4x43</bpmn:outgoing>
+ </bpmn:task>
+ <bpmn:startEvent id="StartEvent_0pdpn6v">
+ <bpmn:outgoing>SequenceFlow_1bvdk9t</bpmn:outgoing>
+ <bpmn:messageEventDefinition />
+ </bpmn:startEvent>
+ <bpmn:exclusiveGateway id="ExclusiveGateway_0hz34e9">
+ <bpmn:incoming>SequenceFlow_0yv4x43</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_13txgld</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_1l3iovs</bpmn:outgoing>
+ </bpmn:exclusiveGateway>
+ <bpmn:sequenceFlow id="SequenceFlow_1l3iovs" name="[04-T1.1 Abfrage zulässig]" sourceRef="ExclusiveGateway_0hz34e9" targetRef="Task_06czalg" />
+ <bpmn:dataStoreReference id="DataStoreReference_1lmfcdf" name="Log" />
+ <bpmn:sendTask id="SendTask_1rq0tql" name="Fehler versenden&#10;(04-E3)">
+ <bpmn:incoming>SequenceFlow_04x4myr</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0r3t0qt</bpmn:outgoing>
+ </bpmn:sendTask>
+ <bpmn:task id="Task_0dcs0n6" name="Fehler protokollieren&#10;(Fehler)">
+ <bpmn:incoming>SequenceFlow_01qqibk</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_04x4myr</bpmn:outgoing>
+ <bpmn:dataOutputAssociation />
+ <bpmn:dataOutputAssociation id="DataOutputAssociation_0gsk5pr">
+ <bpmn:targetRef>DataStoreReference_1lmfcdf</bpmn:targetRef>
+ </bpmn:dataOutputAssociation>
+ </bpmn:task>
+ <bpmn:endEvent id="EndEvent_1ejqdvq">
+ <bpmn:incoming>SequenceFlow_1bm4k7w</bpmn:incoming>
+ </bpmn:endEvent>
+ <bpmn:endEvent id="EndEvent_0ijxku7">
+ <bpmn:incoming>SequenceFlow_0r3t0qt</bpmn:incoming>
+ <bpmn:errorEventDefinition />
+ </bpmn:endEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_04x4myr" sourceRef="Task_0dcs0n6" targetRef="SendTask_1rq0tql" />
+ <bpmn:sequenceFlow id="SequenceFlow_0r3t0qt" sourceRef="SendTask_1rq0tql" targetRef="EndEvent_0ijxku7" />
+ <bpmn:sequenceFlow id="SequenceFlow_01qqibk" sourceRef="BoundaryEvent_0omkth5" targetRef="Task_0dcs0n6" />
+ <bpmn:sequenceFlow id="SequenceFlow_0n06oz6" sourceRef="Task_06czalg" targetRef="SendTask_1ppgc3w" />
+ <bpmn:sequenceFlow id="SequenceFlow_1bm4k7w" sourceRef="SendTask_1ppgc3w" targetRef="EndEvent_1ejqdvq" />
+ <bpmn:task id="Task_06czalg" name="Messpunkte ermitteln">
+ <bpmn:incoming>SequenceFlow_1l3iovs</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0n06oz6</bpmn:outgoing>
+ <bpmn:property id="Property_0qw2zgf" name="__targetRef_placeholder" />
+ <bpmn:dataInputAssociation id="DataInputAssociation_0h48n1c">
+ <bpmn:sourceRef>DataStoreReference_0p5l3xx</bpmn:sourceRef>
+ <bpmn:targetRef>Property_0qw2zgf</bpmn:targetRef>
+ </bpmn:dataInputAssociation>
+ </bpmn:task>
+ <bpmn:boundaryEvent id="BoundaryEvent_0omkth5" attachedToRef="Task_06czalg">
+ <bpmn:outgoing>SequenceFlow_01qqibk</bpmn:outgoing>
+ <bpmn:errorEventDefinition id="ErrorEventDefinition_11olaoy" />
+ </bpmn:boundaryEvent>
+ <bpmn:dataStoreReference id="DataStoreReference_0p5l3xx" name="Datenquelle" />
+ <bpmn:sendTask id="SendTask_1ppgc3w" name="Messpunkte versenden">
+ <bpmn:incoming>SequenceFlow_0n06oz6</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1bm4k7w</bpmn:outgoing>
+ </bpmn:sendTask>
+ <bpmn:association id="Association_0jstqgh" sourceRef="SendTask_0xvv6ys" targetRef="TextAnnotation_0x17maz" />
+ <bpmn:textAnnotation id="TextAnnotation_0x17maz">
+ <bpmn:text>http-Status: 400</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:textAnnotation id="TextAnnotation_1nlozdn">
+ <bpmn:text>http-Status: 500</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_1wojxqf" sourceRef="SendTask_1rq0tql" targetRef="TextAnnotation_1nlozdn" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_0joqp0s">
+ <bpmndi:BPMNShape id="Participant_0ru0snc_di" bpmnElement="Participant_0ru0snc">
+ <dc:Bounds x="-948" y="-802" width="1762" height="417" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Participant_1y1o92i_di" bpmnElement="Participant_1y1o92i">
+ <dc:Bounds x="-948" y="-317" width="1766" height="515" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="IntermediateCatchEvent_1qvwsps_di" bpmnElement="IntermediateCatchEvent_1qvwsps" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+ <dc:Bounds x="-401" y="-453" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-428" y="-440" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="StartEvent_0fp8w8o_di" bpmnElement="StartEvent_0fp8w8o" bioc:stroke="#43A047" bioc:fill="#C8E6C9">
+ <dc:Bounds x="-871" y="-628" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-898" y="-592" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="IntermediateCatchEvent_1q59ol0_di" bpmnElement="IntermediateCatchEvent_1q59ol0" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+ <dc:Bounds x="-216" y="-628" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-218" y="-588" width="41" height="27" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EventBasedGateway_0i1bam8_di" bpmnElement="EventBasedGateway_0i1bam8">
+ <dc:Bounds x="-577" y="-635" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-597" y="-581" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="SendTask_1aqsod6_di" bpmnElement="SendTask_1aqsod6" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="-755" y="-650" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Task_03zzd93_di" bpmnElement="Task_03zzd93" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="394" y="-560" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_1yxgs4z_di" bpmnElement="EndEvent_1yxgs4z" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+ <dc:Bounds x="533" y="-538" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="898" y="-498" width="86" height="24" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="DataObjectReference_09m8tpv_di" bpmnElement="DataObjectReference_09m8tpv">
+ <dc:Bounds x="710" y="-660" width="36" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="698" y="-604" width="60" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_0d9oh1l_di" bpmnElement="EndEvent_0d9oh1l" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+ <dc:Bounds x="710" y="-719" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1071" y="-679" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="IntermediateCatchEvent_01jgmxq_di" bpmnElement="IntermediateCatchEvent_01jgmxq" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+ <dc:Bounds x="584" y="-719" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="945" y="-679" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="IntermediateCatchEvent_1uo7ts7_di" bpmnElement="IntermediateCatchEvent_1uo7ts7" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+ <dc:Bounds x="135" y="-538" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="496" y="-498" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ExclusiveGateway_1m42ue4_di" bpmnElement="ExclusiveGateway_1m42ue4" isMarkerVisible="true">
+ <dc:Bounds x="315" y="-545" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="683" y="-491" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_05j86bx_di" bpmnElement="TextAnnotation_05j86bx">
+ <dc:Bounds x="-889" y="-771" width="505" height="26" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ExclusiveGateway_0hz34e9_di" bpmnElement="ExclusiveGateway_0hz34e9" isMarkerVisible="true">
+ <dc:Bounds x="-411" y="11" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-431" y="65" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="StartEvent_0pdpn6v_di" bpmnElement="StartEvent_0pdpn6v" bioc:stroke="#43A047" bioc:fill="#C8E6C9">
+ <dc:Bounds x="-724" y="18" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-751" y="58" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Task_0x9cdxx_di" bpmnElement="Task_0x9cdxx" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="-589" y="-4" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_0ijxku7_di" bpmnElement="EndEvent_0ijxku7" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+ <dc:Bounds x="286" y="-219" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="647" y="-179" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_1ejqdvq_di" bpmnElement="EndEvent_1ejqdvq" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+ <dc:Bounds x="710" y="18" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1071" y="58" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="SendTask_1ppgc3w_di" bpmnElement="SendTask_1ppgc3w" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="552" y="-4" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Task_0dcs0n6_di" bpmnElement="Task_0dcs0n6" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="-60" y="-241" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Task_1wn1rf0_di" bpmnElement="Task_1wn1rf0" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="-436" y="-126" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="DataStoreReference_1lft3mu_di" bpmnElement="DataStoreReference_1lft3mu">
+ <dc:Bounds x="-297" y="-111" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-280" y="-57" width="18" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_1ds1wq2_di" bpmnElement="EndEvent_1ds1wq2" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+ <dc:Bounds x="-290" y="-219" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-318" y="-179" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="SendTask_1rq0tql_di" bpmnElement="SendTask_1rq0tql" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="103" y="-241" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="SendTask_0xvv6ys_di" bpmnElement="SendTask_0xvv6ys" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="-436" y="-241" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="DataStoreReference_1lmfcdf_di" bpmnElement="DataStoreReference_1lmfcdf">
+ <dc:Bounds x="-35" y="-137" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-18" y="-83" width="19" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_1nlozdn_di" bpmnElement="TextAnnotation_1nlozdn">
+ <dc:Bounds x="211" y="-303" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_0x17maz_di" bpmnElement="TextAnnotation_0x17maz">
+ <dc:Bounds x="-322" y="-293" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0qerq2c_di" bpmnElement="SequenceFlow_0qerq2c">
+ <di:waypoint x="-552" y="-585" />
+ <di:waypoint x="-552" y="-435" />
+ <di:waypoint x="-401" y="-435" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-582" y="-516" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="MessageFlow_0xybizg_di" bpmnElement="MessageFlow_0xybizg">
+ <di:waypoint x="-385" y="-241" />
+ <di:waypoint x="-385" y="-329" />
+ <di:waypoint x="-385" y="-329" />
+ <di:waypoint x="-385" y="-418" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-477" y="-285" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_18gank5_di" bpmnElement="SequenceFlow_18gank5">
+ <di:waypoint x="-365" y="-435" />
+ <di:waypoint x="340" y="-435" />
+ <di:waypoint x="340" y="-495" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="137.5" y="-456" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0knug4f_di" bpmnElement="SequenceFlow_0knug4f">
+ <di:waypoint x="-835" y="-610" />
+ <di:waypoint x="-755" y="-610" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-840" y="-631" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_05n3vpz_di" bpmnElement="SequenceFlow_05n3vpz">
+ <di:waypoint x="-527" y="-610" />
+ <di:waypoint x="-216" y="-610" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-275.5" y="-631" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_09zdna4_di" bpmnElement="SequenceFlow_09zdna4">
+ <di:waypoint x="-180" y="-610" />
+ <di:waypoint x="340" y="-610" />
+ <di:waypoint x="340" y="-545" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="369" y="-631" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_11lghfk_di" bpmnElement="SequenceFlow_11lghfk">
+ <di:waypoint x="-655" y="-610" />
+ <di:waypoint x="-577" y="-610" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-661" y="-631" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1t1jnhl_di" bpmnElement="SequenceFlow_1t1jnhl">
+ <di:waypoint x="-552" y="-635" />
+ <di:waypoint x="-552" y="-701" />
+ <di:waypoint x="584" y="-701" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-582" y="-674" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0ob8om2_di" bpmnElement="SequenceFlow_0ob8om2">
+ <di:waypoint x="-552" y="-585" />
+ <di:waypoint x="-552" y="-520" />
+ <di:waypoint x="135" y="-520" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-582" y="-557.5" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="Association_152nrvv_di" bpmnElement="Association_152nrvv">
+ <di:waypoint x="-674" y="-650" />
+ <di:waypoint x="-640" y="-745" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="MessageFlow_06rblkd_di" bpmnElement="MessageFlow_06rblkd">
+ <di:waypoint x="-705" y="-570" />
+ <di:waypoint x="-706" y="18" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-710.5" y="-198" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1jyvnwc_di" bpmnElement="SequenceFlow_1jyvnwc">
+ <di:waypoint x="365" y="-520" />
+ <di:waypoint x="394" y="-520" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="723.5" y="-541" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1fhomia_di" bpmnElement="SequenceFlow_1fhomia">
+ <di:waypoint x="494" y="-520" />
+ <di:waypoint x="533" y="-520" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="901.5" y="-541" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1h003t8_di" bpmnElement="SequenceFlow_1h003t8">
+ <di:waypoint x="620" y="-701" />
+ <di:waypoint x="710" y="-701" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1008" y="-722" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="MessageFlow_1t1pkfy_di" bpmnElement="MessageFlow_1t1pkfy">
+ <di:waypoint x="602" y="-4" />
+ <di:waypoint x="603" y="-683" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="946.5" y="-363.5" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="MessageFlow_06fsrzq_di" bpmnElement="MessageFlow_06fsrzq">
+ <di:waypoint x="153" y="-241" />
+ <di:waypoint x="153" y="-502" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="546" y="-282.5" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1989n8w_di" bpmnElement="SequenceFlow_1989n8w">
+ <di:waypoint x="171" y="-520" />
+ <di:waypoint x="315" y="-520" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="586" y="-541" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0yv4x43_di" bpmnElement="SequenceFlow_0yv4x43">
+ <di:waypoint x="-489" y="36" />
+ <di:waypoint x="-411" y="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-495" y="15" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_13txgld_di" bpmnElement="SequenceFlow_13txgld">
+ <di:waypoint x="-386" y="11" />
+ <di:waypoint x="-386" y="-46" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-377" y="-11" width="83" height="27" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1bvdk9t_di" bpmnElement="SequenceFlow_1bvdk9t">
+ <di:waypoint x="-688" y="36" />
+ <di:waypoint x="-589" y="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-682.5" y="15" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0r3t0qt_di" bpmnElement="SequenceFlow_0r3t0qt">
+ <di:waypoint x="203" y="-201" />
+ <di:waypoint x="286" y="-201" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="588.5" y="-222" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1bm4k7w_di" bpmnElement="SequenceFlow_1bm4k7w">
+ <di:waypoint x="652" y="36" />
+ <di:waypoint x="710" y="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1024" y="15" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_04x4myr_di" bpmnElement="SequenceFlow_04x4myr">
+ <di:waypoint x="40" y="-201" />
+ <di:waypoint x="103" y="-201" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="415.5" y="-222" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="DataOutputAssociation_0gsk5pr_di" bpmnElement="DataOutputAssociation_0gsk5pr">
+ <di:waypoint x="-10" y="-161" />
+ <di:waypoint x="-9" y="-137" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="DataOutputAssociation_16nt68n_di" bpmnElement="DataOutputAssociation_16nt68n">
+ <di:waypoint x="-336" y="-83" />
+ <di:waypoint x="-297" y="-81" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0s423p9_di" bpmnElement="SequenceFlow_0s423p9">
+ <di:waypoint x="-386" y="-126" />
+ <di:waypoint x="-386" y="-161" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-416" y="-148.5" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0jh0ukt_di" bpmnElement="SequenceFlow_0jh0ukt">
+ <di:waypoint x="-336" y="-201" />
+ <di:waypoint x="-290" y="-201" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-358" y="-222" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="Association_1wojxqf_di" bpmnElement="Association_1wojxqf">
+ <di:waypoint x="197" y="-237" />
+ <di:waypoint x="242" y="-273" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="Association_0jstqgh_di" bpmnElement="Association_0jstqgh">
+ <di:waypoint x="-338" y="-233" />
+ <di:waypoint x="-294" y="-263" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1l3iovs_di" bpmnElement="SequenceFlow_1l3iovs">
+ <di:waypoint x="-361" y="36" />
+ <di:waypoint x="-192" y="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-351" y="48" width="83" height="27" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_01qqibk_di" bpmnElement="SequenceFlow_01qqibk">
+ <di:waypoint x="-142" y="-22" />
+ <di:waypoint x="-142" y="-201" />
+ <di:waypoint x="-60" y="-201" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="261" y="-108.5" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0n06oz6_di" bpmnElement="SequenceFlow_0n06oz6">
+ <di:waypoint x="-92" y="36" />
+ <di:waypoint x="552" y="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="618" y="15" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="Task_06czalg_di" bpmnElement="Task_06czalg" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+ <dc:Bounds x="-192" y="-4" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="DataStoreReference_0p5l3xx_di" bpmnElement="DataStoreReference_0p5l3xx">
+ <dc:Bounds x="-167" y="103" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-171" y="157" width="59" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="BoundaryEvent_0omkth5_di" bpmnElement="BoundaryEvent_0omkth5" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+ <dc:Bounds x="-160" y="-22" width="36" height="36" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="DataInputAssociation_0h48n1c_di" bpmnElement="DataInputAssociation_0h48n1c">
+ <di:waypoint x="-143" y="103" />
+ <di:waypoint x="-144" y="76" />
+ </bpmndi:BPMNEdge>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/doc/src/main/doc/resources/test/test.ods b/doc/src/main/doc/resources/test/test.ods
new file mode 100644
index 0000000..7d4f8e5
--- /dev/null
+++ b/doc/src/main/doc/resources/test/test.ods
Binary files differ
diff --git a/doc/src/main/doc/service-doc.adoc b/doc/src/main/doc/service-doc.adoc
new file mode 100644
index 0000000..cd58f02
--- /dev/null
+++ b/doc/src/main/doc/service-doc.adoc
@@ -0,0 +1,23 @@
+include::common/toc.adoc[]
+
+= {ProjectName} Dokumentation
+:context: {ProjectNameID}
+
+[options="footer,autowidth"]
+|====================
+| Firma | {Company}
+| Autoren | {Author}
+| E-Mail | {Email}
+| Datum | {docdate}
+| Version | {ProjectVersion}
+|====================
+
+include::docs/documentation/documentation-assembly.adoc[leveloffset=+1]
+
+include::docs/architecture/architecture-assembly.adoc[leveloffset=+1]
+
+include::docs/howto/howto-assembly.adoc[leveloffset=+1]
+
+include::docs/test/test-assembly.adoc[leveloffset=+1]
+
+include::docs/appendix/appendix-assembly.adoc[leveloffset=+1]
diff --git a/doc/src/test/doc/test/test.adoc b/doc/src/test/doc/test/test.adoc
new file mode 100644
index 0000000..854988d
--- /dev/null
+++ b/doc/src/test/doc/test/test.adoc
@@ -0,0 +1,20 @@
+= openKonsequenz - Testkonzept
+:Author: Renko Ortgies
+:Date: 2019-02-12
+:Email: info@psi.de
+:Company: PSI Software AG
+:ProjectNameID: CIM Cache
+:stylesheet: common/html-skin.css
+:icons: font
+:lang: de
+:doctype: article
+:encoding: utf-8
+:source-highlighter: coderay
+:highlightjs-theme: solarized_dark
+:sectnums:
+:toc-title: Inhaltsverzeichnis
+:toc:
+
+== Testkonzept
+
+NOTE: Siehe Service-Framework (org-eclipse-openk-service).

Back to the top