// Copyright (c) 2012 DMTF.  All rights reserved.
   [Abstract, Version ( "2.38.0" ), 
    ClassConstraint { "inv: LoSID <> null implies LoSOrgID <> null" }, 
    UMLPackagePath ( "CIM::Core::Service" ), 
    Description ( 
       "A Service is a LogicalElement that represents the availability "
       "of functionality that can be managed. This functionality may "
       "be provided by a seperately modeled entity such as a "
       "LogicalDevice or a SoftwareFeature, or both. The modeled "
       "Service typically provides only functionality required for "
       "management of itself or the elements it affects." )]
class CIM_Service : CIM_EnabledLogicalElement {

      [Key, Description ( 
          "The CreationClassName of the scoping System." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_System.CreationClassName" )]
   string SystemCreationClassName;

      [Key, Description ( "The Name of the scoping System." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_System.Name" )]
   string SystemName;

      [Key, Description ( 
          "CreationClassName indicates the name of the class or the "
          "subclass that is used in the creation of an instance. "
          "When used with the other key properties of this class, "
          "this property allows all instances of this class and its "
          "subclasses to be uniquely identified." ), 
       MaxLen ( 256 )]
   string CreationClassName;

      [Key, Override ( "Name" ), 
       Description ( 
          "The Name property uniquely identifies the Service and "
          "provides an indication of the functionality that is "
          "managed. This functionality is described in more detail "
          "in the Description property of the object." ), 
       MaxLen ( 256 )]
   string Name;

      [Write, Description ( 
          "The name of the primary owner for the service, if one is "
          "defined. The primary owner is the initial support "
          "contact for the Service." ), 
       MaxLen ( 64 ), 
       MappingStrings { "MIF.DMTF|General Information|001.3" }]
   string PrimaryOwnerName;

      [Write, Description ( 
          "A string that provides information on how the primary "
          "owner of the Service can be reached (for example, phone "
          "number, e-mail address, and so on)." ), 
       MaxLen ( 256 ), 
       MappingStrings { "MIF.DMTF|General Information|001.4" }]
   string PrimaryOwnerContact;

      [Deprecated { "CIM_Service.EnabledDefault" }, 
       Description ( 
          "Note: The use of this element is deprecated in lieu of "
          "the EnabledDefault property that is inherited from "
          "EnabledLogicalElement. The EnabledLogicalElement "
          "addresses the same semantics. The change to a uint16 "
          "data type was discussed when CIM V2.0 was defined. "
          "However, existing V1.0 implementations used the string "
          "property. To remain compatible with those "
          "implementations, StartMode was grandfathered into the "
          "schema. Use of the deprecated qualifier allows the "
          "maintenance of the existing property but also permits an "
          "improved, clarified definition using EnabledDefault. \n"
          "Deprecated description: StartMode is a string value that "
          "indicates whether the Service is automatically started "
          "by a System, an Operating System, and so on, or is "
          "started only upon request." ), 
       ValueMap { "Automatic", "Manual" }, 
       MaxLen ( 10 )]
   string StartMode;

      [Description ( 
          "Started is a Boolean that indicates whether the Service "
          "has been started (TRUE), or stopped (FALSE)." )]
   boolean Started;

      [Experimental, Description ( 
          "If not Null, the CIM_Service instance represents a line "
          "of service, as defined by ITIL, identified by the value "
          "of LoSID, which must be unique in the context of an "
          "unique identifier for an Organization specified in "
          "LoSOrgID." ), 
       ModelCorrespondence { "CIM_Service.LoSOrgID" }]
   string LoSID;

      [Experimental, Description ( 
          "If not null, this CIM_Service instance represents an "
          "ITIL line of service and the value of LoSOrgID shall be "
          "a unique identifier for the organization that defines "
          "the value of LoSID." ), 
       ModelCorrespondence { "CIM_Service.LoSID" }]
   string LoSOrgID;


      [Deprecated { "CIM_Service.RequestStateChange" }, 
       Description ( 
          "The StartService method places the Service in the "
          "started state. Note that the function of this method "
          "overlaps with the RequestedState property. "
          "RequestedState was added to the model to maintain a "
          "record (such as a persisted value) of the last state "
          "request. Invoking the StartService method should set the "
          "RequestedState property appropriately. The method "
          "returns an integer value of 0 if the Service was "
          "successfully started, 1 if the request is not supported, "
          "and any other number to indicate an error. In a "
          "subclass, the set of possible return codes could be "
          "specified using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are translated "
          "can also be specified in the subclass as a Values array "
          "qualifier. \n"
          "\n"
          "Note: The semantics of this method overlap with the "
          "RequestStateChange method that is inherited from "
          "EnabledLogicalElement. This method is maintained because "
          "it has been widely implemented, and its simple \"start\" "
          "semantics are convenient to use." )]
   uint32 StartService(
);

      [Deprecated { "CIM_Service.RequestStateChange" }, 
       Description ( 
          "The StopService method places the Service in the stopped "
          "state. Note that the function of this method overlaps "
          "with the RequestedState property. RequestedState was "
          "added to the model to maintain a record (such as a "
          "persisted value) of the last state request. Invoking the "
          "StopService method should set the RequestedState "
          "property appropriately. The method returns an integer "
          "value of 0 if the Service was successfully stopped, 1 if "
          "the request is not supported, and any other number to "
          "indicate an error. In a subclass, the set of possible "
          "return codes could be specified using a ValueMap "
          "qualifier on the method. The strings to which the "
          "ValueMap contents are translated can also be specified "
          "in the subclass as a Values array qualifier. \n"
          "\n"
          "Note: The semantics of this method overlap with the "
          "RequestStateChange method that is inherited from "
          "EnabledLogicalElement. This method is maintained because "
          "it has been widely implemented, and its simple \"stop\" "
          "semantics are convenient to use." )]
   uint32 StopService(
);

      [Experimental, Description ( 
          "This method is called to change relative sequence in "
          "which order the ManagedElements associated to the "
          "Service through CIM_ServiceAffectsElement association "
          "are affected. In the case when the Service represents an "
          "interface for client to execute extrinsic methods and "
          "when it is used for grouping of the managed elements "
          "that could be affected, the ordering represents the "
          "relevant priority of the affected managed elements with "
          "respect to each other. \n"
          "An ordered array of ManagedElement instances is passed "
          "to this method, where each ManagedElement instance shall "
          "be already be associated with this Service instance via "
          "CIM_ServiceAffectsElement association. If one of the "
          "ManagedElements is not associated to the Service through "
          "CIM_ServiceAffectsElement association, the "
          "implementation shall return a value of 2 (\"Error "
          "Occured\"). \n"
          "Upon successful execution of this method, if the "
          "AssignedSequence parameter is NULL, the value of the "
          "AssignedSequence property on each instance of "
          "CIM_ServiceAffectsElement shall be updated such that the "
          "values of AssignedSequence properties shall be "
          "monotonically increasing in correlation with the "
          "position of the referenced ManagedElement instance in "
          "the ManagedElements input parameter. That is, the first "
          "position in the array shall have the lowest value for "
          "AssignedSequence. The second position shall have the "
          "second lowest value, and so on. Upon successful "
          "execution, if the AssignedSequence parameter is not "
          "NULL, the value of the AssignedSequence property of each "
          "instance of CIM_ServiceAffectsElement referencing the "
          "ManagedElement instance in the ManagedElements array "
          "shall be assigned the value of the corresponding index "
          "of the AssignedSequence parameter array. For "
          "ManagedElements instances which are associated with the "
          "Service instance via CIM_ServiceAffectsElement and are "
          "not present in the ManagedElements parameter array, the "
          "AssignedSequence property on the CIM_ServiceAffects "
          "association shall be assigned a value of 0." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7..32767", 
          "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Error Occured", "Busy", "Invalid Reference", 
          "Invalid Parameter", "Access Denied", "DMTF Reserved", 
          "Vendor Specified" }]
   uint32 ChangeAffectedElementsAssignedSequence(
         [Required, IN, Description ( 
             "An array of ManagedElements." )]
      CIM_ManagedElement REF ManagedElements[], 
         [Required, IN, Description ( 
             "An array of integers representing AssignedSequence "
             "for the ManagedElement in the corresponding index "
             "of the ManagedElements parameter." )]
      uint16 AssignedSequence[], 
         [IN ( false ), OUT, Description ( 
             "Reference to the job spawned if the operation "
             "continues after the method returns. (May be null "
             "if the task is completed)." )]
      CIM_ConcreteJob REF Job);

};