Package com.sas.metadata.remote

# Interface ResponsibleParty

All Superinterfaces:
  `CMetadata`, `MdObjectBase`, `MdObjectBaseUtil`, `MdObjectBaseXML`, `Remote`, `Root`, `SecondaryType`

public interface ResponsibleParty extends SecondaryType
This metadata type associates a responsibility with an identity. Later, this ResponsibleParty object can be associated with one or more resources. A ResponsibleParty object must be created in the same SAS Metadata Repository as the Person or IdentityGroup object of the identity that it describes. New methods have been added to the SAS Open Metadata Interface that create and get ResponsibleParty objects in the appropriate repository, regardless of whether the requesting identity has WriteMetadata permission to that repository or not. For more information, see AddResponsibleParty and GetResponsibleParty in the SAS 9.2 Open Metadata Interface: Reference and Usage.

ResponsibleParty objects

- May be associated with only a single identity.
- Are considered to be contained by the identity.
- Are deleted when the associated identity is deleted.
- May not be edited or extended after creation.
- May have a SAS supplied or user-defined role.
- Have the name of the associated identity.
- Inherit security from its associated identity
- Do not imply security based roles.
- Are stored in the same repository as the identity object by default (Foundation).
- Responsibility not Role should be used when options are presented to end-users. Role can imply security roles.

Attributes of ResponsibleParty are:

- `Role`

Associations of ResponsibleParty are:

- `Objects`
- `Persons`

## Usage

To create an instance of this ResponsibleParty, use the `factory` create methods.
Example: create a ResponsibleParty with name "ResponsibleParty_Object", in repository "AAAAAAAA".

     // create a store to contain your objects for this change. If you do not have an existing object
     // or store to use.  You may obtain the store from another object by using Object.getObjectStore().
     MdFactory factory; //where "factory" is a valid MdFactory instance
     MdObjectStore objectStore = factory.createObjectStore();
     ResponsibleParty myObject = (ResponsibleParty) factory.createComplexMetadataObject(objectStore, "ResponsibleParty_Object", MetadataObjects.RESPONSIBLEPARTY, "AAAAAAAA");
     myObject.updateMetadataAll();  // Write object to server
     objectStore.dispose();  // dispose of the object store if it is no longer needed

## Behavior

- Attributes and associations for this object can be retrieved by using the methods in `MdOMIUtil`.
- When changes are made to the object, either by setting an attribute or adding objects to a particular association, they can be persisted to the metadata server with the `updateMetadataAll` method.
- If an object needs to be deleted, the `delete` method can be used. This will flag the object as being deleted on the client, and will require an update call to persist the change to the server.

## Dependencies

This class depends on objects being contained in an MdObjectStore. Object stores should be disposed of when they are no longer needed as this will help clean up memory. Disposing an object store will dispose of all objects contained within that store.

Since:
  9.0

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `ASSOCIATION_OBJECTS_NAME`
  Constant used for the name of the Objects association.
  `static final String`
  `ASSOCIATION_PERSONS_NAME`
  Constant used for the name of the Persons association.
  `static final String`
  `ATTRIBUTE_ROLE_NAME`
  Constant used for the name of the Role attribute.

  ### Fields inherited from interface com.sas.metadata.remote.MdObjectBase

  `ATTRIBUTE_DESC_NAME, ATTRIBUTE_ID_NAME, ATTRIBUTE_METADATACREATED_NAME, ATTRIBUTE_METADATAUPDATED_NAME, ATTRIBUTE_NAME_NAME`

  ### Fields inherited from interface com.sas.metadata.remote.Root

  `ASSOCIATION_ACCESSCONTROLS_NAME, ASSOCIATION_CHANGES_NAME, ASSOCIATION_CUSTOMASSOCIATIONS_NAME, ASSOCIATION_DOCUMENTS_NAME, ASSOCIATION_EXTENSIONS_NAME, ASSOCIATION_EXTERNALIDENTITIES_NAME, ASSOCIATION_GROUPS_NAME, ASSOCIATION_IMPLEMENTORS_NAME, ASSOCIATION_KEYWORDS_NAME, ASSOCIATION_LOCALIZEDATTRIBUTES_NAME, ASSOCIATION_NOTES_NAME, ASSOCIATION_PRIMARYPROPERTYGROUP_NAME, ASSOCIATION_PROMPTS_NAME, ASSOCIATION_PROPERTIES_NAME, ASSOCIATION_PROPERTYSETS_NAME, ASSOCIATION_REFERENCEDOBJECTS_NAME, ASSOCIATION_RESPONSIBLEPARTIES_NAME, ASSOCIATION_SOURCETRANSFORMATIONS_NAME, ASSOCIATION_SPECSOURCETRANSFORMATIONS_NAME, ASSOCIATION_SPECTARGETTRANSFORMATIONS_NAME, ASSOCIATION_TARGETTRANSFORMATIONS_NAME, ASSOCIATION_TIMESTAMPS_NAME, ASSOCIATION_TREES_NAME, ASSOCIATION_TSOBJECTNAMESPACE_NAME, ASSOCIATION_USEDBYPROTOTYPES_NAME, ASSOCIATION_USINGPROTOTYPE_NAME, ASSOCIATION_VARIABLES_NAME, ATTRIBUTE_CHANGESTATE_NAME, ATTRIBUTE_LOCKEDBY_NAME, ATTRIBUTE_USAGEVERSION_NAME`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `AssociationList`
  `getObjects()`
  Gets the AssociationList of `Objects`
  `AssociationList`
  `getObjects(boolean fGoToServer)`
  Gets the Associationlist of `Objects`
  `AssociationList`
  `getPersons()`
  Gets the AssociationList of `Persons`
  `AssociationList`
  `getPersons(boolean fGoToServer)`
  Gets the Associationlist of `Persons`
  `String`
  `getRole()`
  Gets the `String` value of `Role`
  `int`
  `getRoleMaxLength()`
  Gets the maximum length of `Role`
  `int`
  `getRoleState()`
  Gets the Metadata State of `Role`
  `void`
  `initializePredObjects()`
  (S) Adds the Associated objects to the predObjects which are:
  `Objects`
  `Persons`
  `void`
  `initializeRequiredObjects()`
  (S) This initializes the Required Objects(Roles) which are:
  `void`
  `setObjects(AssociationList list)`
  Sets the `Objects` list to be `list`.
  `void`
  `setObjects(AssociationList inObjects, int state)`
  Sets the entire AssociationList to match the passed in Vector, sets the state of the AssociationList
  `void`
  `setPersons(AssociationList list)`
  Sets the `Persons` list to be `list`.
  `void`
  `setPersons(AssociationList inObjects, int state)`
  Sets the entire AssociationList to match the passed in Vector, sets the state of the AssociationList
  `void`
  `setRole(String inRole)`
  Sets the `Role` value and sets the state to MetadataState.LOCAL.
  `void`
  `setRole(String inRole, int state)`
  Sets the `Role` Metadata State.
  `void`
  `setRoleState(int state)`
  Sets the Metadata State of `Role`.

  ### Methods inherited from interface com.sas.metadata.remote.MdObjectBase

  `addElementToChangeList, clearChangeList, getChangeList, getCMetadataType, getDesc, getDescMaxLength, getDescState, getFQID, getId, getIdState, getMetadataCreated, getMetadataCreatedState, getMetadataUpdated, getMetadataUpdatedState, getName, getNameMaxLength, getNameState, getObjectStore, getPredAssociations, getRepositoryID, getRequiredAssociations, getState, isAssociationRequired, isNewObject, isPredAssociation, removeElementFromChangeList, resetObject, resetState, resetStates, setCMetadataType, setDesc, setDesc, setDescState, setFQID, setFQID, setId, setId, setIdState, setMetadataCreated, setMetadataCreated, setMetadataCreatedState, setMetadataUpdated, setMetadataUpdated, setMetadataUpdatedState, setName, setName, setNameState, setObjectStore, setState`

  ### Methods inherited from interface com.sas.metadata.remote.MdObjectBaseUtil

  `addMdObjectListener, delete, dispose, fireMdObjectModified, getAssociatedObjects, getAssociatedObjects, getAssociatedObjects, getAssociationNames, getAssocs, getAssocsWA, getAttributeNames, getAttrs, getAttrsStates, getAuthorizationUtil, getChangeManagementState, getChgMgtExternalIdentityImportType, getClientSideOnlyObject, getMdObjectAssociation, getPopulatedAssocs, getUpdatedAttrs, getViewList, isCheckedOut, isLocked, objectModified, removeMdObjectListener, setAttrs, setChangeManagementTargetRepository, setChgMgtExternalIdentityImportType, setClientSideOnlyObject, setMdObjectAssociation, touch, updateAssnsIds`

  ### Methods inherited from interface com.sas.metadata.remote.MdObjectBaseXML

  `closeUpdateMetadataXML, createEmptyXML, createObjectRefreshXML, createObjectXML, createObjectXML, createUpdateAssociationXML, createUpdateAssociationXML, createUpdateSimpleXML, doCreateUpdateXML, getUpdateSimpleSubstring, updateMetadataAll`

  ### Methods inherited from interface com.sas.metadata.remote.Root

  `getAccessControls, getAccessControls, getChanges, getChanges, getChangeState, getChangeStateMaxLength, getChangeStateState, getCustomAssociations, getCustomAssociations, getDocuments, getDocuments, getExtensions, getExtensions, getExternalIdentities, getExternalIdentities, getGroups, getGroups, getImplementors, getImplementors, getKeywords, getKeywords, getLocalizedAttributes, getLocalizedAttributes, getLockedBy, getLockedByMaxLength, getLockedByState, getNotes, getNotes, getPrimaryPropertyGroup, getPrimaryPropertyGroups, getPrimaryPropertyGroups, getPrompts, getPrompts, getProperties, getProperties, getPropertySets, getPropertySets, getReferencedObjects, getReferencedObjects, getResponsibleParties, getResponsibleParties, getSourceTransformations, getSourceTransformations, getSpecSourceTransformations, getSpecSourceTransformations, getSpecTargetTransformations, getSpecTargetTransformations, getTargetTransformations, getTargetTransformations, getTimestamps, getTimestamps, getTrees, getTrees, getTSObjectNamespace, getTSObjectNamespaces, getTSObjectNamespaces, getUsageVersion, getUsageVersionState, getUsedByPrototypes, getUsedByPrototypes, getUsingPrototype, getUsingPrototypes, getUsingPrototypes, getVariables, getVariables, setAccessControls, setAccessControls, setChanges, setChanges, setChangeState, setChangeState, setChangeStateState, setCustomAssociations, setCustomAssociations, setDocuments, setDocuments, setExtensions, setExtensions, setExternalIdentities, setExternalIdentities, setGroups, setGroups, setImplementors, setImplementors, setKeywords, setKeywords, setLocalizedAttributes, setLocalizedAttributes, setLockedBy, setLockedBy, setLockedByState, setNotes, setNotes, setPrimaryPropertyGroup, setPrimaryPropertyGroups, setPrimaryPropertyGroups, setPrompts, setPrompts, setProperties, setProperties, setPropertySets, setPropertySets, setReferencedObjects, setReferencedObjects, setResponsibleParties, setResponsibleParties, setSourceTransformations, setSourceTransformations, setSpecSourceTransformations, setSpecSourceTransformations, setSpecTargetTransformations, setSpecTargetTransformations, setTargetTransformations, setTargetTransformations, setTimestamps, setTimestamps, setTrees, setTrees, setTSObjectNamespace, setTSObjectNamespaces, setTSObjectNamespaces, setUsageVersion, setUsageVersion, setUsageVersion, setUsageVersion, setUsageVersionState, setUsedByPrototypes, setUsedByPrototypes, setUsingPrototype, setUsingPrototypes, setUsingPrototypes, setVariables, setVariables`

- ## Field Details

  - ### ATTRIBUTE_ROLE_NAME

    static final String ATTRIBUTE_ROLE_NAME
    Constant used for the name of the Role attribute.

    Role: The responsibility the associated identity has in relation to the associated objects. Begining in SAS 9.2, the list of SAS-supported roles will be maintained and localized within a utility jar. Supported roles include: OWNER USER ADMINISTRATOR CHANGEDBY

    See Also:
      - Constant Field Values

  - ### ASSOCIATION_OBJECTS_NAME

    static final String ASSOCIATION_OBJECTS_NAME
    Constant used for the name of the Objects association.

    Objects: The responsibility as defined by the Role attribute may apply to one or many objects. An application with a requirement to determine all of the objects for which a person has been assigned a particular responsibility would find the ResponsibleParty object where Role is the responsibility in question and query the Objects association to obtain the list of objects.

    See Also:
      - Constant Field Values

  - ### ASSOCIATION_PERSONS_NAME

    static final String ASSOCIATION_PERSONS_NAME
    Constant used for the name of the Persons association.

    Persons: The list of persons that have been assigned the responsibility defined in this object.

    See Also:
      - Constant Field Values

- ## Method Details

  - ### initializeRequiredObjects

    void initializeRequiredObjects() throws RemoteException
    (S) This initializes the Required Objects(Roles) which are:
    Specified by:
      `initializeRequiredObjects` in interface `MdObjectBaseUtil`
    Specified by:
      `initializeRequiredObjects` in interface `Root`
    Specified by:
      `initializeRequiredObjects` in interface `SecondaryType`
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### initializePredObjects

    void initializePredObjects() throws RemoteException
    (S) Adds the Associated objects to the predObjects which are:
    `Objects`
    `Persons`
    Specified by:
      `initializePredObjects` in interface `MdObjectBase`
    Specified by:
      `initializePredObjects` in interface `Root`
    Specified by:
      `initializePredObjects` in interface `SecondaryType`
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### getRole

    String getRole() throws RemoteException
    Gets the `String` value of `Role`
    Returns:
      The `Role`
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### getRoleState

    int getRoleState() throws RemoteException
    Gets the Metadata State of `Role`
    Returns:
      The State.
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### getRoleMaxLength

    int getRoleMaxLength() throws RemoteException
    Gets the maximum length of `Role`
    Returns:
      The max size
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### getObjects

    AssociationList getObjects() throws RemoteException, MdException
    Gets the AssociationList of `Objects`
    Returns:
      Returns the AssociationList of `Objects` which can be of type:
      All types
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.
      `MdException` - If error getting/setting part of the object.

  - ### getPersons

    AssociationList getPersons() throws RemoteException, MdException
    Gets the AssociationList of `Persons`
    Returns:
      Returns the AssociationList of `Persons` which can be of type:
      Identity
      IdentityGroup
      Person
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.
      `MdException` - If error getting/setting part of the object.

  - ### getObjects

    AssociationList getObjects(boolean fGoToServer) throws RemoteException, MdException
    Gets the Associationlist of `Objects`
    Parameters:
      `fGoToServer` - boolean Get the value from the server.
    Returns:
      Returns the AssociationList of `Objects` which can be of type:
      All types
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.
      `MdException` - If error getting/setting part of the object.

  - ### getPersons

    AssociationList getPersons(boolean fGoToServer) throws RemoteException, MdException
    Gets the Associationlist of `Persons`
    Parameters:
      `fGoToServer` - boolean Get the value from the server.
    Returns:
      Returns the AssociationList of `Persons` which can be of type:
      Identity
      IdentityGroup
      Person
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.
      `MdException` - If error getting/setting part of the object.

  - ### setRole

    void setRole(String inRole) throws RemoteException
    Sets the `Role` value and sets the state to MetadataState.LOCAL.
    Parameters:
      `inRole` - String
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setRole

    void setRole(String inRole, int state) throws RemoteException
    Sets the `Role` Metadata State.
    Parameters:
      `inRole` - String
      `state` - int
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setRoleState

    void setRoleState(int state) throws RemoteException
    Sets the Metadata State of `Role`.
    Parameters:
      `state` - int
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setObjects

    void setObjects(AssociationList list) throws RemoteException
    Sets the `Objects` list to be `list`. Objects of which can be of type:
    All types
    Parameters:
      `list` - AssociationList
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setObjects

    void setObjects(AssociationList inObjects, int state) throws RemoteException
    Sets the entire AssociationList to match the passed in Vector, sets the state of the AssociationList
    Parameters:
      `inObjects` - AssociationList
      `state` - int
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setPersons

    void setPersons(AssociationList list) throws RemoteException
    Sets the `Persons` list to be `list`. Objects of which can be of type:
    Identity
    IdentityGroup
    Person
    Parameters:
      `list` - AssociationList
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setPersons

    void setPersons(AssociationList inObjects, int state) throws RemoteException
    Sets the entire AssociationList to match the passed in Vector, sets the state of the AssociationList
    Parameters:
      `inObjects` - AssociationList
      `state` - int
    Throws:
      `RemoteException` - If error communicating with remote object.