// copyright 2021 BAE Systems, Object Management Group Inc #ifndef METAMODELDATAMODELRECOMMENDATIONDEFVAR #define METAMODELDATAMODELRECOMMENDATIONDEFVAR #include "Utils.idl" module MetaModel { module DataModel { // The Recommendation package of the Data Model defines generic concepts to support // system agnostic recommendations. module Recommendation { // Additional extensible metadata relating to the recommendation process struct RecommendationProperties { // An extensible categorization of type of algorithm used to make the recommendation MetaModel::DataModel::Utils::QuantityDescriptor algorithmType; // An extensible categorization of validation process that the algorithm has been // subjected to MetaModel::DataModel::Utils::QuantityDescriptor algorithmValidation; // An extensible categorization of the type endorsement made by the system user MetaModel::DataModel::Utils::QuantityDescriptor endorsementKind; // An extensible categorization of a system user who has endorsed the // recommendation. MetaModel::DataModel::Utils::QuantityDescriptor endorsingOperator; // An extensible categorization of the priority that a recipient should assign to a // Recommendation MetaModel::DataModel::Utils::QuantityDescriptor priority; }; // The categories of outcome supported by the recommendation response interface. enum Outcome { // The recommendation has been accepted and applied ACCEPTED, // The recommendation has been deferred, for instance for operator approval. An // additional response will occur once a decision has been made. DEFERRED, // The recommendation has been rejected. The explanation attribute contains any // reason given for the rejection. REJECTED }; // Categorization of Recommendations in terms of the recipient's behavior enum RecommendationBehavior { // The Recommendation must be followed by the recipient. MANDATORY, // The recipient should enact subject to a confirmation process FOR_VALIDATION, // The recommendation should be considered alongside alternative advisory sources of // information. ADVISORY, // No statement with respect to Recommendation categorization RECOMMENDATION }; // A reference to the recommendation that a Decision Aid has made. This must be // unique within a system as a whole and not just within the lifetime of a decision // aid or other system component. struct RecommendationRef { #ifdef DDS_XTYPES @Key short clientId; #else short clientId; #endif #ifdef DDS_XTYPES @Key short requestId; #else short requestId; #endif }; // An explanation of the response to the recommendation. For example an error code. struct ResponseExplanation { // Prefix for the schema from which the value is drawn string schemaPrefix; // Value from the schema denoted by the prefix string value; }; // a simple union type, to represent an optional value union ConfidenceHypothesisProbability switch (boolean) { // the value when present case TRUE : MetaModel::DataModel::Utils::Percentage value; }; // a simple union type, to represent an optional value union ConfidenceModelProbability switch (boolean) { // the value when present case TRUE : MetaModel::DataModel::Utils::Percentage value; }; // Additional information to describe the action actually performed. Specializations // of this call allow the Decision Aid to find tactical picture updates and plan // execution update corresponding to the recommendations. Binding this information // to the response also means the Decision Aid doesn't need to store recommendation // identifiers locally in order to perform post response processing. struct ResponseData { // A reference to the original recommendation that is unique across all clients in // the system. RecommendationRef recommendationRef; }; // a simple union type, to represent an optional value union ConfidenceOutcomeProbability switch (boolean) { // the value when present case TRUE : MetaModel::DataModel::Utils::Percentage value; }; // The statistical confidence placed in a recommendation struct Confidence { // The probability of the hypothesis associated with the Recommendation being true, // given the model used as the Recommendation basis. This is the confidence that the // Recommendation is correct or optimal according to the model. ConfidenceHypothesisProbability hypothesisProbability; // The probability of the model on which the Recommendation is based being // applicable. This is the confidence in model given the particular model inputs. ConfidenceModelProbability modelProbability; // The probability that there will be a successful outcome from following a // Recommendation according to the model used by the Recommendation. This attribute // is only applicable to Recommendations that lead to actions on the external // environment. ConfidenceOutcomeProbability outcomeProbability; }; }; }; }; #endif