LogoLogo
Contact Uscybus.io
Connectware 1.9.0
Connectware 1.9.0
  • Getting Started
    • Introduction
    • Installing Connectware
      • System Requirements
      • Acquiring your License Key
      • Installing Connectware on Docker
      • Installing Connectware on Kubernetes
    • Connectware Admin UI
    • Basic Components of Connectware
    • Connecting your First Machine
      • Your First Service Commissioning File
  • Documentation
    • Services
      • Service Commissioning Files
        • Structure of Service Commissioning Files
          • description
          • metadata
          • parameters
          • definitions
          • resources
            • Cybus::Connection
            • Cybus::Endpoint
            • Cybus:Mapping
            • Cybus::Container
              • Docker problem with network changes
            • Cybus::Link
            • Cybus::IngressRoute
            • Cybus::User
            • Cybus::Role
            • Cybus::Volume
            • Cybus::File
            • Cybus::Server
            • Cybus::Node
        • Sample Service Commissioning Files
          • Modbus
            • “Bearbeitungszentrum BAZ” - Single File
            • “Bearbeitungszentrum BAZ” - Multiple Files
            • “Bearbeitungszentrum BAZ” - Single File and Custom Topics
            • “Bearbeitungszentrum BAZ” - Agent Mode
          • Machine Condition Monitoring : OPC UA + InfluxDB + Grafana Dashboard
            • “Machine Condition Monitoring Example” - Single File
          • Machine Utilization Example (Multi file service composition) : Modbus TCP + InfluxDB + Grafana + MSS
            • “Machine Utilization Example” - Machine Connectivity
            • “Machine Utilization Example” - Dashboards with role based access permission
            • “Machine Utilization Example” - Push data to MSSQL Database
      • Services View
      • Setting Up and Configuring Services
        • Installing Services
        • Enabling Services
        • Updating Services
        • Disabling Services
        • Deleting Services
      • Service Details View
      • FlowSync
        • Example 1 - Node with Transaction Mode (HTTP)
        • Example 2 - Node Responds (HTTP)
        • Example 3 - Node with Error (HTTP)
        • Example 4 - Node with Timeout Error Code and Error Message (HTTP)
        • Example 5 - Full Transactional Data Flow (HTTP)
        • Example 6 - Full Transactional Data Flow (OPC UA)
      • ServiceID
      • Inter-Service Referencing
      • Deviation
      • Service Logs
        • Logs of Individual Services
        • Logs of All Services
      • Rule Engine
        • Data Processing Rules
        • Rule Sandbox
      • Shared Subscriptions
        • Setting Up Shared Subscriptions
      • API Definition
    • Resources
      • Servers
      • Containers
      • Volumes
      • Connections
      • Endpoints
      • Mappings
      • Nodes
      • API Definition
    • User Management
      • Users and Roles View
      • Users
      • Roles
      • Permissions
      • Password Policy Rules
      • Default Admin User
      • MQTT Users
      • Adding a MQTT Publish Prefix for Users
      • Multi-Factor Authentication
      • Long lived JSON Web Tokens
      • Access Permissions for Admin-UI
        • UI Access
        • Minimum Access Role Pages
      • API Definition
    • Client Registry
      • Implicit Flow
      • Explicit Flow
      • Granting Access
      • API Definition
    • Certificates
    • Monitoring
      • Data Explorer
      • Live Data
    • Workbench
      • Flows in Git Repositories
    • System Status
      • Info
      • Metrics
      • Status
      • Retrieving More System Information
      • System Health
      • API Definition
    • Backup and Restore
      • Volumes
      • User Database
    • Configuration
      • Environment Variables
      • LDAP Configuration
      • MFA Configuration
    • Agents
      • Agents View
      • Installing Agents
        • Installing Agents via Docker
        • Installing Agents via Docker Compose
        • Installing Agents via Kubernetes
        • Using Mutual TLS for Agents
      • Registering Agents in Connectware
      • Using Agents
      • Monitoring Agents
      • Troubleshooting Agents
    • Industry Protocol Details
      • ADS
        • AdsConnection
        • AdsEndpoint
      • BACnet
        • BacnetConnection
        • BacnetEndpoint
      • EtherNet/IP
        • EthernetIpConnection
        • EthernetIpEndpoint
      • Focas
        • FocasConnection
        • FocasEndpoint
      • Generic VRPC
        • GenericVrpcConnection
        • GenericVrpcEndpoint
      • Hottinger Baldwin Messtechnik (HBM)
        • HbmdaqConnection
        • HbmdaqEndpoint
      • Heidenhain DNC
        • HeidenhainConnection
        • HeidenhainEndpoint
      • HTTP/REST
        • HttpConnection
        • HttpEndpoint
      • HTTP Server
        • HttpServer
        • HttpNode
      • InfluxDB
        • InfluxdbConnection
        • InfluxdbEndpoint
      • Kafka
        • KafkaConnection
        • KafkaEndpoint
      • Modbus/TCP
        • ModbusConnection
        • ModbusEndpoint
      • MQTT
        • MqttConnection
        • MqttEndpoint
      • MSSQL
        • MssqlConnection
        • MssqlEndpoint
      • OPC DA
        • OpcdaConnection
        • OpcdaEndpoint
      • OPC UA
        • OPC UA Client
          • OpcuaConnection
          • OpcuaEndpoint
        • OPC UA Server
          • OpcuaServer
          • OpcuaNode
        • OPC UA Object Types
        • OPC UA Server References
          • OpcuaReferenceNode
          • OpcuaObjectNode
      • Siemens SIMATIC S7
        • S7Connection
        • S7Endpoint
      • Shdr
        • ShdrConnection
        • ShdrEndpoint
      • Sinumerik
        • SinumerikConnection
        • SinumerikEndpoint
      • Sopas
        • SopasConnection
        • SopasEndpoint
      • SQL
        • SqlConnection
        • SqlEndpoint
      • Werma WIN Ethernet
        • WermaConnection
        • WermaEndpoint
      • Systemstate
        • SystemstateConnection
        • SystemstateEndpoint
      • API Definition
    • Connectware Licensing
    • Changelog
      • General changes from 0.x to 1.0
        • Upgrading from 0.x to 1.0
    • Upgrade Guide
      • Upgrading from 1.x to 1.7.0
      • Upgrading from 1.x to 1.5.0
Powered by GitBook
LogoLogo

Cybus

  • Terms and Condition
  • Imprint
  • Data Privacy

© Copyright 2025, Cybus GmbH

On this page
  • Interactions across Referenced Services
  • Expected Behaviors
  • Example

Was this helpful?

  1. Documentation
  2. Services

Inter-Service Referencing

PreviousServiceIDNextDeviation

Last updated 5 months ago

Was this helpful?

A service within a commissioning file describes resources and their relations by referencing each other. In addition to referencing resources within the same commissioning file, you can also reference resources from other commissioning files. This is called inter-service referencing.

Inter-service referencing allows resources in one service to depend on resources in another service. For example, an endpoint in a file can be linked to a connection resource defined in another service by referencing that connection.

To reference resources in another commissioning file, you must not specify the Service ID directly. Instead, you must define a parameter that specifies the appropriate Service ID at run time. For more details, see and .

  • Example: If the parameter is otherServiceName, write the reference as !ref '${otherServiceName}::resourceId'.

An example of this can be seen in the . Here, a commissioning file references other services using the machineService parameter, with the inter-service reference written as !ref '${machineService}::defaultRole'.

Interactions across Referenced Services

Given the flexibility Connectware offers to build advance relationships between services it is important to understand what behaviors are expected in different scenarios.

  • Let’s define services that reference other services Children Services

  • Let’s define a service that is referenced by other services Parent Service

Expected Behaviors

Following are four scenarios and how the services behave in each case:

  1. All services are installed and then enabled in parents/children order

    1. This behaves as any other set of services

    2. Disabling a Parent Service will disable all its Children Services

  2. All services are installed and then enabled in random order

    1. Children Services will wait on Enabling state

    2. Once the Parent Service becomes available they will switch to Enabled

  3. Children Services are installed first without Parent Service present

    1. Trying to enable these services will fail with logs in Service Manger indicating the reason

    2. You will see a log starting with Failed enabling service because: Could not resolve cross-service reference... and some extra details about the unresolvable reference

  4. Parents services are installed first without children presents

    • No special behavior, once Children Services are added this is the same scenario as cases 1 and 2

Example

The following Service Commissioning Files will be deployed:

  1. A Cybus::Container running a database

    • Service ID will be mssqldatabase

  2. A Cybus::Connection connecting to the database

    • Service ID will be serviceaconnection

  3. A Cybus::Endpoint using referencing to use that Connection

    • Service ID will be servicebendpoint

You can reproduce all the behaviors described above using these Service Commissioning Files.

SQL Database

description: MSSQL Database
metadata:
    name: MSSQL Database

definitions:
    password: password1234!

resources:
    mssqlDatabase:
        type: Cybus::Container
        properties:
            image: mcr.microsoft.com/mssql/server
            ports:
                - '1433:1433'
            environment:
                ACCEPT_EULA: 'Y'
                SA_PASSWORD: !ref password

SQL Connection

description: MSSQL Connection
metadata:
    name: Service A Connection

parameters:
    ip_host:
        type: string
        title: IP address or hostname where Connectware is installed

definitions:
    port: 1433
    database: master
    username: sa
    password: password1234!

resources:
    mssqlConnection:
        type: Cybus::Connection
        properties:
            protocol: Mssql
            connection:
                host: !ref ip_host
                port: !ref port
                username: !ref username
                password: !ref password
                database: !ref database
                useEncryption: false

SQL Endpoint

description: Service B
metadata:
    name: Service B Endpoint

parameters:
    mssqlConnectionServiceId:
        type: string
        title: Service ID of the MSSQL Connection

resources:
    mssqlVersionB:
        type: Cybus::Endpoint
        properties:
            protocol: Mssql
            connection: !ref '${mssqlConnectionServiceId}::mssqlConnection'
            subscribe:
                query: 'SELECT @@version'
                interval: 1000
Service ID
multiple files example
Resource ID