Class DarwinProductDependencyManagerConnector
- All Implemented Interfaces:
AuditLoggingComponent,SecureConnectorExtension,VirtualConnectorExtension,IntegrationConnector
- Schema elements to the data fabric. A DataMapping relationship between two schema elements - or between a schema element and a process - shows data being copied from one to the other. Where the two ends belong to different data fabric elements (a schema element belongs to the data asset it is anchored to; a process is its own), data flows from the first to the second, so a DataFlow relationship is maintained between them.
- The data fabric to the system fabric. An item of IT infrastructure supports software capabilities (through the SupportedSoftwareCapability relationship), and a capability uses data assets and processes (through the CapabilityAssetUse relationship - with a useType of OWNS for a data asset, and any useType for a process). Where the lineage leads - directly or through intermediate elements - from an element used by one item's capabilities to an element used by another's, a relationship is maintained between the two items: a DataFlow for data lineage, a ProcessCall where a ProcessCall reaches the element, and a ControlFlow for a path of ControlFlow relationships.
- Data assets to digital products. The assets that are members of a digital product (through the CollectionMembership relationship) are the start of paths followed downstream through the data lineage. A path may pass through any number of intermediate elements - processes, assets that belong to no product - but every relationship on it must belong to the same information supply chain (the iscQualifiedName of the lineage relationship). When the path reaches an asset that is a member of another product, that product depends on the product the path started from, through that information supply chain, so a DigitalProductDependency relationship is maintained between the products. The path stops there: the dependency on anything further downstream belongs to the product just reached.
The information supply chain of the finer-grained relationship is carried up onto the coarser one, and because every one of these relationship types is multi-link there is one relationship per information supply chain between the same two elements. Each level is reconciled with the relationships in the repository the same way. Relationships this connector created itself - recognized by the createdBy in their header - are removed when the finer-grained lineage no longer supports them, and missing ones are created. Relationships asserted by external users take precedence and are never removed: one whose information supply chain is not set is given the supply chain of the first finer-grained lineage that proves it.
When following the data fabric's lineage, a data set and the content it is a view over (DataSetContent) are treated as the same element, so a product whose member is an abstract data set reaches the lineage attached to the physical elements beneath it.
A relationship that names no information supply chain is treated as "supply chain unknown": it can join a path of any supply chain, and a path whose relationships name none proves a relationship of any supply chain in the layer above. Once a path's supply chain is known - from a relationship on it or from the external relationship it proves - the untagged external relationships on it are given that supply chain at the end of the refresh: filled in where one supply chain is known for them, and copied once for each supply chain where there are several.
An externally asserted relationship that the lineage beneath it does not prove is recorded as an exception, provided the layer beneath is catalogued for both of its ends - otherwise the missing detail is no evidence against it, and it is only counted as unchecked. The connector has an ExceptionType for each relationship type, created on first use, and links it to each element with unproven relationships of that type - the element the data or control reaches, or the dependent product - with an Exception relationship whose affectedRelationships property lists the unproven relationships. The exception is updated as the list changes and removed once nothing on it is left.
A relationship this connector created that someone else has since updated has been adopted. It is treated from then on as asserted by an external user: it is no longer updated or removed, and is validated like any other external relationship.
This connector works across the whole open metadata ecosystem rather than through catalog targets, which is why it extends IntegrationConnectorBase rather than DynamicIntegrationConnectorBase. Each refresh reconciles from a fresh snapshot, so nothing is carried between refreshes but the identities of the exception types.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.odpi.openmetadata.frameworks.connectors.ConnectorBase
ConnectorBase.ProtectedConnection -
Field Summary
Fields inherited from class org.odpi.openmetadata.frameworks.integration.connectors.IntegrationConnectorBase
catalogTargetsManager, connectorName, integrationContext, propertyHelperFields inherited from class org.odpi.openmetadata.frameworks.connectors.ConnectorBase
auditLog, connectionBean, connectorInstanceId, embeddedConnectors, messageFormatter, secretsStoreConnectorMap -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidFree up any resources held since the connector is no longer needed.voidrefresh()Bring the coarse-grained lineage into line with the finer-grained lineage beneath it, working upwards across the boundaries between the layers: data mappings between schema elements to data flows between assets in the data fabric, then lineage in the data fabric to data flows between servers in the system fabric and to dependencies between digital products in the data mesh.voidstart()Indicates that the connector is completely configured and can begin processing.Methods inherited from class org.odpi.openmetadata.frameworks.integration.connectors.IntegrationConnectorBase
engage, getConnectorComponentDescription, getNetworkAddress, passEventToCatalogTargets, refreshCatalogTargets, setAuditLog, setConnectorName, setContextMethods inherited from class org.odpi.openmetadata.frameworks.connectors.ConnectorBase
combineConfigurationProperties, disconnectConnectors, equals, fromCamelToCanonicalCase, fromCanonicalToCamelCase, fromCanonicalToKebabCase, fromCanonicalToSnakeCase, fromKebabToCanonicalCase, fromSnakeToCanonicalCase, getArrayConfigurationProperty, getArrayConfigurationProperty, getArrayConfigurationProperty, getArrayValue, getBooleanConfigurationProperty, getConnection, getConnectorInstanceId, getDateConfigurationProperty, getIntConfigurationProperty, getLongConfigurationProperty, getSecretsCollectionName, getSecretsLocation, getSecretsProvider, getStringConfigurationProperty, getStringConfigurationProperty, getSuppliedPlaceholderProperties, hashCode, initialize, initializeEmbeddedConnectors, initializeSecretsStoreConnector, isActive, logExceptionRecord, logExceptionRecord, logRecord, logRecord, throwMissingConfigurationProperty, throwMissingElement, throwMissingEndpointAddress, throwMissingResource, throwNoAsset, throwWrongTypeOfAsset, throwWrongTypeOfResource, throwWrongTypeOfRootSchema, toStringMethods inherited from class org.odpi.openmetadata.frameworks.connectors.Connector
clearStatisticProperty, clearStatisticTimestamp, getConnectorStatistics, getStatisticCounter, getStatisticProperty, getStatisticTimestamp, incrementStatisticCounter, initializeStatisticCounter, refreshStatistics, setStatisticProperty, setStatisticTimestampMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.odpi.openmetadata.frameworks.connectors.VirtualConnectorExtension
initializeEmbeddedConnectors
-
Constructor Details
-
DarwinProductDependencyManagerConnector
public DarwinProductDependencyManagerConnector()
-
-
Method Details
-
start
Indicates that the connector is completely configured and can begin processing.- Specified by:
startin interfaceIntegrationConnector- Overrides:
startin classIntegrationConnectorBase- Throws:
ConnectorCheckedException- the connector detected a problem.UserNotAuthorizedException- the connector was disconnected during start up
-
refresh
Bring the coarse-grained lineage into line with the finer-grained lineage beneath it, working upwards across the boundaries between the layers: data mappings between schema elements to data flows between assets in the data fabric, then lineage in the data fabric to data flows between servers in the system fabric and to dependencies between digital products in the data mesh. The data fabric's derived data flows are written to the repository before the data fabric is read, so that the layers above see them.- Throws:
ConnectorCheckedException- a problem with the connector. It is unable to refresh the metadata.UserNotAuthorizedException- the connector was disconnected so stop refresh processing
-
disconnect
Free up any resources held since the connector is no longer needed.- Specified by:
disconnectin interfaceIntegrationConnector- Overrides:
disconnectin classIntegrationConnectorBase- Throws:
ConnectorCheckedException- the connector detected a problem.
-