Mapping between AssetTypes and DomainTypes in Collibra - metadata

From Collibra Documentation (https://university.collibra.com/knowledge/collibra-body-of-knowledge/data-governance-operating-model/organizational-concepts/domain-types/)
A Domain Type formally defines which types of Assets can be created in the Domain. In other words it serves as a template. By assigning asset types to a domain type, you can specify which asset types can be created within which domain type.
Is there any such strict mapping in place? Can a user create a mapping between domain type and asset type? Is there any way, through REST APIs / Java Connectors, that these mappings can be createt or retrived?

In Collibra certain domain type has a certain asset type under it. This means from one domain is a physical dictionary then you can have Column Asset, Code and code number asset and etc. To create a separate mapping, you need to have System admin rights. If you do then the first step is to go to setting —> Domain type -> Select the domain type you want to map —> go to characteristics in that domain —> then check Mark on whichever asset type you want to map.
The second step is to create a relationship between that domain and assets if you want to retrieve any data or hierarchy. You can create relationships from setting only where you also need system admin's rights.
Let me know if you have any follow up on this.
(Share a screenshot or details if still has query)

Related

Unable to find other entity-type in Apache Atlas . Only Showing hdfs_path

Hi I am new to Apache Atlas . And I am facing a problem.
I want to create a hive_table entity type manually but in Entity type drop downs its showing only "hdfs_path"
Can anyone let me know how I can use a custom entity type in apache Atlas.
And can anyone provide me a good documentation part or tutorial apart form Apche Atlas site.
Here is the photo where I want to add a new entity type
TL;DR: you need to apply the following setting to atlas-application.properties, and restart:
atlas.ui.editable.entity.types=<your entity types>
Note that <your entity types> can be a comma-separated list, like hdfs_path,kafka_topic or, to just allow all Types to be created and edited via the UI, use a star *.
I guess the reason for this restrictive default is because metadata in Atlas is normally synchronised from other systems using hooks and bridges. So in order to keep the metadata "consistent" (i.e. prevent the risk of people creating metadata entries in Atlas which do not correspond to actual data assets existing in the referenced systems), by default editing Entity Types via the UI is locked down.
Reference: https://issues.apache.org/jira/browse/ATLAS-3237
hive_table entity should be synced using import scripts.
"hdfs_path" is not synced automatically unless they belong to lineage, hence the option to create them manually.
However, if you want to create them manually, please check the following link, which has the steps:-
https://community.cloudera.com/t5/Support-Questions/How-to-create-hive-table-entity-in-Apache-atlas-using-REST/td-p/173644

REST convention and backend endpoints URI mappings and methods placement

I've got an issue with REST naming convention and backend endpoints placement. Let's assume that we have a system which has domain objects like: Product and Survey. Each product has some survey attached to it. Survey is a form which has questions which users fill when they rate the product. I would like to have operation like 'get survey for product with concrete id'. Possible endpoints in my opinion are:
/survey/product/{idProduct}
/product/{idProduct}/survey
More logical and natural is the second option. But now problem is with Controllers. We have ProductController and SurveyController. ProductController is mapped by root URI /product and SurveyController is mapped with /survey URI. So each method which starts with /product should be placed in ProductController, same with /survey.
If we choose second option then we should put concrete method which gets survey for product in the ProductController. But it can be confusing that ProductController serves Survey. It should rather operate on Product. More natural way for developer is that SurveyController returns Survey. It does not matter that ProductController uses SurveyService e.g. to get survey for concrete product. We can always use mapping in SurveyController where we put method which returns survey for concrete product and is mapped by URI /product/{id}/survey but this can be also confusing and time consuming for developer to find method declaration and we cannot annotate controller with some root URI path.
What is better? To use strict convention that URI which starts with e.g. /product is always assigned with ProductController and developer can quickly find method by URI, but method can serve different domain objects, not only Product or to use different URIs with some root path across different controllers?
Problem can look simple if we have few controllers and few domain objects. But what when we consider system with about 100 domain objects?
With 100 domain objects, one has usually some kind of structure for orientation. That means a dependency graph which somewhat dictates how to split the domain, even into separate projects, or separate runnable applications (microservices). So incidentally a larger model actually is "easier".
I would probably think about which resource is at the core of my model. For example if a Product may exists without a survey, but a Survey does not make sense without a Product, I would perhaps make the media-type of Survey link to a Product, rather than the other way. Which would probably look like:
/survey/123 <-- contains link to /product/456
In practice this means that you don't have to actually provide "subresources" like what you proposed.

multi-select tagged value type in enterprise architect

I am trying to add a Tagged Value in Enterprise Architect which allows the selection of one or more values, a multi-select tagged value type in effect.
Is this possible?
Xstian's answer is partially correct if you're working with profiles. However, it only provides you with a select-from-a-list tag type (and you should not import profiles directly into a project, you should create MDG Technologies instead).
EA also allows you to create what are known as structured tagged values. These come in different flavours, and allow you to select a value from an enum list, a file name from a browser dialog, a date from a calendar, and many others -- including classes in the same model.
These tagged value types are configured in Settings - UML Types - Tagged Value Types. The syntax is described in the help file under Extending UML Models - MDG Technology SDK - Tagged Value Types - Predefined Types (but note that you do not need to create an MDG Technology or even a profile for these tag types to work).
You can add to any model element more than one tagged value of the same name - each of them can have different value. Together they logically constitute "set of values" (i.e. multi-valued tag).
Yes it is.
I solved in this way.
You should create a your Stereotype
http://www.sparxsystems.com/enterprise_architect_user_guide/10/extending_uml_models/addingelementsandmetaclass.html
(e.g. see image)
You should export this profile in XML and import it into EnterpriseArchitect
http://www.sparxsystems.com/enterprise_architect_user_guide/10/extending_uml_models/importingprofiles.html
Add this stereotype to your class,connector, etc
I hope I've given you all the answers about your question

How to store only metadata for an object of type sys:base or cm:object in Alfresco Share?

How to store only metadata for an object of type sys:base or cm:object? I have a type which is sub-type of sys:base. I need to store the metadata of it.
My doubts are:
1. Where should the data be stored?
How to retrieve the data, as in content and folder you can see the appearance as icon in the company home or user home etc. How does the metadata appear in a folder(is it like an icon of cm:object)?
With reference to the question posted earlier in alfresco forum (http://forums.alfresco.com/forum/developer-discussions/content-modeling/can-i-store-only-metadata-alfresco-11292012-0437) should the object be of type cm:content to store the metadata (except that they do not have a content property). Is there anyway to create metadata other than being subtype of cm:content?
Thank you
You can store metadata on instances of any type as long as the content model includes properties that meet your needs. Those might be out-of-the-box types or they might be custom types.
If you need to create objects that have a content stream, use cm:content. If you don't need to set a content stream you might consider using one of the two types you mentioned. But it won't necessarily hurt anything if you elect to simply create instances of cm:content that don't have a content stream.
If you want to use sys:base or cm:object, simply create an instance of either of those types. Alternatively, define your own sub-type of those types then instantiate that custom type and set your metadata.
If you don't know how to define custom types or you are unsure about how to set, update, or query metadata, you could start by reading this tutorial.
Also note that if you create instances of any type other than cm:content, cm:folder, or a custom type that inherits from one of those two types, you will be unable to do that using CMIS. That isn't the end of the world, just be aware that it is currently a limitation. Someday Alfresco will support the "item" type which is new in CMIS 1.1, but until then, CMIS in Alfresco can only work with documents, folders, and your custom types that inherit from those types.

How to combine fields from modules?

The scenario is that there are 3 modules.
an abstract address module.
a 1:1 relationship between addresses and objects + a role (like opportunities_contacts described here)
an object module
In objects there should be address fields showing up dependent on a dropdown.
If the object is of type Museum -> one address with role 'main', is it of type X -> 3 addresses with roles 'a','b','c'...
The addresses should appear as if they were belonging to the module itself (for reproting, campaigns...). Addresses entered in the object module should create a role dependent on the dropdown (for example: 'main' and 'alternative').
Besides that there should always be a Subpanel for addresses with additional roles.
What needs to be done to integrate fields from addresses module into this objects module?
Could one also use this to override the default accounts/contacts/leads structure without breaking campaigns module...?
You can leverage Sugar Logic or use a technique like this...
http://developers.sugarcrm.com/wordpress/2012/03/13/howto-grab-fields-from-a-related-record-without-sugar-logic/