INTER-METH -- Analysis Phase: How to analyze the integration of two heterogeneous platforms using INTER-METH

(Getting Ready) Integration scenario description

  • The integration scenario to be addressed in this recipe is shown in > the following figure in which two different IoT platforms needs to > be integrated. In particular, the analysis phase involves the > requirements elicitation by the integrator/s aiming at integrating > two already existing IoT systems/platforms. The example is based > on the INTER-LogP pilot (see Deliverable D6.3); thus, it takes > into account the following two platforms that are deployed in the > Port of Valencia (Spain): Port Platform and Noatum SEAMS2 > Platform

Figure 1. Overall integration scenario.

Recipe ingredients

  • Documentation: INTER-METH methodology available here

  • SW: INTER-CASE tool (downloadable here)

Prerequisites

  • Apache Tomcat

  • MySQL DBMS

  • Bootstrap library

  • Xonomy library

  • Itextpdf library

  • log4j library

OR

Simply use our we-app instantiation of the INTER-CASE Tool available here

(How to Do it) Execution of the Analysis Workflow through INTER-CASE

  • Here we describe how to execute the analysis workflow through INTER-CASE:

The Integrator user first logs into the web-based INTER-CASE and starts a new Integration Project. A summary page, Project Status (see Figure below), shows an overview of the integration procedure. In this case, we just focus on the Analysis phase.

Figure 2: Project Status window.

As first step the Integrator should insert the basic info of the two platform: IoT Platforms box; thus obtaining what is reported in Figure 3. Each platform is characterized by name, type, ontology, and owner.

Figure 3: IoT Platforms basic info box.

In the Analysis phase, the Integrator user must execute the Analysis workflow reported in the INTER-METH documentation: https://inter-iot.readthedocs.io/projects/intermeth/en/latest/ (see Fig. 1.4).

Integration Goals can be defined before starting to execute the workflow or after platform analysis.

In the following figure, the integration goals are defined using the tool. Of course, integration goals are defined by the integrators according to the final integration goals they intend to achieve thus it is not an automatic process but a manual and human-driven task. The tool just provide support to report them.

Figure 4: Integration goals definition.

In the running example, three goals were defined by the Integrator:

  • IG1: Data generated from the two platforms have to be shared and transparently accessed from both platforms;

  • IG2: Actuation over an asset depending on data received from the other IoT platform;

  • IG3: Subscription support from one platform to the other to be notified upon the availability of new data of a given user.

In order to add new goals, the Integrator needs to select "Add an IG" and then edit the textfield with the integration goal definition.

Thus, the steps the Integrator has to execute, supported by the tool, are:

  1. IoT Platforms Analysis

  2. Integration Layers Identification

  3. INTER-GOM Production

IoT Platforms Analysis is carried out by the Integrator with reference to the INTER-IoT Reference Architecture (see here and reported in the Analyzed Platform Document box. The snapshots are reported in Figure 5a and 5b.

Figure 5a: IoT Platforms Analysis (part 1): Analyzed Platform 1.

Figure 5b: IoT Platforms Analysis (part 2): Analyzed Platform 2.

Integration Layers identification is performed by the Integrator and reported in the Category of Integration box as Figure 6 portrays.

Figure 6: Integration Layers Identification: Category of Integration.

Finally, the INTER-GOM model, containing functional and non-functional requirements, is produced by the Integrator and reported in the Goal Oriented Model box.

Figure 7: INTER-GOM Production: Goal Oriented Model.

(How it Works) Inspection of the XML INTER-CASE files

  • Here we describe how to inspect the XML files created into the > previous step using the INTER-CASE tool:

The files can be extracted and easily saved to your local machine directly from the tool.

IoT Platforms

<System_Integration>
  <IoT_Platform Ontology='SSN'>
    <Name xml:space='preserve'>Port</Name>
    <Type xml:space='preserve'>Logistic</Type>
    <Owner xml:space='preserve'>Port Authority of Valencia</Owner>
  </IoT_Platform>
  <IoT_Platform Ontology='SSN'>
    <Name xml:space='preserve'>Noatum SEAMS2 Platform</Name>
    <Type xml:space='preserve'>Logistic</Type>
    <Owner xml:space='preserve'>Noatum Container Terminal Valencia</Owner>
  </IoT_Platform>
</System_Integration>

Analyzed Platforms Document

<Systems_Analysis>
  <IoT_Platform_Analysis name='Port'>
    <Management>
    <Configuration xml:space='preserve'>Governance Registry</Configuration>
    </Management>
    <Platform_Interoperability>
    <Platform_Access xml:space='preserve'>API Manager, Data services Server, Enterpriese
     Service Bus, Message Broker</Platform_Access>
    </Platform_Interoperability>
    <Security>
    <Identity_Management xml:space='preserve'>Identity Server </Identity_Management>
    <Authentication xml:space='preserve'>OAuth 2.0</Authentication>
    </Security>
    <Device_Access>
    <Communication xml:space='preserve'>MQTT, HTTP/HTTPS </Communication>
    </Device_Access>
  </IoT_Platform_Analysis>
  <IoT_Platform_Analysis name='Noatum SEAMS2 Platform'>
    <Management>
    <Configuration xml:space='preserve'>Governance Registry</Configuration>
    <Fault xml:space='preserve'>N/A</Fault>
    <Reporting xml:space='preserve'>Custom subscription to events. Email, message push. 
    </Reporting>
    <Member xml:space='preserve'>N/A</Member>
    <State xml:space='preserve'>N/A</State>
    </Management>
    <Platform_Interoperability> 
    <Platform_Access xml:space='preserve'>API Manager, Message Broker, Message Agents 
    </Platform_Access>
    <Platform_Service xml:space='preserve'>Device list, historic, data representation
    </Platform_Service>
    <Platform_Resolution xml:space='preserve'> Not at level platform. Federated to INTER-IoT
    </Platform_Resolution>
    </Platform_Interoperability>
    <Security>
    <Identity_Management xml:space='preserve'>Identity Server </Identity_Management>
    <Authentication xml:space='preserve'>OAuth 2.0</Authentication>
    <Authorisation xml:space='preserve'>Role based via Identity Server</Authorisation>
    <Key_Exchange_and_Management xml:space='preserve'>Identity Server  
    </Key_Exchange_and_Management>
    </Security>
    <Device_Access>
    <Communication xml:space='preserve'>MQTT, HTTP/HTTPS, AMQP, JMS</Communication>
    <IoT_Service xml:space='preserve'>Basic CRUD, asyncronous reporting</IoT_Service>
    <Virtual_Entity xml:space='preserve'>No virtual entities supported</Virtual_Entity>
    </Device_Access>
    <Service_Interoperability>
    <Service_Orchestration xml:space='preserve'>WSO2 ESB</Service_Orchestration>
    <Service_Composition xml:space='preserve'>ESB, Node-RED, WSO CEP
    </Service_Composition>
    <Service_Resolution xml:space='preserve'>ESB, REST Services</Service_Resolution>
    </Service_Interoperability>
    <Semantics>
    <Ontology_Alignment xml:space='preserve'>SEAMS &lt;-&gt; GOIoTP</Ontology_Alignment>
    <Ontology_Resolution xml:space='preserve'>Not done</Ontology_Resolution>
    </Semantics>
    <Device_Interoperability>
    <Network_Interoperability xml:space='preserve'>N/A</Network_Interoperability> 
    <Device_To_Device_Interoperability xml:space='preserve'>N/A
    </Device_To_Device_Interoperability> 
    <IoT_Platform_Interoperability xml:space='preserve'>N/A - It is an INTER-IoT feature
    </IoT_Platform_Interoperability>
    </Device_Interoperability>
  </IoT_Platform_Analysis>
</Systems_Analysis>

Integration Goal

<Integration_Goals>
  <IG id='1' xml:space='preserve'> Data generated from the two platforms have to be shared and transparently accessed from both platforms.</IG>
  <IG id='2' xml:space='preserve'>Actuation over an asset depending on data received from other IoT platform</IG>
  <IG id='3' xml:space='preserve'>Subscription support from one platform to the other to be notified upon the availability of new data of a given user</IG>
</Integration_Goals>

Category of Integration

<Category_of_Integration>
  <INTER-LAYER layer='MIDDLEWARE'/>
  <INTER-LAYER layer='APPLICATION &amp; SERVICES'/>
  <INTER-LAYER layer='SEMANTICS &amp; DATA'/>
  <INTER-LAYER layer='DEVICE'/>
  <INTER-LAYER layer='CROSS-LAYER'/>
</Category_of_Integration>

Goal Oriented Model

<Integration_Point>
  <Category_of_Integration CoI='DEVICE'/><Category_of_Integration CoI='MIDDLEWARE'/> 
  <Category_of_Integration CoI='APPLICATION &amp; SERVICES'/> 
  <Category_of_Integration CoI='SEMANTICS &amp; DATA'/>
  <Functional_Requirements>
    <FR id='166' xml:space='preserve'>Detection of passive physical entities to start communication withother platforms</FR>
    <FR id='168' xml:space='preserve'>Provide an alert system</FR>
    <FR id='180' xml:space='preserve'>Syntactic and semantics interoperability - Data format and semantics translation</FR>
    <FR id='195' xml:space='preserve'>Provide the creation and monitoring of geofences</FR>
    <FR id='243' xml:space='preserve'>Gateway access API</FR>
  </Functional_Requirements>
    <NON_Functional_Requirements>
    <NFR id='27' xml:space='preserve'>System security</NFR>
    <NFR id='28' xml:space='preserve'>System privacy</NFR>
    <NFR id='188' xml:space='preserve'>Integration with legacy systems</NFR>
    <NFR id='248' xml:space='preserve'>Create new services to access different platforms</NFR>
  </NON_Functional_Requirements>
</Integration_Point>