Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

BaSyx / Documentation / Components / AAS Server / Features / Operation Delegation

Operation Delegation

User Story & Use Case

As AAS Components user

I want to delegate operation calls to third-party servers

so that I can integrate operations hosted on other servers into the AAS Server component

This feature can be used for example for integrating Operations implemented in other programming languages into the AAS Server component without the need of implementing the complete Submodel interface.

Feature Overview

An operation is a specific type of submodel element that is capable of performing server-side functions. However, in certain environments this is not possible. Therefore, the operation can be delegated to an independent destination URL to be executed. The operation invocation request is defined on swaggerhub. The type and the number of the in and output variables is defined within the operation itself. An example request body is given below. The strong and italic formatted attribute(s) value is/are the value(s) to be processed by the operation.

{
   "requestId": "1",
   "timeout": 60,
   "inputArguments": [{
      "value": {
         "idShort": "in",
         "valueType": "integer",
         "value": 1,
         "modelType": {
            "name": "Property"
         }
      }
   }]
}

Alternatively to the full request body above, the raw data can simply be passed as an array of values to be processed by the operation. In this case, the response would also consist of raw data instead of a structured body.

  1. To create an operation delegation, an AAS with a Submodel that has a Operation(-SubmodelElement) must be present.
    1. The Operation has neither input, output nor inout variables
    2. To achieve the Delegation functionality, a Qualifier of type "invocationDelegation" is added to the operation.
      • As value, the url to the desired operation must be given.
      • The url follows the pattern
http://{server}:{port}/{contextPath}/{idShortPathToOperation}/invoke
resp. it is the url for direct operation invocation.
  • Knowledge about the operation to be delegated to, with regard to the number and type of input and output parameters is assumed.

This achieves that operations can be delegated to endpoints of the same server as well as to external servers. For the frontend it remains completely transparent whether an operation was called directly or delegated.

Feature Configuration

This feature is enabled by default and does not need any additional configuration.

Copyright © Eclipse Foundation, Inc. All Rights Reserved.