// copyright 2021-26 BAE Systems // copyright 2023 Real-Time Innovations // copyright 2023-26 Sparx Systems Pty Ltd // copyright 2023-26 SimVentions // copyright 2023 Open Text Inc. // copyright 2023-26 Rocket Software // copyright 2021-26 Object Management Group Inc #ifndef ORGOMGTDAIMETAMODELDATAMODELRECOMMENDATIONDEFVAR #define ORGOMGTDAIMETAMODELDATAMODELRECOMMENDATIONDEFVAR #include "Utils.idl" module org { module omg { module tdai { module MetaModel { module DataModel { // The Recommendation package of the Data Model Meta-Model defines generic concepts // to support system agnostic recommendations. module Recommendation { // A recommendation rationale may have variable data fields, the // RationaleDynamicData class provides the means for inserting variable content into // the RecommendationRationale during runtime. Replacement values for the DataTag // are treated as strict string substitution within the RationaleText of the // RecommendationRationale associated with the Recommendation. This is used to // capture the triplet of data tag type, tag position in the rationale message and // the value that this tag in the template message text should be replaced with. // Note: if the text specified in the RecommendationRationale contains multiple // replacement points (specified by %%t1 through %%tn) then an equal number of // RationaleDynamicData objects are required for full substitution. struct RationaleDynamicData { // The type of related object e.g. freetext, track, vehicle, position, etc string dataType; // This identifies the insertion point for the related object in the RationaleText // associated with the Alert. I.e. where the RationaleText is "xxxxx %t1 yyyyyyy // zzzz", then DataTag has the value 't1'. It is a case sensitive, alphanumeric // string string dataTag; // The value of the object instantiation. Given a type of string to be general // enough to support free text and track/vehicle id's alike. Alternatively this // could be an lookup into a resource file which would provide the appropriate // content. string dataValue; }; // 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 : org::omg::tdai::MetaModel::DataModel::Utils::Percentage value; }; // a simple union type, to represent an optional value union ConfidenceModelProbability switch (boolean) { // the value when present case TRUE : org::omg::tdai::MetaModel::DataModel::Utils::Percentage value; }; // a simple union type, to represent an optional value union ConfidenceOutcomeProbability switch (boolean) { // the value when present case TRUE : org::omg::tdai::MetaModel::DataModel::Utils::Percentage value; }; // A sequence type, to represent multiple values. typedef sequence RecommendationRationaleDynamicData; // 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. #ifdef DDS_XTYPES @key RecommendationRef recommendationRef; #else RecommendationRef recommendationRef; #endif // Indicates whether the service is able to process a subsequent // cancelRecommendation request for this recommendation. boolean canBeCancelled; }; // Extensible rationale for why a recommendation is being made. struct RecommendationRationale { // Reference to the text of the rationale. This is intended to be a reference to an // external resource template which then may contain tagged values for substitution // with dynamic data or data looked up from a resource file. string rationaleRef; RecommendationRationaleDynamicData dynamicData; }; // Additional extensible metadata relating to the recommendation process struct RecommendationProperties { // An extensible categorization of a system user who has endorsed the // recommendation. org::omg::tdai::MetaModel::DataModel::Utils::Descriptor endorsingOperator; // An extensible categorization of the type endorsement made by the system user org::omg::tdai::MetaModel::DataModel::Utils::Descriptor endorsementKind; // An extensible categorization of type of algorithm used to make the recommendation org::omg::tdai::MetaModel::DataModel::Utils::Descriptor algorithmType; // An extensible categorization of validation process that the algorithm has been // subjected to org::omg::tdai::MetaModel::DataModel::Utils::Descriptor algorithmValidation; // An extensible categorization of the priority that a recipient should assign to a // Recommendation org::omg::tdai::MetaModel::DataModel::Utils::Descriptor priority; // An extensible description of the rationale that underpins the recommendation. RecommendationRationale rationale; }; // 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