A HIM service data tree contains a taxonomy of microservice declarations.
The tree structure is used to create a sets of microservices.
Such as set is named Service
, or Service Group
for larger sets where a set of Service Groups would then form a Service,
see the figure below, or the example service data tree.
*Figure x. HIM service tree structure
A microservice is in HIM defined by a procedure signature as shown below:
(output1,..outputN) microServiceName(input1,..inputM)
where
HIM only specifies the data defining the above procedure signature, it does not specify details of how a call is made, such as how it is serialized, etc. This is expeted to be defined in an interface specification that uses HIM.
The general structure of how a microservice is represented in a HIM tree is shown in the figure below.
*Figure x. HIM microservice tree structure
procedure
.iostruct
that must have the names ‘Input’ and ‘Output’, respectively.property
or symlink
.Any Input/Output nodes, and their associated children, are only present if the procedure has at least one parameter of the respective Input/Output.
A microservice may have a significant temporal duration from it is started and until it completes. It may therefore be desireable that the state of the microservice can be observed, as e. g. it may be the case that an ongoing microservice execution does not allow new microservice actuations to be started. If an observable microservice completion state is desired, then the designer of this HIM service domain must create such an output parameter of the microservice. The characteristics of this output parameter can be freely chosen, but below is a proposal that if widely used may help to improve interoperability.
The parameter shall be named Completion.
The completion state of the HIM microservice is represented by a uint8 datatype value.
The allowed values of the microservice state are:
The rules for how a microservice shall update the state value follows below:
If there is a need for microservice specific error codes then these should be defined as another output parameter.