249
Views
11
Comments
Solved
Use case on retrieve application object numbers through APIs in onprem environment
Question

Hi Experts,

We have an Version 11 on prem environment. We are exploring a use scenario to retrieve the application object(AO) numbers to build a management dashboard. This needs to retrieve module break down AO numbers in different environments(DEV, UAT, PRod). Service console has the dashboard alike, but we need the data behind the scene. https://<env>/ServiceCenter/License_Usage.aspx


Does OS provide this API capability? If yes,where is it? If not, what's the workaround?


Thanks,

Jimmy

 

2023-04-06 11-24-23
Paulo Zacarias
Solution

Hi Jimmy, 

Have you checked this component? Perhaps this is what you are looking for:

https://www.outsystems.com/forge/component-overview/4242/application-objects-count

Regards, 

Paulo Z

UserImage.jpg
Junming Wen

Hi Paulo, This app is not working. I cannot install it on my studio. It prompts download failure.

2023-04-06 11-24-23
Paulo Zacarias

Hi, it requires the OutDoc application to be installed too. 

I was able to install the .oap package directly in the service studio after installing the OutDoc.

Here's the .oap


Regards, 

Paulo Z

Application.Objects.Count-2.0.6_O11.oap
UserImage.jpg
Junming Wen

Hi Paulo, Thanks for the attachment. it's working. Let me check the capability.

Cheers, Jimmy

2019-03-18 10-26-38
Jeroen Vormer
Solution

Hi @Jimmy Wen,

you can use this for example to get the espaces for an application or vice versa:

select * from {App_Definition_Module} 

inner join {Module} on {Module}.[Id] = {App_Definition_Module}.[Module_Id]

inner join {Espace} on {Espace}.[Id] = {Module}.[Espace_Id]

Obviously these entities can be found in 'system'.

So your final answer would be:

select {Application}.[Name], {Espace}.[Name], {Report_Su}.[OMLComplexity] from {App_Definition_Module} 

inner join {Module} on {Module}.[Id] = {App_Definition_Module}.[Module_Id]

inner join {Espace} on {Espace}.[Id] = {Module}.[Espace_Id]

inner join {Report_Su} on {Report_Su}.[EspaceId] = {Espace}.[Id] 

inner join {Application} on {Application}.[Id] = {App_Definition_Module}.[Application_Id] where {Application}.[Name] like '%Foo%'


Best regards,
Jeroen Vormer

UserImage.jpg
Junming Wen

Hi Jeroen,

Thanks for your reply. I will try later the day.

Cheers, Jimmy

2023-04-06 11-24-23
Paulo Zacarias
Solution

Hi Jimmy, 

Have you checked this component? Perhaps this is what you are looking for:

https://www.outsystems.com/forge/component-overview/4242/application-objects-count

Regards, 

Paulo Z

UserImage.jpg
Junming Wen

Hi Paulo, This app is not working. I cannot install it on my studio. It prompts download failure.

2023-04-06 11-24-23
Paulo Zacarias

Hi, it requires the OutDoc application to be installed too. 

I was able to install the .oap package directly in the service studio after installing the OutDoc.

Here's the .oap


Regards, 

Paulo Z

Application.Objects.Count-2.0.6_O11.oap
UserImage.jpg
Junming Wen

Hi Paulo, Thanks for the attachment. it's working. Let me check the capability.

Cheers, Jimmy

2018-10-29 08-31-03
João Marques
 
MVP

Hi Jimmy Wen,


As far as I know, you can get this information from the database from the OSSYS_REPORT_METRICS table. You'll get weekly or monthly reports with a lot of information, including the AO usage. The unit value represents the month or the week number, depending on the unit type:


You can have every environment exposing this data, so you can mesh the data of each environment.


Kind Regards,
João

UserImage.jpg
Junming Wen

Paulo and João, Thanks for all your replays. I will look into both.

@João Marques I also want to explore the application and module mapping. Use case is to build the AO consumption breakdown by applications. For example, application A has components XYZ. Modules X consumes 10 AOs, modules Y consumes 5 AOs and modules Z consumes 3 AOs. Then I can have an aggregation t to show application A consumes 18 AOs in total.

Do you know where to find the application module mapping in the database?

Cheers, Jimmy



2018-10-29 08-31-03
João Marques
 
MVP

Hi Jimmy,


I don't think you have the counts for each module.

There are the counts for every object (entity, screen, etc.) for every module / espace version on the OSSYS_ESPACE_OBJECT_COUNT. You'd have to join to the espace version, filter by published ones, and join with the espace table.


I believe there's a platform internal process / timer  that runs on the end of every week and month, and does the calculation and fills in the report table I shared before.

Being that said, I don't believe you have the AO count on that granularity level, but you have the count of every object and can calculate the AOs for every published module version.


Kind Regards,
João

2019-03-18 10-26-38
Jeroen Vormer

Hi Jimmy, 

you can use this SQL for example:

FROM ([OSDEV1].dbo.[OSSYS_ESPACE] [ENESPACE]

 LEFT JOIN [OSDEV1].dbo.[OSSYS_REPORT_SU] [ENREPORT_SU] ON ([ENESPACE].[ID] = [ENREPORT_SU].[ESPACEID])) 

WHERE ([ENESPACE].[IS_ACTIVE] = 1) and [ENREPORT_SU].[OMLCOMPLEXITY] >1
Which gives you the AO-count for each module....
Obviously you can use the espace entity and report_su entity from "System", to create your won aggregate.

Best regards,
Jeroen Vormer 

UserImage.jpg
Junming Wen

@Jeroen Vormer Do you know how  to retrieve the application to module mapping information in the database? I want to aggregate the AO info and group it by applications.

OSAppModule.png
2019-03-18 10-26-38
Jeroen Vormer
Solution

Hi @Jimmy Wen,

you can use this for example to get the espaces for an application or vice versa:

select * from {App_Definition_Module} 

inner join {Module} on {Module}.[Id] = {App_Definition_Module}.[Module_Id]

inner join {Espace} on {Espace}.[Id] = {Module}.[Espace_Id]

Obviously these entities can be found in 'system'.

So your final answer would be:

select {Application}.[Name], {Espace}.[Name], {Report_Su}.[OMLComplexity] from {App_Definition_Module} 

inner join {Module} on {Module}.[Id] = {App_Definition_Module}.[Module_Id]

inner join {Espace} on {Espace}.[Id] = {Module}.[Espace_Id]

inner join {Report_Su} on {Report_Su}.[EspaceId] = {Espace}.[Id] 

inner join {Application} on {Application}.[Id] = {App_Definition_Module}.[Application_Id] where {Application}.[Name] like '%Foo%'


Best regards,
Jeroen Vormer

UserImage.jpg
Junming Wen

Hi Jeroen,

Thanks for your reply. I will try later the day.

Cheers, Jimmy

Community GuidelinesBe kind and respectful, give credit to the original source of content, and search for duplicates before posting.