Skip to main content

Multi-Transport Integration

In this tutorial you'll learn how to:

  • Design a Multi-Transport System
  • Integrate different Message Types with a transform

Scenario

You've just started as an Integration Engineer at SkyShield, a small startup in the electronic warfare space serving the Air Force. Your team at SkyShield is working with RadarWarfare Solutions (the "prime") on a follow-on project to demonstrate their platform integrating with SateSphere's platform.

Integration Team

The companies represented here are for illustrative purposes and are not real

RadarWarfare's systems communicate using the ZeroMQ messaging library and the OpenUxAS LMCP message standard, while SateSphere's systems communicate over ActiveMQ and use the NATO STANAG4586 message standard.

Your team is evaluating the effectiveness of an integration tool like Tangram Pro to help them integrate and test their systems. Your team has defined a Flex Transform in Tangram Pro to convert the LMCP AirVehicleState message type to the STANAG4586 InertialStates message type.

Integration Challenge

Design the System

1. Create a Project

To begin modeling a system we need to make a project. Projects are used to design component-based systems, generate and run code based on your design. Let's get started!

  1. Go to Projects and click New Project
  2. Enter a Project Name
  3. You can associate a team to your project with the Select Owner dropdown menu, or keep Personal (You) selected

2. Add Transports

The model of our integration scenario requires two different messaging libraries, or what we call Transports. This is easy to design in Tangram Pro. Let's start by adding ZeroMQ and ActiveMQ.

  1. In the left sidebar, click the + button in the Transports section and add ZeroMQ
  2. Repeat and add ActiveMQ

All the Transports in your design are listed in the Navigator on the left. We'll make use of these when we start connecting components. The one with the asterisk (*) designates the default transport. For more information see User Guide: Design > Transports

Add Transports

3. Add Components

Add a Component to represent a RadarWarfare Solutions software component that sends the AirVehicleState LMCP message type

  1. Click the Add Component button in the design toolbar, then click anywhere in the stage
  2. Double-click its name and change it to RWS_LMCP
  3. Click the ... icon in the component and choose Messages
  4. Choose the following interface options:
    • Package: OpenUxAS::LMCP::v3
    • Message: AirVehicleState and select Output

Add LMCP Component

Add a Component to represent a SateSphere software component that receives the InertialStates STANAG4586 message type

  1. Add another component and name it SS_STANAG
  2. Click the ... icon in the component and choose Messages
  3. Choose the following interface options:
    • Package: NATO::STANAG4586::v3
    • Message: InertialStates and select Input

Add STANAG Component

4. Add a Transform

What is a Transform?

A Transform allows you to integrate different message types in Tangram Pro, and not just visually in the design. With the click of a button, Tangram Pro will generate an executable Transform application based on your model with safeguarded input and output interfaces (e.g. the message types allowed, serializer/deserializer needed and transport to use).

For this integration scenario, you'll use a Transform to relate the LMCP AirVehicleState and STANAG4586 InertialStates message types. Both of these messages contain information about the position and velocity of an aircraft and are used for similar tasks, but they are structured differently and comprised of data types that are specific to the LMCP and STANAG4586 format standards.

Tangram Pro uses FlexLang, a specification language, to describe Transforms. Flex enables accurate and readable transform specifications that can be transpiled into a variety of languages and output formats. We're going to use an existing AirVehicleState to InertialStates Transform for this tutorial, but you can always author your own.

  1. Click the Add Transform button in the design toolbar and click anywhere on the stage to add it
  2. Now select which components connect to the transform. Click on RWS_LMCP first, then SS_STANAG
  3. For the Input Message, use the Suggested button to choose AirVehicleState
  4. For the Output Message, use the Suggested button to choose InertialStates
  5. Apply the AVS2IS Transform
  6. Next we'll specify the transport and serializer for both sides of the transform application that we'll generate in the next section
  7. For the Input Message choose:
    • Transport: ZeroMQ
    • Serializer: LMCP
  8. For the Output Message choose:
    • Transport: ActiveMQ
    • Serializer: STANAG4586 Transform Transports
  9. Close the transform settings by clicking in any empty area in the design
tip

Now that your Transform is added, try hovering over each Transport listed in the Navigator. The connections that are using the Transport will be highlighted in the design.

Cheers!

Your team has successfully completed the Integration Challenge using Tangram Pro 🎉 By completing this tutorial, you've learned how to integrate two systems that use different message standards, and messaging services (or Transports.)

Integration Challenge

Check out what you accomplished:

  • Designed a Multi-Transport System
  • Integrated different Message Types with a Transform

Additional User Guide Resources:

If you want to know more about component-based system design in Tangram Pro, take a look at our blog posts.