// Copyright (c) 2009 DMTF.  All Rights Reserved.
   [Abstract, Version ( "2.23.0" ), 
    UMLPackagePath ( "CIM::Application::CheckAction" ), 
    Description ( 
       "A CIM_Check is a condition or characteristic that is expected "
       "to be true in an environment defined or scoped by an instance "
       "of a CIM_ComputerSystem. The Checks associated with a "
       "particular SoftwareElement are organized into one of two "
       "groups using the Phase property of the "
       "CIM_SoftwareElementChecks association. Conditions that are "
       "expected to be true when a SoftwareElement is in a particular "
       "state and environment are known as \'in-state\' conditions. "
       "Conditions that need to be satisfied in order to transition "
       "the SoftwareElement to its next state are known as "
       "\'next-state\' conditions. \n"
       "A CIM_ComputerSystem object represents the environment in "
       "which CIM_SoftwareElements are already deployed/installed or "
       "into which the elements will be deployed/installed. For the "
       "case in which an element is already installed, the "
       "CIM_InstalledSoftwareElement association identifies the "
       "CIM_ComputerSystem object that represents the \"environment\". "
       "When a SoftwareElement is being deployed for installation on a "
       "ComputerSystem, that system is the target of the Check and is "
       "identified using the TargetSystem reference of the "
       "InvokeOnSystem method." )]
class CIM_Check : CIM_ManagedElement {

      [Key, Description ( 
          "The name used to identify the SoftwareElement that is "
          "being checked." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_SoftwareElement.Name" )]
   string Name;

      [Key, Description ( 
          "The version of the SoftwareElement being checked." ), 
       MaxLen ( 64 ), 
       Propagated ( "CIM_SoftwareElement.Version" )]
   string Version;

      [Key, Description ( 
          "The SoftwareElementState of the SoftwareElement being checked."
           ), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Deployable", "Installable", "Executable", "Running" }, 
       Propagated ( "CIM_SoftwareElement.SoftwareElementState" )]
   uint16 SoftwareElementState;

      [Key, Description ( 
          "This is an identifier for the SoftwareElement being checked."
           ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_SoftwareElement.SoftwareElementID" )]
   string SoftwareElementID;

      [Key, Description ( 
          "The Target Operating System of the SoftwareElement being checked."
           ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11", "12", "13", "14", "15", "16", "17", "18", 
          "19", "20", "21", "22", "23", "24", "25", "26", "27", 
          "28", "29", "30", "31", "32", "33", "34", "35", "36", 
          "37", "38", "39", "40", "41", "42", "43", "44", "45", 
          "46", "47", "48", "49", "50", "51", "52", "53", "54", 
          "55", "56", "57", "58", "59", "60", "61", "62", "63", 
          "64", "65", "66", "67", "68", "69", "70", "71", "72", 
          "73", "74", "75", "76", "77", "78", "79", "80", "81", 
          "82", "83", "84", "85", "86", "87", "88", "89", "90", 
          "91", "92", "93", "94", "95", "96", "97", "98", "99", 
          "100", "101", "102", "103", "104", "105", "106", "107", 
          "108", "109", "110", "111", "113", "114", "115", "116" }, 
       Values { "Unknown", "Other", "MACOS", "ATTUNIX", "DGUX", 
          "DECNT", "Tru64 UNIX", "OpenVMS", "HPUX", "AIX", 
          //10 
          "MVS", "OS400", "OS/2", "JavaVM", "MSDOS", 
          "WIN3x", "WIN95", "WIN98", "WINNT", "WINCE", 
          //20 
          "NCR3000", "NetWare", "OSF", "DC/OS", 
          "Reliant UNIX", "SCO UnixWare", "SCO OpenServer", 
          "Sequent", "IRIX", "Solaris", //30 
          "SunOS", 
          "U6000", "ASERIES", "HP NonStop OS", "HP NonStop OSS", 
          "BS2000", "LINUX", "Lynx", "XENIX", "VM", 
          //40 
          "Interactive UNIX", "BSDUNIX", "FreeBSD", 
          "NetBSD", "GNU Hurd", "OS9", "MACH Kernel", "Inferno", 
          "QNX", "EPOC", //50 
          "IxWorks", "VxWorks", 
          "MiNT", "BeOS", "HP MPE", "NextStep", "PalmPilot", 
          "Rhapsody", "Windows 2000", "Dedicated", 
          //60 
          "OS/390", "VSE", "TPF", "Windows (R) Me", 
          "Caldera Open UNIX", "OpenBSD", "Not Applicable", 
          "Windows XP", "z/OS", "Microsoft Windows Server 2003", 
          //70
          "Microsoft Windows Server 2003 64-Bit", 
          "Windows XP 64-Bit", "Windows XP Embedded", 
          "Windows Vista", "Windows Vista 64-Bit", 
          "Windows Embedded for Point of Service", 
          "Microsoft Windows Server 2008", 
          "Microsoft Windows Server 2008 64-Bit", "FreeBSD 64-Bit", 
          "RedHat Enterprise Linux", 
          //80
          "RedHat Enterprise Linux 64-Bit", 
          "Solaris 64-Bit", "SUSE", "SUSE 64-Bit", "SLES", 
          "SLES 64-Bit", "Novell OES", "Novell Linux Desktop", 
          "Sun Java Desktop System", "Mandriva", 
          //90
          "Mandriva 64-Bit", "TurboLinux", 
          "TurboLinux 64-Bit", "Ubuntu", "Ubuntu 64-Bit", "Debian", 
          "Debian 64-Bit", "Linux 2.4.x", "Linux 2.4.x 64-Bit", 
          "Linux 2.6.x", //100
          "Linux 2.6.x 64-Bit", 
          "Linux 64-Bit", "Other 64-Bit", 
          "Microsoft Windows Server 2008 R2", "VMware ESXi", 
          "Microsoft Windows 7", "CentOS 32-bit", "CentOS 64-bit", 
          "Oracle Linux 32-bit", "Oracle Linux 64-bit", 
          //110 
          "eComStation 32-bitx", 
          "Microsoft Windows Server 2011", 
          "Microsoft Windows Server 2012", "Microsoft Windows 8", 
          "Microsoft Windows 8 64-bit", 
          "Microsoft Windows Server 2012 R2" }, 
       Propagated ( "CIM_SoftwareElement.TargetOperatingSystem" )]
   uint16 TargetOperatingSystem;

      [Key, Description ( 
          "An identifier used in conjunction with other keys to "
          "uniquely identify the Check." ), 
       MaxLen ( 256 )]
   string CheckID;

      [Description ( 
          "The CheckMode property is used to indicate whether the "
          "condition is expected to exist or not exist in the "
          "environment. When the value is True, the condition is "
          "expected to exist (e.g., a file is expected to be on a "
          "system), so the Invoke methods are expected to return "
          "True. When the value is False, the condition is not "
          "expected to exist (e.g., a file is not to be on a "
          "system), so the Invoke methods are expected to return "
          "False." )]
   boolean CheckMode;


      [Description ( 
          "The Invoke method evaluates this Check. The details of "
          "the evaluation are described by the specific subclasses "
          "of CIM_Check. When the SoftwareElement being checked is "
          "already installed, the CIM_InstalledSoftwareElement "
          "association identifies the CIM_ComputerSystem in whose "
          "context the Invoke is executed. If this association is "
          "not in place, then the InvokeOnSystem method should be "
          "used - since it identifies the TargetSystem as an input "
          "parameter of the method. \n"
          "The results of the Invoke method are based on the return "
          "value. A zero is returned if the condition is satisfied. "
          "A one is returned if the method is not supported. Any "
          "other value indicates the condition is not satisfied." )]
   uint32 Invoke(
);

      [Description ( 
          "The InvokeOnSystem method evaluates this Check. The "
          "details of the evaluation are described by the specific "
          "subclasses of CIM_Check. The method\'s TargetSystem "
          "input parameter specifies the ComputerSystem in whose "
          "context the method is invoked. \n"
          "The results of the InvokeOnSystem method are based on "
          "the return value. A zero is returned if the condition is "
          "satisfied. A one is returned if the method is not "
          "supported. Any other value indicates the condition is "
          "not satisfied." )]
   uint32 InvokeOnSystem(
         [IN, Description ( 
             "Reference to ComputerSystem in whose context the "
             "method is to be invoked." )]
      CIM_ComputerSystem REF TargetSystem);

};
