Class GovernanceActionContext

java.lang.Object
org.odpi.openmetadata.frameworks.governanceaction.GovernanceActionContext
All Implemented Interfaces:
GovernanceContext, ProvisioningGovernanceContext, RemediationGovernanceContext, TriageGovernanceContext, VerificationGovernanceContext, WatchdogGovernanceContext

GovernanceContext provides the governance action service with access to information about the governance request along with the open metadata repository interfaces. The abstract methods are implemented by the technology that supports the real metadata store.
  • Constructor Details

    • GovernanceActionContext

      public GovernanceActionContext(String userId, String engineActionGUID, String requestType, Map<String,String> requestParameters, String requesterUserId, List<RequestSourceElement> requestSourceElements, List<ActionTargetElement> actionTargetElements, OpenMetadataClient openMetadataClient, ActionControlInterface actionControlClient, DuplicateManagementInterface duplicateManagementClient, GovernanceActionProcessInterface governanceActionProcessClient, GovernanceCompletionInterface governanceCompletionClient, WatchDogEventInterface watchdogEventClient)
      Constructor sets up the key parameters for processing the request to the governance action service.
      Parameters:
      userId - calling user
      engineActionGUID - unique identifier of the engine action that triggered this governance service
      requestType - unique identifier of the asset that the annotations should be attached to
      requestParameters - name-value properties to control the governance action service
      requesterUserId - original user requesting this governance service
      requestSourceElements - metadata elements associated with the request to the governance action service
      actionTargetElements - metadata elements that need to be worked on by the governance action service
      openMetadataClient - client to the metadata store for use by the governance action service
      actionControlClient - client to the open governance services for use by the governance action service
      duplicateManagementClient - client to the open governance services for use by the governance action service
      governanceActionProcessClient - client to the open governance services for use by the governance action service
      governanceCompletionClient - client to the open governance services for use by the governance action service
      watchdogEventClient - client to the open governance services for use by the governance action service
  • Method Details

    • getEngineActionGUID

      public String getEngineActionGUID()
      Return the unique identifier of the governance action that this service request is associated with.
      Specified by:
      getEngineActionGUID in interface GovernanceContext
      Returns:
      string guid
    • getRequestType

      public String getRequestType()
      Return the type of request.
      Specified by:
      getRequestType in interface GovernanceContext
      Returns:
      string guid
    • getRequestParameters

      public Map<String,String> getRequestParameters()
      Return the properties that hold the parameters used to drive the governance action service's processing.
      Specified by:
      getRequestParameters in interface GovernanceContext
      Returns:
      property map
    • getRequesterUserId

      public String getRequesterUserId()
      Return the userId of the original person, process, service that requested this action.
      Specified by:
      getRequesterUserId in interface GovernanceContext
      Returns:
      string userId
    • getRequestSourceElements

      public List<RequestSourceElement> getRequestSourceElements()
      Return the list of metadata elements associated with the request to the governance action service. This list will not change during the lifetime of the service.
      Specified by:
      getRequestSourceElements in interface GovernanceContext
      Returns:
      list of request source elements
    • getActionTargetElements

      public List<ActionTargetElement> getActionTargetElements()
      Return the list of elements that this governance action service should work on.
      Specified by:
      getActionTargetElements in interface GovernanceContext
      Returns:
      cached list of action target metadata elements
    • getOpenMetadataStore

      public OpenMetadataStore getOpenMetadataStore()
      Return the client to access metadata from the open metadata repositories. This enables the governance action service to retrieve more information about the metadata elements linked to the request source and action target elements.
      Specified by:
      getOpenMetadataStore in interface GovernanceContext
      Returns:
      metadata store client
    • createIncidentReport

      public String createIncidentReport(String qualifiedName, int domainIdentifier, String background, List<IncidentImpactedElement> impactedResources, List<IncidentDependency> previousIncidents, Map<String,Integer> incidentClassifiers, Map<String,String> additionalProperties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create an incident report to capture the situation detected by this governance action service. This incident report will be processed by other governance activities.
      Specified by:
      createIncidentReport in interface GovernanceContext
      Parameters:
      qualifiedName - unique identifier to give this new incident report
      domainIdentifier - governance domain associated with this action (0=ALL)
      background - description of the situation
      impactedResources - details of the resources impacted by this situation
      previousIncidents - links to previous incident reports covering this situation
      incidentClassifiers - initial classifiers for the incident report
      additionalProperties - additional arbitrary properties for the incident reports
      Returns:
      unique identifier of the resulting incident report
      Throws:
      InvalidParameterException - null or non-unique qualified name for the incident report
      UserNotAuthorizedException - this governance action service is not authorized to create an incident report
      PropertyServerException - there is a problem with the metadata store
    • updateActionTargetStatus

      public void updateActionTargetStatus(String actionTargetGUID, EngineActionStatus status, Date startDate, Date completionDate, String completionMessage) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the status of a specific action target. By default, these values are derived from the values for the governance action service. However, if the governance action service has to process name target elements, then setting the status on each individual target will show the progress of the governance action service.
      Specified by:
      updateActionTargetStatus in interface GovernanceContext
      Parameters:
      actionTargetGUID - unique identifier of the governance action service.
      status - status enum to show its progress
      startDate - date/time that the governance action service started processing the target
      completionDate - date/time that the governance process completed processing this target.
      completionMessage - message to describe completion results or reasons for failure
      Throws:
      InvalidParameterException - the action target GUID is not recognized
      UserNotAuthorizedException - the governance action service is not authorized to update the action target properties
      PropertyServerException - there is a problem connecting to the metadata store
    • recordCompletionStatus

      public void recordCompletionStatus(CompletionStatus status, List<String> outputGuards) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Declare that all the processing for the governance action service is finished and the status of the work.
      Specified by:
      recordCompletionStatus in interface GovernanceContext
      Parameters:
      status - completion status enum value
      outputGuards - optional guard strings for triggering subsequent action(s)
      Throws:
      InvalidParameterException - the completion status is null
      UserNotAuthorizedException - the governance action service is not authorized to update the governance action service completion status
      PropertyServerException - there is a problem connecting to the metadata store
    • recordCompletionStatus

      public void recordCompletionStatus(CompletionStatus status, List<String> outputGuards, List<NewActionTarget> newActionTargets) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Declare that all the processing for the governance action service is finished and the status of the work.
      Specified by:
      recordCompletionStatus in interface GovernanceContext
      Parameters:
      status - completion status enum value
      outputGuards - optional guard strings for triggering subsequent action(s)
      newActionTargets - list of action target names to GUIDs for the resulting governance action service
      Throws:
      InvalidParameterException - the completion status is null
      UserNotAuthorizedException - the governance action service is not authorized to update the governance action service completion status
      PropertyServerException - there is a problem connecting to the metadata store
    • recordCompletionStatus

      public void recordCompletionStatus(CompletionStatus status, List<String> outputGuards, Map<String,String> newRequestParameters, List<NewActionTarget> newActionTargets) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Declare that all the processing for the governance action service is finished and the status of the work.
      Specified by:
      recordCompletionStatus in interface GovernanceContext
      Parameters:
      status - completion status enum value
      outputGuards - optional guard strings for triggering subsequent action(s)
      newRequestParameters - additional request parameters. These override/augment any request parameters defined for the next invoked service
      newActionTargets - list of action target names to GUIDs for the resulting governance action service
      Throws:
      InvalidParameterException - the completion status is null
      UserNotAuthorizedException - the governance action service is not authorized to update the governance action service completion status
      PropertyServerException - there is a problem connecting to the metadata store
    • recordCompletionStatus

      public void recordCompletionStatus(CompletionStatus status, List<String> outputGuards, Map<String,String> newRequestParameters, List<NewActionTarget> newActionTargets, String completionMessage) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Declare that all the processing for the governance action service is finished and the status of the work.
      Specified by:
      recordCompletionStatus in interface GovernanceContext
      Parameters:
      status - completion status enum value
      outputGuards - optional guard strings for triggering subsequent action(s)
      newRequestParameters - additional request parameters. These override/augment any request parameters defined for the next invoked service
      newActionTargets - list of action target names to GUIDs for the resulting governance action service
      completionMessage - message to describe completion results or reasons for failure
      Throws:
      InvalidParameterException - the completion status is null
      UserNotAuthorizedException - the governance action service is not authorized to update the governance action service completion status
      PropertyServerException - there is a problem connecting to the metadata store
    • getCompletionStatus

      public CompletionStatus getCompletionStatus()
      Return any completion status from the governance action service.
      Specified by:
      getCompletionStatus in interface GovernanceContext
      Returns:
      completion status enum
    • createAsset

      public String createAsset(String assetTypeName, String qualifiedName, String name, String description) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create an asset such as a data file, database, API or server. This interface includes an optional templateGUID to copy the structure of an existing asset of the same type.
      Specified by:
      createAsset in interface ProvisioningGovernanceContext
      Parameters:
      assetTypeName - the type name of the asset. This is the name of an open metadata type that inherits from "Asset".
      qualifiedName - the unique name of the new asset
      name - the technical display name of the asset
      description - the description of the asset
      Returns:
      unique identifier of the new asset
      Throws:
      InvalidParameterException - the type name or qualified name is null or invalid
      UserNotAuthorizedException - this governance action service is not authorized to create an asset
      PropertyServerException - there is a problem connecting to the metadata store
    • createAsset

      public String createAsset(String assetTypeName, String qualifiedName, String name, String versionIdentifier, String description, ElementProperties extendedProperties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create an asset such as a data file, database, API or server.
      Specified by:
      createAsset in interface ProvisioningGovernanceContext
      Parameters:
      assetTypeName - the type name of the asset. This is the name of an open metadata type that inherits from "Asset".
      qualifiedName - the unique name of the new asset
      name - the technical display name of the resource
      versionIdentifier - version of the resource
      description - the description of the resource
      extendedProperties - attributes introduced by subtypes of Asset
      Returns:
      unique identifier of the new asset
      Throws:
      InvalidParameterException - the type name or qualified name is null or invalid
      UserNotAuthorizedException - this governance action service is not authorized to create an asset
      PropertyServerException - there is a problem connecting to the metadata store
    • createAssetFromTemplate

      public String createAssetFromTemplate(String templateGUID, String qualifiedName, String name, String description) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create an asset such as a data file, database, API or server. This interface includes an optional templateGUID to copy the structure of an existing asset of the same type.
      Specified by:
      createAssetFromTemplate in interface ProvisioningGovernanceContext
      Parameters:
      templateGUID - the unique identifier of the existing asset to copy (this will copy all the attachments such as nested content, schema, connection etc)
      qualifiedName - the unique name of the new asset
      name - the technical display name of the asset
      description - the description of the asset
      Returns:
      unique identifier of the new asset
      Throws:
      InvalidParameterException - the type name or qualified name is null or invalid
      UserNotAuthorizedException - this governance action service is not authorized to create an asset
      PropertyServerException - there is a problem connecting to the metadata store
    • createAssetFromTemplate

      public String createAssetFromTemplate(String assetTypeName, String templateGUID, String qualifiedName, String name, String versionIdentifier, String description, ElementProperties extendedProperties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create an asset such as a data file, database, API or server. This is used if the provisioning governance action service has created a new asset as part of the provisioning process. This interface includes an optional templateGUID to copy the structure of an existing asset of the same type.
      Specified by:
      createAssetFromTemplate in interface ProvisioningGovernanceContext
      Parameters:
      assetTypeName - the type name of the asset. This is the name of an open metadata type that inherits from "Asset".
      templateGUID - the unique identifier of the existing asset to copy (this will copy all the attachments such as nested content, schema, connection etc)
      qualifiedName - the unique name of the new asset
      name - the technical display name of the asset
      versionIdentifier - version of the resource
      description - the description of the asset
      extendedProperties - attributes introduced by subtypes of Asset
      Returns:
      unique identifier of the new asset
      Throws:
      InvalidParameterException - the type name or qualified name is null or invalid
      UserNotAuthorizedException - this governance action service is not authorized to create an asset
      PropertyServerException - there is a problem connecting to the metadata store
    • createProcess

      public String createProcess(String processTypeName, ElementStatus initialStatus, String qualifiedName, String name, String description) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a new process to represent the processing of this governance action process.
      Specified by:
      createProcess in interface ProvisioningGovernanceContext
      Parameters:
      processTypeName - the type name of the process. This is the name of an open metadata type that inherits from "Process".
      initialStatus - status value of the process
      qualifiedName - the unique name of the new process
      name - the technical display name of the process
      description - the description of the process
      Returns:
      unique identifier of the new process
      Throws:
      InvalidParameterException - the type name or qualified name is null or invalid
      UserNotAuthorizedException - this governance action service is not authorized to create a process
      PropertyServerException - there is a problem connecting to the metadata store
    • createProcess

      public String createProcess(String processTypeName, ElementStatus initialStatus, String qualifiedName, String name, String versionIdentifier, String description, String formula, ElementProperties extendedProperties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a new process to represent the processing of this governance action process.
      Specified by:
      createProcess in interface ProvisioningGovernanceContext
      Parameters:
      processTypeName - the type name of the process. This is the name of an open metadata type that inherits from "Process".
      initialStatus - status value of the process
      qualifiedName - the unique name of the new process
      name - the technical display name of the process
      versionIdentifier - version of the resource
      description - the description of the process
      formula - expression that describes the behaviour of the process
      extendedProperties - attributes introduced by subtypes of Process
      Returns:
      unique identifier of the new process
      Throws:
      InvalidParameterException - the type name or qualified name is null or invalid
      UserNotAuthorizedException - this governance action service is not authorized to create a process
      PropertyServerException - there is a problem connecting to the metadata store
    • createProcessFromTemplate

      public String createProcessFromTemplate(String templateGUID, ElementStatus initialStatus, String qualifiedName, String name, String description) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a new process to represent the processing of this governance action process.
      Specified by:
      createProcessFromTemplate in interface ProvisioningGovernanceContext
      Parameters:
      templateGUID - the unique identifier of the existing process to copy (this will copy all the attachments such as ports, nested content, schema, connection etc)
      initialStatus - status value of the process
      qualifiedName - the unique name of the new process
      name - the technical display name of the process
      description - the description of the process
      Returns:
      unique identifier of the new process
      Throws:
      InvalidParameterException - the type name or qualified name is null or invalid
      UserNotAuthorizedException - this governance action service is not authorized to create a process
      PropertyServerException - there is a problem connecting to the metadata store
    • createProcessFromTemplate

      public String createProcessFromTemplate(String templateGUID, ElementStatus initialStatus, String qualifiedName, String name, String versionIdentifier, String description, String formula, ElementProperties extendedProperties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a new process to represent the processing of this governance action process.
      Specified by:
      createProcessFromTemplate in interface ProvisioningGovernanceContext
      Parameters:
      templateGUID - the unique identifier of the existing process to copy (this will copy all the attachments such as ports, nested content, schema, connection etc)
      initialStatus - status value of the process
      qualifiedName - the unique name of the new process
      name - the technical display name of the process
      versionIdentifier - version of the resource
      description - the description of the process
      formula - expression that describes the behaviour of the process
      extendedProperties - attributes introduced by subtypes of Process
      Returns:
      unique identifier of the new process
      Throws:
      InvalidParameterException - the type name or qualified name is null or invalid
      UserNotAuthorizedException - this governance action service is not authorized to create a process
      PropertyServerException - there is a problem connecting to the metadata store
    • createChildProcess

      public String createChildProcess(String processTypeName, ElementStatus initialStatus, String qualifiedName, String name, String description, String parentGUID) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a process that represents the processing instance of this governance action.
      Specified by:
      createChildProcess in interface ProvisioningGovernanceContext
      Parameters:
      processTypeName - the type name of the process. This is the name of an open metadata type that inherits from "Process".
      initialStatus - status value of the process
      qualifiedName - the unique name of the new process
      name - the technical display name of the process
      description - the description of the process
      parentGUID - the unique identifier of the existing process to copy (this will copy all the attachments such as ports, nested content, schema, connection etc)
      Returns:
      unique identifier of the new process
      Throws:
      InvalidParameterException - the type name or qualified name is null or invalid
      UserNotAuthorizedException - this governance action service is not authorized to create a process
      PropertyServerException - there is a problem connecting to the metadata store
    • createChildProcess

      public String createChildProcess(String processTypeName, ElementStatus initialStatus, String qualifiedName, String name, String versionIdentifier, String description, String formula, ElementProperties extendedProperties, String parentGUID) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a process that represents the processing instance of this governance action.
      Specified by:
      createChildProcess in interface ProvisioningGovernanceContext
      Parameters:
      processTypeName - the type name of the process. This is the name of an open metadata type that inherits from "Process".
      initialStatus - status value of the process
      qualifiedName - the unique name of the new process
      name - the technical display name of the process
      versionIdentifier - version of the resource
      description - the description of the process
      formula - expression that describes the behaviour of the process
      extendedProperties - attributes introduced by subtypes of Process
      parentGUID - the unique identifier of the existing process to copy (this will copy all the attachments such as ports, nested content, schema, connection etc)
      Returns:
      unique identifier of the new process
      Throws:
      InvalidParameterException - the type name or qualified name is null or invalid
      UserNotAuthorizedException - this governance action service is not authorized to create a process
      PropertyServerException - there is a problem connecting to the metadata store
    • createPort

      public String createPort(String processGUID, String qualifiedName, String displayName, PortType portType) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Add a port to a process.
      Specified by:
      createPort in interface ProvisioningGovernanceContext
      Parameters:
      processGUID - unique identifier of the process
      qualifiedName - unique name for the port
      displayName - display name for the port
      portType - type of port (direction of data flow)
      Returns:
      unique identifier of the new port
      Throws:
      InvalidParameterException - the processGUID or qualified name is null or is invalid
      UserNotAuthorizedException - the governance action service is not authorized to create this type of element
      PropertyServerException - there is a problem with the metadata store
    • createLineageRelationship

      public String createLineageRelationship(String sourceElementGUID, String targetElementGUID) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a lineage mapping relationship between a source and target element. This could be between two assets, two process ports or two schema elements.
      Specified by:
      createLineageRelationship in interface ProvisioningGovernanceContext
      Parameters:
      sourceElementGUID - unique identifier of the element that describes the source of the data.
      targetElementGUID - unique identifier of the element that describes the destination of the data.
      Returns:
      unique identifier of the relationship
      Throws:
      InvalidParameterException - one of the GUIDs is null or is invalid
      UserNotAuthorizedException - the governance action service is not authorized to create this type of relationship
      PropertyServerException - there is a problem with the metadata store
    • createLineageRelationship

      public String createLineageRelationship(String relationshipName, String sourceElementGUID, String qualifiedName, String description, String formula, String targetElementGUID) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a lineage relationship between a source and target element. This could be between two assets, two process ports or two schema elements.
      Specified by:
      createLineageRelationship in interface ProvisioningGovernanceContext
      Parameters:
      relationshipName - either LineageMapping, ProcessCall, DataFlow, ControlFlow.
      sourceElementGUID - unique identifier of the element that describes the source of the data.
      qualifiedName - qualifiedName of the information supply chain
      targetElementGUID - unique identifier of the element that describes the destination of the data.
      description - description of the lineage activity
      formula - expression summa
      Returns:
      unique identifier of the relationship
      Throws:
      InvalidParameterException - one of the GUIDs is null or is invalid
      UserNotAuthorizedException - the governance action service is not authorized to create this type of relationship
      PropertyServerException - there is a problem with the metadata store
    • createMetadataElement

      public String createMetadataElement(String metadataElementTypeName, ElementProperties properties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a new metadata element in the metadata store. The type name comes from the open metadata types. The selected type also controls the names and types of the properties that are allowed. This metadata element will be given an initial status of ACTIVE which is sufficient for most types of elements.
      Specified by:
      createMetadataElement in interface RemediationGovernanceContext
      Parameters:
      metadataElementTypeName - type name of the new metadata element
      properties - properties of the new metadata element
      Returns:
      unique identifier of the new metadata element
      Throws:
      InvalidParameterException - the type name, status or one of the properties is invalid
      UserNotAuthorizedException - the governance action service is not authorized to create this type of element
      PropertyServerException - there is a problem with the metadata store
    • createMetadataElementInStore

      public String createMetadataElementInStore(String metadataElementTypeName, ElementStatus initialStatus, Map<String,ElementProperties> initialClassifications, String anchorGUID, boolean isOwnAnchor, Date effectiveFrom, Date effectiveTo, ElementProperties properties, String parentGUID, String parentRelationshipTypeName, ElementProperties parentRelationshipProperties, boolean parentAtEnd1) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a new metadata element in the metadata store. The type name comes from the open metadata types. The selected type also controls the names and types of the properties that are allowed. This version of the method allows access to advanced features such as multiple states and effectivity dates.
      Parameters:
      metadataElementTypeName - type name of the new metadata element
      initialStatus - initial status of the metadata element
      initialClassifications - map of classification names to classification properties to include in the entity creation request
      anchorGUID - unique identifier of the element that should be the anchor for the new element. Set to null if no anchor, or the Anchors classification is included in the initial classifications.
      isOwnAnchor - boolean flag to day that the element should be classified as its own anchor once its element is created in the repository.
      effectiveFrom - the date when this element is active - null for active on creation
      effectiveTo - the date when this element becomes inactive - null for active until deleted
      properties - properties of the new metadata element
      parentGUID - unique identifier of optional parent entity
      parentRelationshipTypeName - type of relationship to connect the new element to the parent
      parentRelationshipProperties - properties to include in parent relationship
      parentAtEnd1 - which end should the parent GUID go in the relationship
      Returns:
      unique identifier of the new metadata element
      Throws:
      InvalidParameterException - the type name, status or one of the properties is invalid
      UserNotAuthorizedException - the governance action service is not authorized to create this type of element
      PropertyServerException - there is a problem with the metadata store
    • createMetadataElement

      public String createMetadataElement(String metadataElementTypeName, ElementStatus initialStatus, Date effectiveFrom, Date effectiveTo, ElementProperties properties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a new metadata element in the metadata store. The type name comes from the open metadata types. The selected type also controls the names and types of the properties that are allowed. This version of the method allows access to advanced features such as multiple states and effectivity dates.
      Specified by:
      createMetadataElement in interface RemediationGovernanceContext
      Parameters:
      metadataElementTypeName - type name of the new metadata element
      initialStatus - initial status of the metadata element
      effectiveFrom - the date when this element is active - null for active on creation
      effectiveTo - the date when this element becomes inactive - null for active until deleted
      properties - properties of the new metadata element
      Returns:
      unique identifier of the new metadata element
      Throws:
      InvalidParameterException - the type name, status or one of the properties is invalid
      UserNotAuthorizedException - the governance action service is not authorized to create this type of element
      PropertyServerException - there is a problem with the metadata store
    • updateMetadataElement

      public void updateMetadataElement(String metadataElementGUID, boolean replaceProperties, boolean forLineage, boolean forDuplicateProcessing, ElementProperties properties, Date effectiveTime) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the properties of a specific metadata element. The properties must match the type definition associated with the metadata element when it was created. However, it is possible to update a few properties, or replace all them by the value used in the replaceProperties flag.
      Specified by:
      updateMetadataElement in interface RemediationGovernanceContext
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      replaceProperties - flag to indicate whether to completely replace the existing properties with the new properties, or just update the individual properties specified on the request.
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      properties - new properties for the metadata element
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      Throws:
      InvalidParameterException - either the unique identifier or the properties are invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to update this element
      PropertyServerException - there is a problem with the metadata store
    • updateMetadataElementStatus

      public void updateMetadataElementStatus(String metadataElementGUID, boolean forLineage, boolean forDuplicateProcessing, ElementStatus newElementStatus, Date effectiveTime) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the status of specific metadata element. The new status must match a status value that is defined for the element's type assigned when it was created. The effectivity dates control the visibility of the element through specific APIs.
      Specified by:
      updateMetadataElementStatus in interface RemediationGovernanceContext
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      newElementStatus - new status value - or null to leave as is
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      Throws:
      InvalidParameterException - either the unique identifier or the status are invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to update this element
      PropertyServerException - there is a problem with the metadata store
    • updateMetadataElementEffectivity

      public void updateMetadataElementEffectivity(String metadataElementGUID, boolean forLineage, boolean forDuplicateProcessing, Date effectiveFrom, Date effectiveTo, Date effectiveTime) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the status of specific metadata element. The new status must match a status value that is defined for the element's type assigned when it was created. The effectivity dates control the visibility of the element through specific APIs.
      Specified by:
      updateMetadataElementEffectivity in interface RemediationGovernanceContext
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      effectiveFrom - the date when this element is active - null for active now
      effectiveTo - the date when this element becomes inactive - null for active until deleted
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      Throws:
      InvalidParameterException - either the unique identifier or the status are invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to update this element
      PropertyServerException - there is a problem with the metadata store
    • deleteMetadataElement

      public void deleteMetadataElement(String metadataElementGUID, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Delete a specific metadata element.
      Specified by:
      deleteMetadataElement in interface RemediationGovernanceContext
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      Throws:
      InvalidParameterException - the unique identifier is null or invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to delete this element
      PropertyServerException - there is a problem with the metadata store
    • classifyMetadataElement

      public void classifyMetadataElement(String metadataElementGUID, String classificationName, boolean forLineage, boolean forDuplicateProcessing, ElementProperties properties, Date effectiveTime) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Add a new classification to the metadata element. Note that only one classification with the same name can be attached to a metadata element.
      Specified by:
      classifyMetadataElement in interface RemediationGovernanceContext
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      classificationName - name of the classification to add (if the classification is already present then use reclassify)
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      properties - properties to store in the new classification. These must conform to the valid properties associated with the classification name
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      Throws:
      InvalidParameterException - the unique identifier or classification name is null or invalid in some way; properties do not match the valid properties associated with the classification's type definition
      UserNotAuthorizedException - the governance action service is not authorized to update this element
      PropertyServerException - there is a problem with the metadata store
    • classifyMetadataElement

      public void classifyMetadataElement(String metadataElementGUID, String classificationName, boolean forLineage, boolean forDuplicateProcessing, Date effectiveFrom, Date effectiveTo, ElementProperties properties, Date effectiveTime) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Add a new classification to the metadata element. Note that only one classification with the same name can be attached to a metadata element.
      Specified by:
      classifyMetadataElement in interface RemediationGovernanceContext
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      classificationName - name of the classification to add (if the classification is already present then use reclassify)
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      effectiveFrom - the date when this classification is active - null for active now
      effectiveTo - the date when this classification becomes inactive - null for active until deleted
      properties - properties to store in the new classification. These must conform to the valid properties associated with the classification name
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      Throws:
      InvalidParameterException - the unique identifier or classification name is null or invalid in some way; properties do not match the valid properties associated with the classification's type definition
      UserNotAuthorizedException - the governance action service is not authorized to update this element
      PropertyServerException - there is a problem with the metadata store
    • reclassifyMetadataElement

      public void reclassifyMetadataElement(String metadataElementGUID, String classificationName, boolean replaceProperties, boolean forLineage, boolean forDuplicateProcessing, ElementProperties properties, Date effectiveTime) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the properties of a classification that is currently attached to a specific metadata element.
      Specified by:
      reclassifyMetadataElement in interface RemediationGovernanceContext
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      classificationName - unique name of the classification to update
      replaceProperties - flag to indicate whether to completely replace the existing properties with the new properties, or just update the individual properties specified on the request.
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      properties - new properties for the classification
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      Throws:
      InvalidParameterException - the unique identifier or classification name is null or invalid in some way; properties do not match the valid properties associated with the classification's type definition
      UserNotAuthorizedException - the governance action service is not authorized to update this element/classification
      PropertyServerException - there is a problem with the metadata store
    • updateClassificationStatus

      public void updateClassificationStatus(String metadataElementGUID, String classificationName, boolean forLineage, boolean forDuplicateProcessing, Date effectiveFrom, Date effectiveTo, Date effectiveTime) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the effectivity dates of a specific classification attached to a metadata element. The effectivity dates control the visibility of the classification through specific APIs.
      Specified by:
      updateClassificationStatus in interface RemediationGovernanceContext
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      classificationName - unique name of the classification to update
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      effectiveFrom - the date when this element is active - null for active now
      effectiveTo - the date when this element becomes inactive - null for active until deleted
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      Throws:
      InvalidParameterException - either the unique identifier or the status are invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to update this element
      PropertyServerException - there is a problem with the metadata store
    • declassifyMetadataElement

      public void declassifyMetadataElement(String metadataElementGUID, String classificationName, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Remove the named classification from a specific metadata element.
      Specified by:
      declassifyMetadataElement in interface RemediationGovernanceContext
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      classificationName - unique name of the classification to remove
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      Throws:
      InvalidParameterException - the unique identifier or classification name is null or invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to remove this classification
      PropertyServerException - there is a problem with the metadata store
    • createRelatedElements

      public String createRelatedElements(String relationshipTypeName, String metadataElement1GUID, String metadataElement2GUID, boolean forLineage, boolean forDuplicateProcessing, ElementProperties properties, Date effectiveTime) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a relationship between two metadata elements. It is important to put the right element at each end of the relationship according to the type definition since this will affect how the relationship is interpreted.
      Specified by:
      createRelatedElements in interface RemediationGovernanceContext
      Parameters:
      relationshipTypeName - name of the type of relationship to create. This will determine the types of metadata elements that can be related and the properties that can be associated with this relationship.
      metadataElement1GUID - unique identifier of the metadata element at end 1 of the relationship
      metadataElement2GUID - unique identifier of the metadata element at end 2 of the relationship
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      properties - the properties of the relationship
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      Returns:
      unique identifier of the new relationship
      Throws:
      InvalidParameterException - the unique identifier's of the metadata elements are null or invalid in some way; the properties are not valid for this type of relationship
      UserNotAuthorizedException - the governance action service is not authorized to create this type of relationship
      PropertyServerException - there is a problem with the metadata store
    • createRelatedElements

      public String createRelatedElements(String relationshipTypeName, String metadataElement1GUID, String metadataElement2GUID, boolean forLineage, boolean forDuplicateProcessing, Date effectiveFrom, Date effectiveTo, ElementProperties properties, Date effectiveTime) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a relationship between two metadata elements. It is important to put the right element at each end of the relationship according to the type definition since this will affect how the relationship is interpreted.
      Specified by:
      createRelatedElements in interface RemediationGovernanceContext
      Parameters:
      relationshipTypeName - name of the type of relationship to create. This will determine the types of metadata elements that can be related and the properties that can be associated with this relationship.
      metadataElement1GUID - unique identifier of the metadata element at end 1 of the relationship
      metadataElement2GUID - unique identifier of the metadata element at end 2 of the relationship
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      effectiveFrom - the date when this element is active - null for active now
      effectiveTo - the date when this element becomes inactive - null for active until deleted
      properties - the properties of the relationship
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      Returns:
      unique identifier of the new relationship
      Throws:
      InvalidParameterException - the unique identifier's of the metadata elements are null or invalid in some way; the properties are not valid for this type of relationship
      UserNotAuthorizedException - the governance action service is not authorized to create this type of relationship
      PropertyServerException - there is a problem with the metadata store
    • updateRelatedElements

      public void updateRelatedElements(String relationshipGUID, boolean replaceProperties, boolean forLineage, boolean forDuplicateProcessing, ElementProperties properties, Date effectiveTime) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the properties associated with a relationship.
      Specified by:
      updateRelatedElements in interface RemediationGovernanceContext
      Parameters:
      relationshipGUID - unique identifier of the relationship to update
      replaceProperties - flag to indicate whether to completely replace the existing properties with the new properties, or just update the individual properties specified on the request.
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      properties - new properties for the relationship
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      Throws:
      InvalidParameterException - the unique identifier of the relationship is null or invalid in some way; the properties are not valid for this type of relationship
      UserNotAuthorizedException - the governance action service is not authorized to update this relationship
      PropertyServerException - there is a problem with the metadata store
    • updateRelatedElementsStatus

      public void updateRelatedElementsStatus(String relationshipGUID, boolean forLineage, boolean forDuplicateProcessing, Date effectiveFrom, Date effectiveTo, Date effectiveTime) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the effectivity dates of a specific relationship between metadata elements. The effectivity dates control the visibility of the classification through specific APIs.
      Specified by:
      updateRelatedElementsStatus in interface RemediationGovernanceContext
      Parameters:
      relationshipGUID - unique identifier of the relationship to update
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      effectiveFrom - the date when this element is active - null for active now
      effectiveTo - the date when this element becomes inactive - null for active until deleted
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      Throws:
      InvalidParameterException - either the unique identifier or the status are invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to update this element
      PropertyServerException - there is a problem with the metadata store
    • deleteRelatedElements

      public void deleteRelatedElements(String relationshipGUID, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Delete a relationship between two metadata elements.
      Specified by:
      deleteRelatedElements in interface RemediationGovernanceContext
      Parameters:
      relationshipGUID - unique identifier of the relationship to delete
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      Throws:
      InvalidParameterException - the unique identifier of the relationship is null or invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to delete this relationship
      PropertyServerException - there is a problem with the metadata store
    • linkElementsAsPeerDuplicates

      public void linkElementsAsPeerDuplicates(String metadataElement1GUID, String metadataElement2GUID, int statusIdentifier, String steward, String stewardTypeName, String stewardPropertyName, String source, String notes, boolean setKnownDuplicate) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Link elements as peer duplicates. Create a simple relationship between two elements. If the relationship already exists, the properties are updated.
      Specified by:
      linkElementsAsPeerDuplicates in interface RemediationGovernanceContext
      Parameters:
      metadataElement1GUID - unique identifier of the metadata element at end 1 of the relationship
      metadataElement2GUID - unique identifier of the metadata element at end 2 of the relationship
      statusIdentifier - what is the status of this relationship (negative means untrusted, 0 means unverified and positive means trusted)
      steward - identifier of the steward
      stewardTypeName - type of element used to identify the steward
      stewardPropertyName - property name used to identify steward
      source - source of the duplicate detection processing
      notes - notes for the steward
      setKnownDuplicate - boolean flag indicating whether the KnownDuplicate classification should be set on the linked entities.
      Throws:
      InvalidParameterException - the unique identifier's of the metadata elements are null or invalid in some way; the properties are not valid for this type of relationship
      UserNotAuthorizedException - the governance action service is not authorized to create this type of relationship
      PropertyServerException - there is a problem with the metadata store
    • linkConsolidatedDuplicate

      public void linkConsolidatedDuplicate(String consolidatedElementGUID, int statusIdentifier, String steward, String stewardTypeName, String stewardPropertyName, String source, String notes, List<String> sourceElementGUIDs) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Identify an element that acts as a consolidated version for a set of duplicate elements. (The consolidated element is created using createMetadataElement.)
      Specified by:
      linkConsolidatedDuplicate in interface RemediationGovernanceContext
      Parameters:
      consolidatedElementGUID - unique identifier of the metadata element
      statusIdentifier - what is the status of this relationship (negative means untrusted, 0 means unverified and positive means trusted)
      steward - identifier of the steward
      stewardTypeName - type of element used to identify the steward
      stewardPropertyName - property name used to identify steward
      source - source of the duplicate detection processing
      notes - notes for the steward
      sourceElementGUIDs - List of the source elements that must be linked to the consolidated element. It is assumed that they already have the KnownDuplicateClassification.
      Throws:
      InvalidParameterException - the unique identifier's of the metadata elements are null or invalid in some way; the properties are not valid for this type of relationship
      UserNotAuthorizedException - the governance action service is not authorized to create this type of relationship
      PropertyServerException - there is a problem with the metadata store
    • openToDo

      public String openToDo(String toDoQualifiedName, String title, String instructions, int priority, Date dueDate, String assignTo) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a To-Do request for someone to work on.
      Specified by:
      openToDo in interface TriageGovernanceContext
      Parameters:
      toDoQualifiedName - unique name for the to do. (Could be the engine name and a guid?)
      title - short meaningful phrase for the person receiving the request
      instructions - further details on what to do
      priority - priority value (based on organization's scale)
      dueDate - date/time this needs to be completed
      assignTo - qualified name of the PersonRole element for the recipient
      Returns:
      unique identifier of new to do element
      Throws:
      InvalidParameterException - either todoQualifiedName or assignedTo are null or not recognized
      UserNotAuthorizedException - the governance action service is not authorized to create a to-do
      PropertyServerException - there is a problem connecting to (or inside) the metadata store
    • registerListener

      public void registerListener(WatchdogGovernanceListener listener, List<WatchdogEventType> interestingEventTypes, List<String> interestingMetadataTypes, String specificInstance) throws InvalidParameterException
      Register a listener to receive events about changes to metadata elements in the open metadata store. There can be only one registered listener. If this method is called more than once, the new parameters replace the existing parameters. This means the watchdog governance action service can change the listener and the parameters that control the types of events received while it is running.

      The types of events passed to the listener are controlled by the combination of the interesting event types and the interesting metadata types. That is an event is only passed to the listener if it matches both the interesting event types and the interesting metadata types.

      If specific instance, interestingEventTypes or interestingMetadataTypes are null, it defaults to "any". If the listener parameter is null, no more events are passed to the listener. The type name specified in the interestingMetadataTypes refers to the subject of the event - so it is the type of the metadata element for metadata element types, the type of the relationship for related elements events and the name of the classification for classification events.
      Specified by:
      registerListener in interface WatchdogGovernanceContext
      Parameters:
      listener - listener object to receive events
      interestingEventTypes - types of events that should be passed to the listener
      interestingMetadataTypes - types of elements that are the subject of the interesting event types
      specificInstance - unique identifier of a specific instance (metadata element or relationship) to watch for
      Throws:
      InvalidParameterException - one or more of the type names are unrecognized
    • disconnectListener

      public void disconnectListener()
      Unregister the listener permanently from the event infrastructure.
      Specified by:
      disconnectListener in interface WatchdogGovernanceContext
    • initiateEngineAction

      public String initiateEngineAction(String qualifiedName, int domainIdentifier, String displayName, String description, List<String> requestSourceGUIDs, List<NewActionTarget> actionTargets, Date startTime, String governanceEngineName, String requestType, Map<String,String> requestParameters) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a governance action in the metadata store which will trigger the governance action service associated with the supplied request type. The governance action remains to act as a record of the actions taken for auditing.
      Specified by:
      initiateEngineAction in interface WatchdogGovernanceContext
      Parameters:
      qualifiedName - unique identifier to give this governance action
      domainIdentifier - governance domain associated with this action (0=ALL)
      displayName - display name for this action
      description - description for this action
      requestSourceGUIDs - request source elements for the resulting governance action service
      actionTargets - map of action target names to GUIDs for the resulting governance action service
      startTime - future start time or null for "as soon as possible".
      governanceEngineName - name of the governance engine to run the request
      requestType - request type to identify the governance action service to run
      requestParameters - properties to pass to the governance action service
      Returns:
      unique identifier of the governance action
      Throws:
      InvalidParameterException - null qualified name
      UserNotAuthorizedException - this governance action service is not authorized to create a governance action
      PropertyServerException - there is a problem with the metadata store
    • initiateEngineAction

      public String initiateEngineAction(String qualifiedName, int domainIdentifier, String displayName, String description, List<String> requestSourceGUIDs, List<NewActionTarget> actionTargets, Date startTime, String governanceEngineName, String requestType, Map<String,String> requestParameters, String processName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a governance action in the metadata store which will trigger the governance action service associated with the supplied request type. The governance action remains to act as a record of the actions taken for auditing.
      Specified by:
      initiateEngineAction in interface WatchdogGovernanceContext
      Parameters:
      qualifiedName - unique identifier to give this governance action
      domainIdentifier - governance domain associated with this action (0=ALL)
      displayName - display name for this action
      description - description for this action
      requestSourceGUIDs - request source elements for the resulting governance action service
      actionTargets - map of action target names to GUIDs for the resulting governance action service
      startTime - future start time or null for "as soon as possible".
      governanceEngineName - name of the governance engine to run the request
      requestType - request type to identify the governance action service to run
      requestParameters - properties to pass to the governance action service
      processName - name of the process that this action is a part of
      Returns:
      unique identifier of the governance action
      Throws:
      InvalidParameterException - null qualified name
      UserNotAuthorizedException - this governance action service is not authorized to create a governance action
      PropertyServerException - there is a problem with the metadata store
    • initiateGovernanceActionProcess

      public String initiateGovernanceActionProcess(String processQualifiedName, Map<String,String> requestParameters, List<String> requestSourceGUIDs, List<NewActionTarget> actionTargets, Date startTime) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Using the named governance action process as a template, initiate a chain of governance actions.
      Specified by:
      initiateGovernanceActionProcess in interface WatchdogGovernanceContext
      Parameters:
      processQualifiedName - unique name of the governance action process to use
      requestParameters - request parameters to pass to the governance actions called in the governance action process
      requestSourceGUIDs - request source elements for the resulting governance action service
      actionTargets - map of action target names to GUIDs for the resulting governance action service
      startTime - future start time or null for "as soon as possible".
      Returns:
      unique identifier of the first governance action of the process
      Throws:
      InvalidParameterException - null or unrecognized qualified name of the process
      UserNotAuthorizedException - this governance action service is not authorized to create a governance action process
      PropertyServerException - there is a problem with the metadata store
    • toString

      public String toString()
      Standard toString method.
      Overrides:
      toString in class Object
      Returns:
      print out of variables in a JSON-style