// ===================================================================
// Title:  Core Method Parameters
// $State: Exp $
// $Date: 2004/08/15 05:55:36 $
// $Source: /cvsroot/wbemservices/open/mof/dmtf/2.9/Core_MethodParms.mof,v $
// $Revision: 1.1 $
// ===================================================================
//#pragma inLine ("Includes/copyright.inc")
// Copyright 1998-2004 Distributed Management Task Force, Inc. (DMTF).
// All rights reserved.
// DMTF is a not-for-profit association of industry members dedicated
// to promoting enterprise and systems management and interoperability.
// DMTF specifications and documents may be reproduced for uses
// consistent with this purpose by members and non-members,
// provided that correct attribution is given.
// As DMTF specifications may be revised from time to time,
// the particular version and release date should always be noted.
// 
// Implementation of certain elements of this standard or proposed
// standard may be subject to third party patent rights, including
// provisional patent rights (herein "patent rights"). DMTF makes
// no representations to users of the standard as to the existence
// of such rights, and is not responsible to recognize, disclose, or
// identify any or all such third party patent right, owners or
// claimants, nor for any incomplete or inaccurate identification or
// disclosure of such rights, owners or claimants. DMTF shall have no
// liability to any party, in any manner or circumstance, under any
// legal theory whatsoever, for failure to recognize, disclose, or
// identify any such third party patent rights, or for such party's
// reliance on the standard or incorporation thereof in its product,
// protocols or testing procedures. DMTF shall have no liability to
// any party implementing such standard, whether such implementation
// is foreseeable or not, nor to any patent owner or claimant, and shall
// have no liability or responsibility for costs or losses incurred if
// a standard is withdrawn or modified after publication, and shall be
// indemnified and held harmless by any party implementing the
// standard from any and all claims of infringement by a patent owner
// for such implementations.
// 
// For information about patents held by third-parties which have
// notified the DMTF that, in their opinion, such patent may relate to
// or impact implementations of DMTF standards, visit
// http://www.dmtf.org/about/policies/disclosures.php.
//#pragma inLine
// ===================================================================
// Description: The Core Model defines basic management concepts.
//              This file defines the values of a method's parameters.
// 
//              The object classes below are listed in an order that
//              avoids forward references. Required objects, defined
//              by other working groups, are omitted.
// ==================================================================
// Change Log for v2.8 Final:
// CR1036 - Sensor cleanup
// CR1223 - SysDev Omnibus CR - Minor MOF corrections.
// 
// Change Log for v2.7 - None
// ==================================================================

#pragma locale ("en_US")


// ==================================================================
// MethodParameters
// ==================================================================
   [Abstract, Version ( "2.6.0" ), Description (
       "CIM_MethodParameters represents a set of values to be used as "
       "the parameters of a method. These parameters may be passed to "
       "the method, diretly used by the method in its invocation, or "
       "accessed by the method when it is called. The properties of a "
       "concrete subclass of MethodParameters are mapped to the "
       "parameters of a method by the method itself or by the method "
       "caller. This is an implementation detail independent of the "
       "definition of the class. For ease of use, property names "
       "should match parameter names. \n"
       "Property values should be set before the method is invoked. "
       "The ModelCorrespondence qualifier can be used to indicate if "
       "the property value should come from another class's property. "
       "The instances that the property values should be gleaned from "
       "should be associated with MethodParameters using the Parameter "
       "ValueSources association. If the property is declared as an "
       "array, then the same property value (identified by the Model "
       "Correspondence) will be retrieved from all appropriate "
       "ParameterValueSources instances and stored in the array. If "
       "the property is declared as an array and the Model "
       "Correspondence is to an array property, then only one instance "
       "of the array will be copied from one ParameterValueSource. If "
       "the property is not declared as an array and there are "
       "multiple instances of the class and property associated with "
       "it through ModelCorrespondence where the values are not all "
       "the same, then an error will occur and the property's value "
       "will not be set. Several MethodParameters instances can be "
       "associated with any ManagedElement's methods. This allows the "
       "maintenance of 'canned' method invocation and reduces the "
       "overhead of recreating all method parameters for every method "
       "invocation.")]
class CIM_MethodParameters : CIM_ManagedElement {

      [Description (
          "The identifier by which the MethodParameters object is "
          "known."), 
       MaxLen ( 256 )]
   string MethodParametersId;

      [Description (
          "The resetValues method updates the values of the properties "
          "of MethodParameters which have ModelCorrespondence to the "
          "SourceME ManagedElement. This allows the association of "
          "several source candidates with the MethodParameters with "
          "one being chosen as the source for this set of values. If "
          "resetValues is invoked and sourceME is null, then all "
          "associated MEs in ParameterValueSources will be used to set "
          "the values of the MethodParameters properties.")]
   uint32 ResetValues( 
         [IN, Description (
             "The source Managed Element.")]
      CIM_ManagedElement REF SourceME); 
};


// ===================================================================
// ParameterValueSources
// ===================================================================
   [Association, Version ( "2.6.0" ), Description (
       "ParameterValueSources represents the association between a "
       "MethodParameters instance and the ManagedElement instances "
       "which contain properties to be used to create values for the "
       "MethodParameters properties.")]
class CIM_ParameterValueSources {

      [Key, Description (
          "The MethodParameters instance whose property values are to "
          "be set.")]
   CIM_MethodParameters REF Parameters;

      [Key, Description (
          "The ManagedElement which contains properties to be used to "
          "populate the values of the properties of the "
          "MethodParameters instance.")]
   CIM_ManagedElement REF ValueSource;
};


// ===================================================================
// ParametersForMethod
// ===================================================================
   [Association, Version ( "2.6.0" ), Description (
       "ParametersForMethod represents the association between "
       "MethodParameters class(es) and a ManagedElement which has a "
       "method that may use the MethodParameters during its "
       "invocation. This association is optional, as the Method "
       "Parameters instance may be passed as a parameter to a method "
       "or used to create a method signature before the method is "
       "invoked. This association is useful for finding all the valid "
       "MethodParameters instances for a particular method. It may be "
       "particularly useful for user-oriented interfaces and automated "
       "or policy driven method invocations.")]
class CIM_ParametersForMethod {

      [Key, Description (
          "The MethodParameters instance which may be used by the "
          "ParametersForMethod's method invocation.")]
   CIM_MethodParameters REF Parameters;

      [Key, Description (
          "The ManagedElement which has a method that may use this "
          "instance of MethodParameters.")]
   CIM_ManagedElement REF TheMethod;

      [Key, Description (
          "The name of the method that may use the referenced instance "
          "of MethodParameters during its invocation."), 
       MaxLen ( 64 )]
   string MethodName;
};


// ===================================================================
// end of file
// ===================================================================
