// copyright 2021 BAE Systems, Object Management Group Inc #ifndef METAMODELSERVICEMODELRECOMMENDATIONSDEFVAR #define METAMODELSERVICEMODELRECOMMENDATIONSDEFVAR #include "Util.idl" #include "Recommendation.idl" module MetaModel { module ServiceModel { // The interfaces to enable Tactical Decision Aids to make recommendations module Recommendations { // This callback operation is invoked on the Tactical Decision Aid when the // recommendation that it has made is accepted, deferred or rejected. This allows // the Tactical Decision Aid to understand when a recommendation is in progress and // to avoid redundantly repeating recommendations. // There is one invocation of this callback per recommendation unless the first // Outcome is Deferred, in which case there are two. This is shown in the // Recommendation Outcome State Machine diagram. // This interface is implemented by a tactical decision aid in order to receive // responses to its recommendations. Each response operation contains a reference to // the information contained in the corresponding recommendation. struct recommendationProcessed { // Additional contextual and qualification data for the response. MetaModel::DataModel::Recommendation::ResponseData response; // The outcome of the recommendation process MetaModel::DataModel::Recommendation::Outcome outcome; // Where available, an explanation of the recommendation processing, such as a // reason for rejection. MetaModel::DataModel::Recommendation::ResponseExplanation explanation; }; #ifndef DDS_XTYPES #pragma keylist recommendationProcessed response.recommendationRef.clientId response.recommendationRef.requestId #endif // This interface is implemented by a tactical decision aid in order to receive // responses to its recommendations. Each response operation contains a reference to // the information contained in the corresponding recommendation. struct Response { #ifdef DDS_XTYPES @Key short clientId; #else short clientId; #endif #ifdef DDS_XTYPES @Key short requestId; #else short requestId; #endif }; // Additional information to describe and qualify all recommendations struct RecommendationMetadata { // The behavior required of the recipient MetaModel::DataModel::Recommendation::RecommendationBehavior behavior; // The statistical confidence in the Recommendation MetaModel::DataModel::Recommendation::Confidence confidence; // Additional extensible properties of the Recommendation MetaModel::DataModel::Recommendation::RecommendationProperties properties; // The interface instance to which responses to the recommendation should be // directed Response respondee; }; // This operation returns the location of a resource defining the implementing // component's support for extensible enumeration values. The resource defines // supported extensible enumeration values, maps them to extensible enumeration // datatypes defined by this specification and external specifications from which // they are derived. // This interface allows clients (tactical decision aids) to determine system // support for the interface in terms of extensibility methods and the operations // implemented. struct getSupportMappingResponse { // This operation returns the location of a resource defining the implementing // component's support for extensible enumeration values. The resource defines // supported extensible enumeration values, maps them to extensible enumeration // datatypes defined by this specification and external specifications from which // they are derived. DataPayload::Util::URL returnValue; // A reference to the originating request for this response. Response respondee; }; #ifndef DDS_XTYPES #pragma keylist getSupportMappingResponse respondee.clientId respondee.requestId #endif }; }; }; #endif