Create list of all public components of producers

Create list of all public components of producers

  

Dear community,

Probably this is already discussed in some previous topic. However, I could not find it.

In our development team we sometimes do not notice that some functionality is already implemented. An overview of all public components by producer-espaces would be helpful to avoid reinventing the wheel. Service studio only displays such lists for a single espace, not for the whole environment (see screenshot below).

I thought maybe there is a way to create a list of all public components in a producing espace within the consumer espace. Then we could make an espace which is consuming all components by all other espaces and export the list of components to some excel-sheet or display it in a web screen. Do you have an idea how to create such an overview?

Thanks in advance for your reply!


)Hi,

I understand your request and the helpfulness of this list. I don't know if there is something like this already implemented but there are some Forge components that can probably help you to have more insight into your dependencies.

Outdoc (https://www.outsystems.com/forge/component/159/outdoc/)
Will give you a documentation of each module and probably can give you a list of all public modules

Discovery (https://www.outsystems.com/forge/component/409/discovery/)
Will give you an overview of your architecture. And shows which elements are already exposed and which module consumes them.

Probably if you look through the code of those applications you can find some action that can generate such a list for you. Hope this helps!

Kind regards,
Martijn Habraken

Isn't it somewhere in the meta model? I would expect that, given that they are public.

Hi do you have access to the Database?

Are you on the cloud or using an installation on-premises?


If you have access to the database, you can use the following Query:

SELECT  a.kind, a.NAME AS Element, a.producer_name,EConsumerSpace.NAME AS Consumer_Name, a.producer_kind
  FROM ossys_espace_reference a
  inner join ossys_espace_version  EVersion
  on (a.published_prod_version_id=EVersion.Id)
  inner join ossys_espace  ESpace
  on (EVersion.Espace_id=ESpace.Id)
  inner join ossys_espace_version  EConsumerVersion
  on (a.consumer_version_id=EConsumerVersion.Id)
    inner join ossys_espace  EConsumerSpace
  on (EConsumerVersion.Espace_id=EConsumerSpace.Id)
 -- where a.kind='Entity'
 -- and
--(
--a.name = 'POLICY_CLIENT_TYPE'
--  )
  and EConsumerSpace.Version_Id=EConsumerVersion.Id
  and ESpace.Is_Active=1
  and EConsumerSpace.Is_Active=1
  AND EConsumerSpace.IS_SYSTEM=0
  AND ESpace.IS_SYSTEM=0
  ORDER BY 1,2,3,4
  ;


It retrieves each consumer of each public element.

Hope it helps you!


Kilian Hekhuis wrote:

Isn't it somewhere in the meta model? I would expect that, given that they are public.

Which meta model do you mean? How could I access such meta models?


Martijn Habraken wrote:

(...)

Outdoc (https://www.outsystems.com/forge/component/159/outdoc/)
Will give you a documentation of each module and probably can give you a list of all public modules

Discovery (https://www.outsystems.com/forge/component/409/discovery/)
Will give you an overview of your architecture. And shows which elements are already exposed and which module consumes them.

(...)

I could not load Outdoc from the forge to our Javastack environment.

My colleagues said that discovery only works sometimes and it needs much time to do its job. So loading its full functionality will not serve us for a quick overview I guess.

Daniel Martins wrote:

Hi do you have access to the Database?

Are you on the cloud or using an installation on-premises?

On premises.


If you have access to the database, you can use the following Query (...)

We are using a separate Oracle database for all the data as far as I know. I do not know where information about espaces is stored, maybe also in that oracle database? I need to ask my colleagues tomorrow. But: Thanks for your divers answers so far!


DeHollaender wrote:

Which meta model do you mean? How could I access such meta models?

I'm referring to the data that can be found in a number of tables referenced from System, like Entity, Entity_Attr, Espace, Espace_Reference, etc. Perhaps not everything is exposed, in which case you can directly query the database like Daniel mentioned above.

Actually, if you poke into Discovery you can see a lot how certain stuff is done.

(or Clean Architecture Tool for that matter)


On that note, your use-case will not be solved by the way. Yes you might find actions that already does a thing. but what if the thing is not sufficient, will you create a new action or alter the existing one.

not to mention, if they happen to have named the action differently with what you would expect. This way you still end up with 2 actions doing the same


those are all decisions which could make life harder or easier.