Hello, Thank you very much,
This has been of great help. Best regards, Joan 2018-01-05 9:05 GMT+01:00 Madhan Neethiraj <[email protected]>: > Joan, > > > > A slightly better approach is to provide repository entity as a separate > entry in “entities” and refer to the repository in database entity using > its temp-id, as shown below. > > > > This approach will allow an entity be referenced from multiple entities > using its temp-id (instead of adding the entire entity details in each such > reference). > > > > Madhan > > > > { > > "message": { > > "type": "ENTITY_FULL_UPDATE", > > "user": "user", > > "entities": [ > > { > > "jsonClass": "org.apache.atlas.typesystem. > json.InstanceSerialization$_Reference", > > "id": { > > "jsonClass": "org.apache.atlas.typesystem. > json.InstanceSerialization$_Id", > > "id": "-14568879465268", > > "typeName": "database", > > "state": "ACTIVE", > > "version": 0 > > }, > > "typeName": "database", > > "values": { > > "dbName": "Test7", > > "description": "Test db7", > > "name": "Testdb7", > > "origin_app": "origin", > > "origin_username": "externalusername", > > "owner": "owner", > > "qualifiedName": "Testdb5", > > "repository": { > > "jsonClass": "org.apache.atlas.typesystem. > json.InstanceSerialization$_Id", > > "id": "-14568879465269", > > "typeName": "repository", > > "state": "ACTIVE", > > "version": 0 > > } > > }, > > "traitNames": [], > > "traits": {} > > }, > > { > > "jsonClass": "org.apache.atlas.typesystem. > json.InstanceSerialization$_Reference", > > "id": { > > "jsonClass": "org.apache.atlas.typesystem. > json.InstanceSerialization$_Id", > > "id": "-14568879465269", > > "typeName": "repository", > > "state": "ACTIVE", > > "version": 0 > > }, > > "typeName": "repository", > > "values": { > > "qualifiedName": "repository01" > > }, > > "traitNames": [], > > "traits": {} > > } > > ] > > }, > > "version": { > > "version": "1.0.0" > > } > > } > > > > *From: *Madhan Neethiraj <[email protected]> > *Date: *Thursday, January 4, 2018 at 11:18 PM > *To: *"[email protected]" <[email protected]> > *Subject: *Re: Relating to an entity using uniqueAttributes > > > > Joan, > > > > To refer to another entity In Atlas hook notifications, add the referred > entity details as shown below. Also, I would suggest using > ENTITY_FULL_UPDATE as message type (instead of ENTITY_CREATE). > > > > { > > "message": { > > "type": "ENTITY_FULL_UPDATE", > > "user": "user", > > "entities": [ > > { > > "jsonClass": "org.apache.atlas.typesystem. > json.InstanceSerialization$_Reference", > > "id": { > > "jsonClass": "org.apache.atlas.typesystem. > json.InstanceSerialization$_Id", > > "id": "-14568879465268", > > "typeName": "database", > > "state": "ACTIVE", > > "version": 0 > > }, > > "typeName": "database", > > "values": { > > "dbName": "Test7", > > "description": "Test db7", > > "name": "Testdb7", > > "origin_app": "origin", > > "origin_username": "externalusername", > > "owner": "owner", > > "qualifiedName": "Testdb5", > > "repository": { > > "jsonClass": "org.apache.atlas.typesystem. > json.InstanceSerialization$_Reference", > > "id": { > > "jsonClass": "org.apache.atlas.typesystem. > json.InstanceSerialization$_Id", > > "id": "-14568879465269", > > "typeName": "repository", > > "state": "ACTIVE", > > "version": 0 > > }, > > "typeName": "repository", > > "values": { > > "qualifiedName": "repository01" > > }, > > "traitNames": [], > > "traits": {} > > } > > }, > > "traitNames": [], > > "traits": {} > > } > > ] > > }, > > "version": { > > "version": "1.0.0" > > } > > } > > > > Hope this helps. > > > > Madhan > > > > > > > > > > *From: *Jo MailingList <[email protected]> > *Reply-To: *"[email protected]" <[email protected]> > *Date: *Tuesday, January 2, 2018 at 9:54 AM > *To: *"[email protected]" <[email protected]> > *Subject: *Relating to an entity using uniqueAttributes > > > > Hello everyone, > > > > I am trying to create a database that in my type model has a reference to > a repository. I want to create it by sending a message to the ATLAS_HOOK > topic to the Kafka broker as follows: > > > > { > > "version": { > > "version": "1.0.0" > > }, > > "message": { > > "entities": [{ > > "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$_ > Reference", > > "id": { > > "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$_Id", > > "id": "-14568879465268", > > "version": 0, > > "typeName": "database", > > "state": "ACTIVE" > > }, > > "typeName": "database", > > "values": { > > "qualifiedName": "Testdb5", > > *"repository": {* > > *"jsonClass":"org.apache.atlas.typesystem.json.InstanceSerialization$_Id"* > > *"version": 0,* > > *"typeName": "repository",* > > *"uniqueAttributes": {* > > *"qualifiedName": "repository01"* > > *},* > > *"state": "ACTIVE"* > > *},* > > "owner": "owner", > > "description": "Test db7", > > "name": "Testdb7", > > "dbName": "Test7", > > "origin_app": "origin", > > "origin_username": "externalusername" > > }, > > "traitNames": [], > > "traits": {} > > }], > > "type": "ENTITY_CREATE", > > "user": "user" > > } > > } > > > > The database type expects a repository attribute of the type repository as > a reference. It works when I give the guid of the reference directly but > when trying my example it fails and it seems to me that it does not process > the information I provide as uniqueAttributes. What I see in the > application.log is the following stacktrace: > > > > *org.apache.atlas.exception.AtlasBaseException: ObjectId is not valid > AtlasObjectId{guid='null', typeName='repository', uniqueAttributes={}}* > > * at > org.apache.atlas.repository.store.graph.v1.AtlasEntityGraphDiscoveryV1.visitReference(AtlasEntityGraphDiscoveryV1.java:186)* > > * at > org.apache.atlas.repository.store.graph.v1.AtlasEntityGraphDiscoveryV1.visitAttribute(AtlasEntityGraphDiscoveryV1.java:234)* > > * at > org.apache.atlas.repository.store.graph.v1.AtlasEntityGraphDiscoveryV1.visitEntity(AtlasEntityGraphDiscoveryV1.java:327)* > > * at > org.apache.atlas.repository.store.graph.v1.AtlasEntityGraphDiscoveryV1.walkEntityGraph(AtlasEntityGraphDiscoveryV1.java:354)* > > * at > org.apache.atlas.repository.store.graph.v1.AtlasEntityGraphDiscoveryV1.discover(AtlasEntityGraphDiscoveryV1.java:142)* > > * at > org.apache.atlas.repository.store.graph.v1.AtlasEntityGraphDiscoveryV1.discoverEntities(AtlasEntityGraphDiscoveryV1.java:69)* > > * at > org.apache.atlas.repository.store.graph.v1.AtlasEntityStoreV1.preCreateOrUpdate(AtlasEntityStoreV1.java:523)* > > * at > org.apache.atlas.repository.store.graph.v1.AtlasEntityStoreV1.createOrUpdate(AtlasEntityStoreV1.java:174)* > > * at > org.apache.atlas.repository.store.graph.v1.AtlasEntityStoreV1.createOrUpdate(AtlasEntityStoreV1.java:193)* > > * at > org.apache.atlas.repository.store.graph.v1.AtlasEntityStoreV1$$FastClassBySpringCGLIB$$80c00649.invoke(<generated>)* > > > > This message makes me suspicious that Atlas is not processing my input > message correctly and not reading my uniqueAttributes information. > > > > Does someone have a hint of what I am doing wrong or if this is a currrent > issue inside Atlas or it is not a supported feature right now? > > > > Thank you very much, > > > > Best regards, > > > > Joan > > > > >
