Skip to main content

Project Workflow

Workflow Overview

The Workflow mode of a project is where you turn your system design into code. Ready-to-run interface code is generated based on the components and connections included in your design. You'll be provided with source code that can be used as an API to integrate different pieces of software.

Downloadable artifacts are generated when a workflow run is completed. You can also choose to compile the generated code, and create a Docker container based on a provided Dockerfile. The generated code will include message definitions (based on what you selected in your design), API libraries and built-in tests.

Overview

Workflow Configuration

Click on Workflow in the top left to start configuration. Your design will still be visible, but in a read-only mode.

Message Transport

A message transport must be selected before a workflow will run. It acts as the message delivery service. There are multiple options to choose from:

  • ZeroMQ
  • ActiveMQ
  • RabbitMQ
  • Kafka

To select a message transport:

  1. Click the pencil icon next to Message Transports in the bottom left corner
  2. Select a transport option

Overview

Generate Interface Code

Each component and subcomponent can have interface code generated for it.

To generate interface code:

  1. Select a component in the Navigator
  2. Enable Generate Interface Code and select the desired output language C++ or Rust
  3. Repeat for each component you wish to generate code for

Compile Code

The generated interface code can be compiled in the workflow by enabling Compile Code. This will result in fully built code that you can download (as opposed to compiling it locally on your machine).

Containerize

The generated and compiled interface code can be copied into a Docker container by enabling Containerize. This allows you to immediately test the generated code. When the workflow run is completed, you'll get a docker-compose.yml file to make it easy to start up the Docker containers.

A Dockerfile must be provided when you enable Containerize. There are 2 ways to provide a Dockerfile.

Provide Dockerfile via upload

  1. Click the Upload Dockerfile button
  2. Select a Dockerfile on your machine and click Open

Provide Dockerfile via repository

Make sure you have connected to either GitLab or GitHub. See Projects > Connect Source Code. And that you have connected a repository to the component. See Projects > Link Repo to Component

  1. Enter the path to the Dockerfile from the root of your repository

Run Workflow

Click the Run button to start the Project Workflow. Streaming logs will display as it runs in the cloud. You can leave the page at any time and it will continue to run.

Exit Run

Clicking the Exit Run button will close the logs so you can view the design.

Download Artifacts

To download artifacts:

  1. Click the disk icon for the desired component
  2. Repeat for each component

Overview

View Previous Runs

You can access all of your previous runs at any time and download their artifacts.

To see previous runs

  1. Click the Runs button on the top right
  2. Select a run

From Cache

After a project's workflow completes successfully, the output is cached. If you re-run the workflow and a component hasn't changed, its cached output is returned instead of running the entire task again, which reduces the time spent waiting so you can get back to integrating sooner. An icon will be displayed next to any tasks that use cached output.

Overview

Test with Docker Containers

You can use Docker to test the generated interface code. We'll generate a docker-compose.yml file when you enable the Containerize option in Workflow configuration. Using this file and automatically generated test code, you can run an end-to-end test to do the following:

  • Create a test message using random data
  • Serialize the message (encoded to a specific format in binary)
  • Send the data via the message transport (like ZeroMQ)
  • Deserialize the data back into a message
  • Display logs in your terminal

To run the Docker containers

  1. Download the docker-compose.yml file
  2. Install Docker - https://www.docker.com/products/docker-desktop/
  3. Start Docker
  4. Create an API Key for your Tangram User
    1. Click on your profile icon in the top right and go to Account
    2. Scroll to the bottom and click Create API Key
    3. Enter a name and select Registry Scope
    4. Click Create API Key
    5. Copy the docker login ... command
  5. Open Terminal
  6. Enter the docker login ... command that you copied earlier
  7. Change directory to where you downloaded the docker-compose.yml file, like cd Downloads
  8. Enter command docker compose up
  9. If you are on a newer version of docker compose, enter command docker compose up -d && docker compose logs --follow to print logs to the terminal