Skip to main content
1-Visitor
August 28, 2018
Solved

How to access Thingworx EntityUtilities methods

  • August 28, 2018
  • 1 reply
  • 1811 views

Hello,

I have a requirement, to check if a particular entity (input - name, type) exists in Thingworx or not. For that, I came across 'EvaluateVisibilityPermissions'

var params = {
	 name: EntityName /* STRING */,
	 type: "MediaEntity" /* STRING */
 };
 // result: BOOLEAN
 var isExist = Resources["SecurityServices"].EvaluateVisibilityPermission(params);

But this method comes with a limitation that, if the permission is not set to the user, this service returns false.

What I would like to have is check if the entity is present or not, regardless of visibility permissions.

For that I came across a resource https://support.ptc.com/cs/help/thingworx_hc/thingworx_7.0_hc/index.jspx?id=ID103384447&action=show 'Entity Utilities'.

This class (EntityUtilities) has a method, "findEntityDirect" which can solve my purpose, but I am not able to understand how to use this method in my custom Thingworx services. If I understand correctly it is similar to "EntityServices" (http://support.ptc.com/cs/help/thingworx_hc/thingworx_6.0_hc/index.jspx?id=ID1410648636&action=show). I am able to see 'EntityServices' while creating my custom service in snippets, but I cannot find 'EntityUtilities'. Refer attached image.

EntityServices.PNG

Please let me know how to get EntityUtilities class, so that I am able to use 'findEntityDirect' method.

 

Thanks in advance

Aditya Mittal

Best answer by CarlesColl

This is my code to get a reference to any kind of entity:

function getEntity(myEntityName) {
 
 var collectionName = 'Things';
 var entityType ='Thing';
 var isThing = true;
 var isThingTemplate = false;
 var isThingShape = false;
 var isDataShape = false;
	var isModelTag = false;
	var isNetwork = false;
	var isDataTag = false;
	var isOrganization = false;
 
 var entity = Things[myEntityName];
 if (entity==null) {
 isThing = false;
 entity = ThingTemplates[myEntityName];
 isThingTemplate=true;
 collectionName = 'ThingTemplates';
 entityType = 'ThingTemplate';
 }
 if (entity==null) {
 isThingTemplate=false;
 entity = ThingShapes[myEntityName];
 isThingShape = true;
 collectionName = 'ThingShapes';
 entityType = 'ThingShape';
 }
 if (entity==null) {
 isThingShape=false;
 entity = DataShapes[myEntityName];
 isDataShape = true;
 collectionName = 'DataShapes';
 entityType = 'DataShape';
 }
 if (entity==null) {
 isDataShape=false;
 entity = ModelTags[myEntityName];
 isModelTag = true;
 collectionName = 'ModelTags';
 entityType = 'ModelTagVocabulary';
 }
 if (entity==null) {
 isModelTag=false;
 entity = Networks[myEntityName];
 isNetwork = true;
 collectionName = 'Networks';
 entityType = 'Network';
 }
 
 if (entity==null) {
 isNetwork=false;
 entity = DataTags[myEntityName];
 isDataTag = true;
 collectionName = 'DataTags';
 entityType = 'DataTagVocabulary';
 }
 
 if (entity==null) {
 isDataTags=false;
 entity = Organizations[myEntityName];
 isOrganization = true;
 collectionName = 'Organizations';
 entityType = 'Organitzation';
 }
 
 return {
		name: myEntityName,
 entity: entity,
 isThingShape: isThingShape,
 isThing: isThing,
 isThingTemplate: isThingTemplate,
 isDataShape: isDataShape,
		isModelTag: isModelTag,
		isNetwork: isNetwork,
		isDataTag: isDataTag,
		isOrganization: isOrganization,
 collectionName: collectionName,
 type: entityType
 };
 }

with it, you can easily can do the following check:

var entityExists = (getEntity(theEntityName).entity!=null);

 

 

 

1 reply

1-Visitor
August 28, 2018

This is my code to get a reference to any kind of entity:

function getEntity(myEntityName) {
 
 var collectionName = 'Things';
 var entityType ='Thing';
 var isThing = true;
 var isThingTemplate = false;
 var isThingShape = false;
 var isDataShape = false;
	var isModelTag = false;
	var isNetwork = false;
	var isDataTag = false;
	var isOrganization = false;
 
 var entity = Things[myEntityName];
 if (entity==null) {
 isThing = false;
 entity = ThingTemplates[myEntityName];
 isThingTemplate=true;
 collectionName = 'ThingTemplates';
 entityType = 'ThingTemplate';
 }
 if (entity==null) {
 isThingTemplate=false;
 entity = ThingShapes[myEntityName];
 isThingShape = true;
 collectionName = 'ThingShapes';
 entityType = 'ThingShape';
 }
 if (entity==null) {
 isThingShape=false;
 entity = DataShapes[myEntityName];
 isDataShape = true;
 collectionName = 'DataShapes';
 entityType = 'DataShape';
 }
 if (entity==null) {
 isDataShape=false;
 entity = ModelTags[myEntityName];
 isModelTag = true;
 collectionName = 'ModelTags';
 entityType = 'ModelTagVocabulary';
 }
 if (entity==null) {
 isModelTag=false;
 entity = Networks[myEntityName];
 isNetwork = true;
 collectionName = 'Networks';
 entityType = 'Network';
 }
 
 if (entity==null) {
 isNetwork=false;
 entity = DataTags[myEntityName];
 isDataTag = true;
 collectionName = 'DataTags';
 entityType = 'DataTagVocabulary';
 }
 
 if (entity==null) {
 isDataTags=false;
 entity = Organizations[myEntityName];
 isOrganization = true;
 collectionName = 'Organizations';
 entityType = 'Organitzation';
 }
 
 return {
		name: myEntityName,
 entity: entity,
 isThingShape: isThingShape,
 isThing: isThing,
 isThingTemplate: isThingTemplate,
 isDataShape: isDataShape,
		isModelTag: isModelTag,
		isNetwork: isNetwork,
		isDataTag: isDataTag,
		isOrganization: isOrganization,
 collectionName: collectionName,
 type: entityType
 };
 }

with it, you can easily can do the following check:

var entityExists = (getEntity(theEntityName).entity!=null);