External Entities included in AO count?

External Entities included in AO count?

  

Hi,


If I'm using an external database, let say a database hosted in AWS, Google cloud platform, or Azure, will that be included in Application Object count?



Thanks,

Ruby

Mental Image wrote:

yes,

read this:

https://success.outsystems.com/Support/Enterprise_Customers/Licensing/Overview/Application_Object_count

regards,

MI

Would there be away that those External database won't be counted as a Application Object, let's say those external entities won't be imported in the app, but will be using a transact (TSQL) query to retrieve or do a data manipulation.



Thanks,

Ruby


Probably possible but still will count as an exposed REST API right? (which will be counted as AO)

Or maybe you could do 1 REST API which dynamic enough to pass and receive a whole SQL string so you can use the same API over and over again...

Eric Halim wrote:

Probably possible but still will count as an exposed REST API right? (which will be counted as AO)

Or maybe you could do 1 REST API which dynamic enough to pass and receive a whole SQL string so you can use the same API over and over again...

Yeah, that's my thought on REST API, that will be counted as AO. I'm just a bit hesitant passing a dynamic query.. won't it cause some security risk for that approach?


Solution

Hello Ruby,

It is possible to create an integration (using the Integration Studio IDE) with Actions that do all the querying and translate the result set into a list of Structures also defined in the integration. That way you are not using the platform for the integration with the external database (you are using .NET/Java code that you will have to maintain yourself), and as such it will not count for the AO limits:

Open Integration Studio:

  • Create Structure(s) that represents the data you want to return from the external database.
  • Create a new Action that returns a List of that Structure
  • Implement the newly created Action in .NET and/or Java that performs the query (internal implementation done outside the scope of the OutSystems Platform, and hence doesn't take advantage of any of it)
  • Reference and call the Action defined in the extension from your application modules without spending any AOs. 
Solution

Jorge Martins wrote:

Hello Ruby,

It is possible to create an integration (using the Integration Studio IDE) with Actions that do all the querying and translate the result set into a list of Structures also defined in the integration. That way you are not using the platform for the integration with the external database (you are using .NET/Java code that you will have to maintain yourself), and as such it will not count for the AO limits:

Open Integration Studio:

  • Create Structure(s) that represents the data you want to return from the external database.
  • Create a new Action that returns a List of that Structure
  • Implement the newly created Action in .NET and/or Java that performs the query (internal implementation done outside the scope of the OutSystems Platform, and hence doesn't take advantage of any of it)
  • Reference and call the Action defined in the extension from your application modules without spending any AOs. 

I think I will explore this approach. Thanks Jorge.


I suspect that if you use something like the AdvanceQuery extension to run dynamic TSQL against an external database to return a generic list and don't have specific entities declared in extensions then that may not count each table as an object. Not tested it but from what I can tell if you don't define an entity or REST point then it shouldn't count as an object

Hi John,

Let me clarify what counts for your AO limits (check this article for further details and examples):

  • Web Screens, Email Screens, SMS Screens, Mobile Screens;
  • Database Entities, Static Entities, External Entities (defined via an extension) and Local Storage Entities (on your mobile device) and;
  • Web Service (REST/SOAP) methods.

Jorge Martins wrote:

Hi John,

Let me clarify what counts for your AO limits (check this article for further details and examples):

  • Web Screens, Email Screens, SMS Screens, Mobile Screens;
  • Database Entities, Static Entities, External Entities (defined via an extension) and Local Storage Entities (on your mobile device) and;
  • Web Service (REST/SOAP) methods.


Yep realize that however accessing via something like the AdvanceQuery extension you shouldn't have to actually define an external entity for each external table or query, rather you should be able to just use direct SQL and get back an object which is a list of records. I haven't tested to see if AdvanceQuery can connect to an external database but concept works well with internal ones. But a modification of AdvanceQuery wouldn't be hard to make connect to an external database.

Ok I can confirm that using the forge component AdvanceQuery does let you connect to an external database and retrieve data using direct SQL or stored procedures without having to define an external entity.

But be warned, there will be restrictions. Mainly you won't get the benefit of much of the Outsystems standard features on entities such as paging in grids, some of the optimisation features etc. So it's good where you need to access a lot of external tables or create dynamic queries but you will need to do more optimisation and keep track of performance yourself.

Thanks John for the sharing...for getting back and confirm